Documentation

Overview

    The unitchecker package defines the main function for an analysis driver that analyzes a single compilation unit during a build. It is invoked by a build system such as "go vet":

    $ go vet -vettool=$(which vet)
    

    It supports the following command-line protocol:

    -V=full         describe executable               (to the build tool)
    -flags          describe flags                    (to the build tool)
    foo.cfg         description of compilation unit (from the build tool)
    

    This package does not depend on go/packages. If you need a standalone tool, use multichecker, which supports this mode but can also load packages from source using go/packages.

    Index

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    func Main

    func Main(analyzers ...*analysis.Analyzer)

      Main is the main function of a vet-like analysis tool that must be invoked by a build system to analyze a single package.

      The protocol required by 'go vet -vettool=...' is that the tool must support:

      -flags          describe flags in JSON
      -V=full         describe executable for build caching
      foo.cfg         perform separate modular analyze on the single
                      unit described by a JSON config file foo.cfg.
      

      func Run

      func Run(configFile string, analyzers []*analysis.Analyzer)

        Run reads the *.cfg file, runs the analysis, and calls os.Exit with an appropriate error code. It assumes flags have already been set.

        Types

        type Config

        type Config struct {
        	ID                        string // e.g. "fmt [fmt.test]"
        	Compiler                  string
        	Dir                       string
        	ImportPath                string
        	GoFiles                   []string
        	NonGoFiles                []string
        	IgnoredFiles              []string
        	ImportMap                 map[string]string
        	PackageFile               map[string]string
        	Standard                  map[string]bool
        	PackageVetx               map[string]string
        	VetxOnly                  bool
        	VetxOutput                string
        	SucceedOnTypecheckFailure bool
        }

          A Config describes a compilation unit to be analyzed. It is provided to the tool in a JSON-encoded file whose name ends with ".cfg".