scopelint | scopelint checks for unpinned variables in go programs | Code Analyzer library
kandi X-RAY | scopelint Summary
kandi X-RAY | scopelint Summary
scopelint checks for unpinned variables in go programs.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- matchPackages returns the list of packages matching the given pattern .
- Visit stops the AST .
- range returns a map of keys
- matchPackagesInFS returns the import paths that match the given pattern .
- lintImportedPackage examines package s import .
- importPathsNoDotExpansion removes all import paths without dot expansion .
- readme prints the help message .
- main is the entry point for kingpin mage
- lintFiles examines the given files .
- ForeachOptionComment iterates over all the options in a comment . If walk function returns false .
scopelint Key Features
scopelint Examples and Code Snippets
Community Discussions
Trending Discussions on scopelint
QUESTION
func TestGetUID(t *testing.T) {
namespace := "lkfm"
expecteduid := "fake_uid"
var tests = []struct {
description string
expected string
namespace string
objs []runtime.Object
}{
{"PositiveScenario", expecteduid, namespace, []runtime.Object{simpleNamespace(namespace)}},
}
for _, x := range tests {
t.Run(x.description, func(t *testing.T) {
client := fake.NewSimpleClientset(x.objs...)
actual := getUID(client, x.namespace)
assert.Equal(t, x.expected, actual)
})
}
}
...ANSWER
Answered 2021-Jul-28 at 13:08x
is the loop variable which is reused in each iteration. And you create a function literal which you pass to t.Run()
. The compiler does not know (does not have guarantee) whether the created and passed function literal is not called after t.Run()
returns, in which case the function literal would refer to the loop variable which will be overwritten with the value of the next iteration. This is rarely–if ever–the intention. It's often the source of nasty bugs, even data race if the function literal is executed concurrently in another gorotuine.
So go vet
warns about such uses.
Often the solution is to pass the value of the loop variable to the function literal as an argument, or create a copy of the loop variable and refer to the copy. Since the signature of your function literal is fixed (you can't change it), create a copy of the variable, e.g.:
QUESTION
With golangci-lint
I know I can use skip-dirs
or skip-files
settings but these just stop reporting at the end and I think the tool still does the "work", quoting docs :
... which files to skip: they will be analyzed, but issues from them won't be reported. ...
Is there way, say with a variant of //nolint
to prevent some files getting analysed by golangci-lint
in the first place so we don't waste build-time resources - memory/cpu - on them them ?
I also tried lines at the top like // Code generated by XXX. DO NOT EDIT.
and these like //nolint
stop reporting but I think golangci-lint
is still doing the analysis - i.e. tool runs slow with high memory when big "ignored" files are present. From https://github.com/golangci/golangci-lint#nolint I can do
ANSWER
Answered 2020-Jan-22 at 19:36Using a new build tag to exclude files for golangci-lint
actually reduces its memory consumption (by preventing parsing of the files)
Example below is based on : https://android.googlesource.com/platform/external/syzkaller/+/01d1494471798d6b91af9813d1d6c3e13a55536c
Go files which will now be "efficiently" skipped
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install scopelint
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page