-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Description
The following functions;
func (s *Service) ListLoadBalancers3(ctx context.Context) ([]loadbalancers.LoadBalancer, error) {
return util.WithSpan(ctx, s.loadBalancerClient.TracerName, "ListLoadBalancers",
func(ctx context.Context, span trace.Span) ([]loadbalancers.LoadBalancer, error) {
return cloudUtil.GetItems(ctx, s.loadBalancerClient.ServiceClient,
loadbalancers.ListOptsBuilder(
loadbalancers.ListOpts{},
),
loadbalancers.List,
loadbalancers.ExtractLoadBalancers,
)
},
)
}
func (s *Service) ListLoadBalancers4(ctx context.Context) ([]loadbalancers.LoadBalancer, error) {
return cloudUtil.GetItems(ctx, s.loadBalancerClient.ServiceClient,
loadbalancers.ListOptsBuilder(
loadbalancers.ListOpts{},
),
loadbalancers.List,
loadbalancers.ExtractLoadBalancers,
)
}
have different linting errors, the upper one only reports on util.withSpan
and not on cloudUtil.GetItems
while the lower one correctly identifies cloudUtil.GetItems
.
If I ignore util.withSpan
the error vanishes, but there is still no report on cloudUtil.getItems
.
If I do the following;
func (s *Service) ListLoadBalancers2(ctx context.Context) ([]loadbalancers.LoadBalancer, error) {
return util.WithSpan(ctx, s.loadBalancerClient.TracerName, "ListLoadBalancers",
func(ctx context.Context, span trace.Span) ([]loadbalancers.LoadBalancer, error) {
loadBalancers, err := cloudUtil.GetItems(ctx, s.loadBalancerClient.ServiceClient,
loadbalancers.ListOptsBuilder(
loadbalancers.ListOpts{},
),
loadbalancers.List,
loadbalancers.ExtractLoadBalancers,
)
if err != nil {
return nil, err
}
return loadBalancers, nil
},
)
}
or
func (s *Service) ListLoadBalancers2(ctx context.Context) ([]loadbalancers.LoadBalancer, error) {
return util.WithSpan(ctx, s.loadBalancerClient.TracerName, "ListLoadBalancers",
func(ctx context.Context, span trace.Span) ([]loadbalancers.LoadBalancer, error) {
loadBalancers, err := cloudUtil.GetItems(ctx, s.loadBalancerClient.ServiceClient,
loadbalancers.ListOptsBuilder(
loadbalancers.ListOpts{},
),
loadbalancers.List,
loadbalancers.ExtractLoadBalancers,
)
return loadBalancers, err
},
)
}
the linter correctly identifies the return nil, err
via cloudUtil.GetItems
.
So seemingly "direct returns" or whatever this is called are not being detected if it is inside an (ignored) wrapper function.
As nearly all my functions use wrapper functions, for tracing, this is quite the problem.
Is there a setting I need to set or is this a bug?
Metadata
Metadata
Assignees
Labels
No labels