 bf27481efd
			
		
	
	
		bf27481efd
		
			
		
	
	
	
	
		
			
			full diff: https://github.com/dominikh/go-tools/compare/2019.2.3...2020.1.3 Also updates tests to accomodate updated rules: --- FAIL: TestSourcesFromTestdataWithIssuesDir/staticcheck.go (0.43s) linters_test.go:137: [run --disable-all --print-issued-lines=false --print-linter-name=false --out-format=line-number --max-same-issues=10 -Estaticcheck --no-config testdata/staticcheck.go] linters_test.go:33: Error Trace: linters_test.go:33 linters_test.go:138 linters_test.go:53 Error: Received unexpected error: staticcheck.go:11: no match for `self-assignment of x to x` vs ["SA4006: this value of `x` is never used"] in: staticcheck.go:11:2: SA4006: this value of `x` is never used unmatched errors staticcheck.go:11:2: SA4006: this value of `x` is never used Test: TestSourcesFromTestdataWithIssuesDir/staticcheck.go Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
		
			
				
	
	
		
			51 lines
		
	
	
		
			802 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			802 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // +build gofuzz
 | |
| 
 | |
| package pattern
 | |
| 
 | |
| import (
 | |
| 	"go/ast"
 | |
| 	goparser "go/parser"
 | |
| 	"go/token"
 | |
| 	"os"
 | |
| 	"path/filepath"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| var files []*ast.File
 | |
| 
 | |
| func init() {
 | |
| 	fset := token.NewFileSet()
 | |
| 	filepath.Walk("/usr/lib/go/src", func(path string, info os.FileInfo, err error) error {
 | |
| 		if err != nil {
 | |
| 			// XXX error handling
 | |
| 			panic(err)
 | |
| 		}
 | |
| 		if !strings.HasSuffix(path, ".go") {
 | |
| 			return nil
 | |
| 		}
 | |
| 		f, err := goparser.ParseFile(fset, path, nil, 0)
 | |
| 		if err != nil {
 | |
| 			return nil
 | |
| 		}
 | |
| 		files = append(files, f)
 | |
| 		return nil
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func Fuzz(data []byte) int {
 | |
| 	p := &Parser{}
 | |
| 	pat, err := p.Parse(string(data))
 | |
| 	if err != nil {
 | |
| 		if strings.Contains(err.Error(), "internal error") {
 | |
| 			panic(err)
 | |
| 		}
 | |
| 		return 0
 | |
| 	}
 | |
| 	_ = pat.Root.String()
 | |
| 
 | |
| 	for _, f := range files {
 | |
| 		Match(pat.Root, f)
 | |
| 	}
 | |
| 	return 1
 | |
| }
 |