Merge pull request #48 from srenatus/sr/auto-detect-more-generated-code
change isGenerated heuristic to match more generated files
This commit is contained in:
commit
9c048da092
@ -48,20 +48,25 @@ func (p *Nolint) Process(issues []result.Issue) ([]result.Issue, error) {
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
genHdr = []byte("// Code generated")
|
genHdr = []byte("// Code generated")
|
||||||
genFtr = []byte(" DO NOT EDIT.")
|
genFtr = []byte("DO NOT EDIT")
|
||||||
)
|
)
|
||||||
|
|
||||||
// isGenerated reports whether the source file is generated code
|
// isGenerated reports whether the source file is generated code.
|
||||||
// according the rules from https://golang.org/s/generatedcode.
|
// Using a bit laxer rules than https://golang.org/s/generatedcode to
|
||||||
|
// match more generated code.
|
||||||
func isGenerated(src []byte) bool {
|
func isGenerated(src []byte) bool {
|
||||||
sc := bufio.NewScanner(bytes.NewReader(src))
|
sc := bufio.NewScanner(bytes.NewReader(src))
|
||||||
|
var hdr, ftr bool
|
||||||
for sc.Scan() {
|
for sc.Scan() {
|
||||||
b := sc.Bytes()
|
b := sc.Bytes()
|
||||||
if bytes.HasPrefix(b, genHdr) && bytes.HasSuffix(b, genFtr) && len(b) >= len(genHdr)+len(genFtr) {
|
if bytes.HasPrefix(b, genHdr) {
|
||||||
return true
|
hdr = true
|
||||||
|
}
|
||||||
|
if bytes.Contains(b, genFtr) {
|
||||||
|
ftr = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
return hdr && ftr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Nolint) getOrCreateFileData(i *result.Issue) (*fileData, error) {
|
func (p *Nolint) getOrCreateFileData(i *result.Issue) (*fileData, error) {
|
||||||
|
@ -37,13 +37,22 @@ func TestNolint(t *testing.T) {
|
|||||||
processAssertSame(t, p, newNolintFileIssue(1, "golint")) // no directive
|
processAssertSame(t, p, newNolintFileIssue(1, "golint")) // no directive
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNoIssuesInAutogeneratedFile(t *testing.T) {
|
func TestNoIssuesInAutogeneratedFiles(t *testing.T) {
|
||||||
|
files := []string{
|
||||||
|
"nolint_autogenerated.go",
|
||||||
|
"nolint_autogenerated_alt_hdr.go",
|
||||||
|
"nolint_autogenerated_alt_hdr2.go",
|
||||||
|
}
|
||||||
|
for _, file := range files {
|
||||||
|
t.Run(file, func(t *testing.T) {
|
||||||
i := result.Issue{
|
i := result.Issue{
|
||||||
Pos: token.Position{
|
Pos: token.Position{
|
||||||
Filename: filepath.Join("testdata", "nolint_autogenerated.go"),
|
Filename: filepath.Join("testdata", file),
|
||||||
Line: 4,
|
Line: 4,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
p := NewNolint(token.NewFileSet())
|
p := NewNolint(token.NewFileSet())
|
||||||
processAssertEmpty(t, p, i)
|
processAssertEmpty(t, p, i)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
6
pkg/result/processors/testdata/nolint_autogenerated_alt_hdr.go
vendored
Normal file
6
pkg/result/processors/testdata/nolint_autogenerated_alt_hdr.go
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// Code generated by protoc-gen-foo
|
||||||
|
// source: bar.proto
|
||||||
|
// DO NOT EDIT!!!
|
||||||
|
package testdata
|
||||||
|
|
||||||
|
var v int
|
8
pkg/result/processors/testdata/nolint_autogenerated_alt_hdr2.go
vendored
Normal file
8
pkg/result/processors/testdata/nolint_autogenerated_alt_hdr2.go
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// Code generated by go-bindata.
|
||||||
|
// sources:
|
||||||
|
// bar.baz
|
||||||
|
// x/y.z
|
||||||
|
// DO NOT EDIT!
|
||||||
|
package testdata
|
||||||
|
|
||||||
|
var v int
|
Loading…
x
Reference in New Issue
Block a user