...

Package unitchecker

import "cmd/vendor/golang.org/x/tools/go/analysis/unitchecker"
Overview
Index

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.

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.

type Config

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".

type Config struct {
    ID                        string // e.g. "fmt [fmt.test]"
    Compiler                  string // gc or gccgo, provided to MakeImporter
    Dir                       string // (unused)
    ImportPath                string // package path
    GoVersion                 string // minimum required Go version, such as "go1.21.0"
    GoFiles                   []string
    NonGoFiles                []string
    IgnoredFiles              []string
    ImportMap                 map[string]string // maps import path to package path
    PackageFile               map[string]string // maps package path to file of type information
    Standard                  map[string]bool   // package belongs to standard library
    PackageVetx               map[string]string // maps package path to file of fact information
    VetxOnly                  bool              // run analysis only for facts, not diagnostics
    VetxOutput                string            // where to write file of fact information
    SucceedOnTypecheckFailure bool
}