1
2
3
4
5
6
7 package generated
8
9 import (
10 "go/ast"
11 "go/token"
12 "reflect"
13
14 "golang.org/x/tools/go/analysis"
15 )
16
17 var Analyzer = &analysis.Analyzer{
18 Name: "generated",
19 Doc: "detect which Go files are generated",
20 URL: "https://pkg.go.dev/golang.org/x/tools/internal/analysisinternal/generated",
21 ResultType: reflect.TypeFor[*Result](),
22 Run: func(pass *analysis.Pass) (any, error) {
23 set := make(map[*token.File]bool)
24 for _, file := range pass.Files {
25 if ast.IsGenerated(file) {
26 set[pass.Fset.File(file.FileStart)] = true
27 }
28 }
29 return &Result{fset: pass.Fset, generatedFiles: set}, nil
30 },
31 }
32
33 type Result struct {
34 fset *token.FileSet
35 generatedFiles map[*token.File]bool
36 }
37
38
39 func (r *Result) IsGenerated(pos token.Pos) bool {
40 return r.generatedFiles[r.fset.File(pos)]
41 }
42
View as plain text