GoPLS Viewer

Home|gopls/go/analysis/passes/inspect/inspect.go
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//    }
29package inspect
30
31import (
32    "reflect"
33
34    "golang.org/x/tools/go/analysis"
35    "golang.org/x/tools/go/ast/inspector"
36)
37
38var Analyzer = &analysis.Analyzer{
39    Name:             "inspect",
40    Doc:              "optimize AST traversal for later passes",
41    Run:              run,
42    RunDespiteErrorstrue,
43    ResultType:       reflect.TypeOf(new(inspector.Inspector)),
44}
45
46func run(pass *analysis.Pass) (interface{}, error) {
47    return inspector.New(pass.Files), nil
48}
49
MembersX
run.pass
reflect
analysis
inspector
run
Members
X