...

Source file src/golang.org/x/tools/go/analysis/passes/inspect/inspect.go

Documentation: golang.org/x/tools/go/analysis/passes/inspect

     1  // Copyright 2018 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // Package inspect defines an Analyzer that provides an AST inspector
     6  // (golang.org/x/tools/go/ast/inspector.Inspector) for the syntax trees
     7  // of a package. It is only a building block for other analyzers.
     8  //
     9  // Example of use in another analysis:
    10  //
    11  //	import (
    12  //		"golang.org/x/tools/go/analysis"
    13  //		"golang.org/x/tools/go/analysis/passes/inspect"
    14  //		"golang.org/x/tools/go/ast/inspector"
    15  //	)
    16  //
    17  //	var Analyzer = &analysis.Analyzer{
    18  //		...
    19  //		Requires:       []*analysis.Analyzer{inspect.Analyzer},
    20  //	}
    21  //
    22  //	func run(pass *analysis.Pass) (interface{}, error) {
    23  //		inspect := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector)
    24  //		inspect.Preorder(nil, func(n ast.Node) {
    25  //			...
    26  //		})
    27  //		return nil, nil
    28  //	}
    29  package inspect
    30  
    31  import (
    32  	"reflect"
    33  
    34  	"golang.org/x/tools/go/analysis"
    35  	"golang.org/x/tools/go/ast/inspector"
    36  )
    37  
    38  var Analyzer = &analysis.Analyzer{
    39  	Name:             "inspect",
    40  	Doc:              "optimize AST traversal for later passes",
    41  	Run:              run,
    42  	RunDespiteErrors: true,
    43  	ResultType:       reflect.TypeOf(new(inspector.Inspector)),
    44  }
    45  
    46  func run(pass *analysis.Pass) (interface{}, error) {
    47  	return inspector.New(pass.Files), nil
    48  }
    49  

View as plain text