Age | Commit message (Collapse) | Author |
|
|
|
Try to catch local closures not run directly from the `go` statement,
but assigned to a variable first.
|
|
|
|
Declarations can include multiple identifiers. Return all of these from
the function and rename it accordingly.
|
|
This doesn't pass yet.
|
|
|
|
|
|
Don't report captured function values:
$ go test
--- FAIL: Test (1.26s)
analysistest.go:459: ./testdata/function_argument.go:5:3:
unexpected diagnostic: captured reference callback in goroutine
closure
|
|
|
|
|
|
|
|
Report all variables declared in an outer scope.
This does match variables defined in the closure too. Will need to fix
that.
|
|
Follow `golang.org/x/tools/go/analysis/passes/testinggoroutine` to write
the test runner:
https://github.com/golang/tools/blob/1c9fe3f82c363b929ef7239ca0ad8a5dafbbcf05/go/analysis/passes/testinggoroutine/testinggoroutine_test.go
Add "want" comments to test code for validation.
|
|
Turns out this only gets declarations like:
var decl string
but not:
decl := "a"
Is there a way to get the above one too?
|
|
These should be reported as well, because they're shared references even
though they're passed as arguments.
This currently reports the variable name as "aStruct", will need to look
into how to correct that.
|
|
|
|
|
|
Need to refine our identifier filtering.
|
|
We want to ignore local variables.
|
|
Second usage of captured reference is reported as expected. That seems
correct for our needs.
|
|
Inspect function literals run by `go` statements, and find all variables
in those function literals.
|
|
Build a basic Go analyser that finds `go` statements.
Currently testing this with:
$ go run ./cmd/gocapturedrefrace ./testdata/
Using the following tutorials as a guide:
* https://arslan.io/2019/06/13/using-go-analysis-to-write-a-custom-linter/
* https://scribe.rip/codex/writing-custom-linter-in-go-54ef6f8080
|