analysisflags

Imports

Imports #

"crypto/sha256"
"encoding/gob"
"encoding/json"
"flag"
"fmt"
"go/token"
"io"
"log"
"os"
"strconv"
"strings"
"golang.org/x/tools/go/analysis"
"flag"
"fmt"
"log"
"os"
"sort"
"strings"
"golang.org/x/tools/go/analysis"
"fmt"
"net/url"
"golang.org/x/tools/go/analysis"

Constants & Variables

Context var #

flags common to all {single,multi,unit}checkers.

var Context = *ast.UnaryExpr

JSON var #

flags common to all {single,multi,unit}checkers.

var JSON = false

help const #

const help = `PROGNAME is a tool for static analysis of Go programs.

PROGNAME examines Go source code and reports suspicious constructs,
such as Printf calls whose arguments do not align with the format
string. It uses heuristics that do not guarantee all reports are
genuine problems, but it can find errors not caught by the compilers.
`

setFalse const #

const setFalse

setTrue const #

const setTrue

unset const #

const unset triState = iota

vetLegacyFlags var #

vetLegacyFlags maps flags used by legacy vet to their corresponding new names. The old names will continue to work.

var vetLegacyFlags = map[string]string{...}

Type Aliases

JSONTree type #

A JSONTree is a mapping from package ID to analysis name to result. Each result is either a jsonError or a list of JSONDiagnostic.

type JSONTree map[string]map[string]interface{}

triState type #

A triState is a boolean that knows whether it has been set to either true or false. It is used to identify whether a flag appears; the standard boolean flag cannot distinguish missing from unset. It also satisfies flag.Value.

type triState int

Structs

JSONDiagnostic struct #

A JSONDiagnostic describes the JSON schema of an analysis.Diagnostic. TODO(matloob): include End position if present.

type JSONDiagnostic struct {
Category string `json:"category,omitempty"`
Posn string `json:"posn"`
Message string `json:"message"`
SuggestedFixes []JSONSuggestedFix `json:"suggested_fixes,omitempty"`
Related []JSONRelatedInformation `json:"related,omitempty"`
}

JSONRelatedInformation struct #

A JSONRelated describes a secondary position and message related to a primary diagnostic. TODO(adonovan): include End position if present.

type JSONRelatedInformation struct {
Posn string `json:"posn"`
Message string `json:"message"`
}

JSONSuggestedFix struct #

A JSONSuggestedFix describes an edit that should be applied as a whole or not at all. It might contain multiple TextEdits/text_edits if the SuggestedFix consists of multiple non-contiguous edits.

type JSONSuggestedFix struct {
Message string `json:"message"`
Edits []JSONTextEdit `json:"edits"`
}

JSONTextEdit struct #

A TextEdit describes the replacement of a portion of a file. Start and End are zero-based half-open indices into the original byte sequence of the file, and New is the new text.

type JSONTextEdit struct {
Filename string `json:"filename"`
Start int `json:"start"`
End int `json:"end"`
New string `json:"new"`
}

versionFlag struct #

versionFlag minimally complies with the -V protocol required by "go vet".

type versionFlag struct {

}

Functions

Add method #

Add adds the result of analysis 'name' on package 'id'. The result is either a list of diagnostics or an error.

func (tree JSONTree) Add(fset *token.FileSet, id string, name string, diags []analysis.Diagnostic, err error)

Get method #

func (versionFlag) Get() interface{}

Get method #

triState implements flag.Value, flag.Getter, and flag.boolFlag. They work like boolean flags: we can say vet -printf as well as vet -printf=true

func (ts *triState) Get() interface{}

Help function #

Help implements the help subcommand for a multichecker or unitchecker style command. The optional args specify the analyzers to describe. Help calls log.Fatal if no such analyzer exists.

func Help(progname string, analyzers []*analysis.Analyzer, args []string)

IsBoolFlag method #

func (versionFlag) IsBoolFlag() bool

IsBoolFlag method #

func (ts triState) IsBoolFlag() bool

Parse function #

Parse creates a flag for each of the analyzer's flags, including (in multi mode) a flag named after the analyzer, parses the flags, then filters and returns the list of analyzers enabled by flags. The result is intended to be passed to unitchecker.Run or checker.Run. Use in unitchecker.Run will gob.Register all fact types for the returned graph of analyzers but of course not the ones only reachable from dropped analyzers. To avoid inconsistency about which gob types are registered from run to run, Parse itself gob.Registers all the facts only reachable from dropped analyzers. This is not a particularly elegant API, but this is an internal package.

func Parse(analyzers []*analysis.Analyzer, multi bool) []*analysis.Analyzer

Print method #

func (tree JSONTree) Print(out io.Writer) error

PrintPlain function #

PrintPlain prints a diagnostic in plain text form. If contextLines is nonnegative, it also prints the offending line plus this many lines of context.

func PrintPlain(out io.Writer, fset *token.FileSet, contextLines int, diag analysis.Diagnostic)

ResolveURL function #

ResolveURL resolves the URL field for a Diagnostic from an Analyzer and returns the URL. See Diagnostic.URL for details.

func ResolveURL(a *analysis.Analyzer, d analysis.Diagnostic) (string, error)

Set method #

func (versionFlag) Set(s string) error

Set method #

func (ts *triState) Set(value string) error

String method #

func (ts *triState) String() string

String method #

func (versionFlag) String() string

addVersionFlag function #

addVersionFlag registers a -V flag that, if set, prints the executable version and exits 0. If the -V flag already exists — for example, because it was already registered by a call to cmd/internal/objabi.AddVersionFlag — then addVersionFlag does nothing.

func addVersionFlag()

expand function #

func expand(analyzers []*analysis.Analyzer) map[*analysis.Analyzer]bool

isTrue method #

func (ts triState) isTrue() bool

printFlags function #

func printFlags()

triStateFlag function #

func triStateFlag(name string, value triState, usage string) *triState

Generated with Arrow