123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526 |
- package staticcheck
- import (
- "flag"
- "honnef.co/go/tools/facts"
- "honnef.co/go/tools/internal/passes/buildssa"
- "honnef.co/go/tools/lint/lintutil"
- "golang.org/x/tools/go/analysis"
- "golang.org/x/tools/go/analysis/passes/inspect"
- )
- func newFlagSet() flag.FlagSet {
- fs := flag.NewFlagSet("", flag.PanicOnError)
- fs.Var(lintutil.NewVersionFlag(), "go", "Target Go version")
- return *fs
- }
- var Analyzers = map[string]*analysis.Analyzer{
- "SA1000": {
- Name: "SA1000",
- Run: callChecker(checkRegexpRules),
- Doc: Docs["SA1000"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1001": {
- Name: "SA1001",
- Run: CheckTemplate,
- Doc: Docs["SA1001"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1002": {
- Name: "SA1002",
- Run: callChecker(checkTimeParseRules),
- Doc: Docs["SA1002"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1003": {
- Name: "SA1003",
- Run: callChecker(checkEncodingBinaryRules),
- Doc: Docs["SA1003"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1004": {
- Name: "SA1004",
- Run: CheckTimeSleepConstant,
- Doc: Docs["SA1004"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1005": {
- Name: "SA1005",
- Run: CheckExec,
- Doc: Docs["SA1005"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1006": {
- Name: "SA1006",
- Run: CheckUnsafePrintf,
- Doc: Docs["SA1006"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1007": {
- Name: "SA1007",
- Run: callChecker(checkURLsRules),
- Doc: Docs["SA1007"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1008": {
- Name: "SA1008",
- Run: CheckCanonicalHeaderKey,
- Doc: Docs["SA1008"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1010": {
- Name: "SA1010",
- Run: callChecker(checkRegexpFindAllRules),
- Doc: Docs["SA1010"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1011": {
- Name: "SA1011",
- Run: callChecker(checkUTF8CutsetRules),
- Doc: Docs["SA1011"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1012": {
- Name: "SA1012",
- Run: CheckNilContext,
- Doc: Docs["SA1012"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1013": {
- Name: "SA1013",
- Run: CheckSeeker,
- Doc: Docs["SA1013"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1014": {
- Name: "SA1014",
- Run: callChecker(checkUnmarshalPointerRules),
- Doc: Docs["SA1014"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1015": {
- Name: "SA1015",
- Run: CheckLeakyTimeTick,
- Doc: Docs["SA1015"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1016": {
- Name: "SA1016",
- Run: CheckUntrappableSignal,
- Doc: Docs["SA1016"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1017": {
- Name: "SA1017",
- Run: callChecker(checkUnbufferedSignalChanRules),
- Doc: Docs["SA1017"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1018": {
- Name: "SA1018",
- Run: callChecker(checkStringsReplaceZeroRules),
- Doc: Docs["SA1018"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1019": {
- Name: "SA1019",
- Run: CheckDeprecated,
- Doc: Docs["SA1019"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Deprecated},
- Flags: newFlagSet(),
- },
- "SA1020": {
- Name: "SA1020",
- Run: callChecker(checkListenAddressRules),
- Doc: Docs["SA1020"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1021": {
- Name: "SA1021",
- Run: callChecker(checkBytesEqualIPRules),
- Doc: Docs["SA1021"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1023": {
- Name: "SA1023",
- Run: CheckWriterBufferModified,
- Doc: Docs["SA1023"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1024": {
- Name: "SA1024",
- Run: callChecker(checkUniqueCutsetRules),
- Doc: Docs["SA1024"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1025": {
- Name: "SA1025",
- Run: CheckTimerResetReturnValue,
- Doc: Docs["SA1025"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA1026": {
- Name: "SA1026",
- Run: callChecker(checkUnsupportedMarshal),
- Doc: Docs["SA1026"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA1027": {
- Name: "SA1027",
- Run: callChecker(checkAtomicAlignment),
- Doc: Docs["SA1027"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA2000": {
- Name: "SA2000",
- Run: CheckWaitgroupAdd,
- Doc: Docs["SA2000"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA2001": {
- Name: "SA2001",
- Run: CheckEmptyCriticalSection,
- Doc: Docs["SA2001"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA2002": {
- Name: "SA2002",
- Run: CheckConcurrentTesting,
- Doc: Docs["SA2002"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA2003": {
- Name: "SA2003",
- Run: CheckDeferLock,
- Doc: Docs["SA2003"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA3000": {
- Name: "SA3000",
- Run: CheckTestMainExit,
- Doc: Docs["SA3000"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA3001": {
- Name: "SA3001",
- Run: CheckBenchmarkN,
- Doc: Docs["SA3001"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4000": {
- Name: "SA4000",
- Run: CheckLhsRhsIdentical,
- Doc: Docs["SA4000"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer, facts.TokenFile, facts.Generated},
- Flags: newFlagSet(),
- },
- "SA4001": {
- Name: "SA4001",
- Run: CheckIneffectiveCopy,
- Doc: Docs["SA4001"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4002": {
- Name: "SA4002",
- Run: CheckDiffSizeComparison,
- Doc: Docs["SA4002"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA4003": {
- Name: "SA4003",
- Run: CheckExtremeComparison,
- Doc: Docs["SA4003"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4004": {
- Name: "SA4004",
- Run: CheckIneffectiveLoop,
- Doc: Docs["SA4004"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4006": {
- Name: "SA4006",
- Run: CheckUnreadVariableValues,
- Doc: Docs["SA4006"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.Generated},
- Flags: newFlagSet(),
- },
- "SA4008": {
- Name: "SA4008",
- Run: CheckLoopCondition,
- Doc: Docs["SA4008"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4009": {
- Name: "SA4009",
- Run: CheckArgOverwritten,
- Doc: Docs["SA4009"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4010": {
- Name: "SA4010",
- Run: CheckIneffectiveAppend,
- Doc: Docs["SA4010"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4011": {
- Name: "SA4011",
- Run: CheckScopedBreak,
- Doc: Docs["SA4011"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4012": {
- Name: "SA4012",
- Run: CheckNaNComparison,
- Doc: Docs["SA4012"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4013": {
- Name: "SA4013",
- Run: CheckDoubleNegation,
- Doc: Docs["SA4013"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4014": {
- Name: "SA4014",
- Run: CheckRepeatedIfElse,
- Doc: Docs["SA4014"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4015": {
- Name: "SA4015",
- Run: callChecker(checkMathIntRules),
- Doc: Docs["SA4015"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA4016": {
- Name: "SA4016",
- Run: CheckSillyBitwiseOps,
- Doc: Docs["SA4016"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.TokenFile},
- Flags: newFlagSet(),
- },
- "SA4017": {
- Name: "SA4017",
- Run: CheckPureFunctions,
- Doc: Docs["SA4017"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.Purity},
- Flags: newFlagSet(),
- },
- "SA4018": {
- Name: "SA4018",
- Run: CheckSelfAssignment,
- Doc: Docs["SA4018"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile},
- Flags: newFlagSet(),
- },
- "SA4019": {
- Name: "SA4019",
- Run: CheckDuplicateBuildConstraints,
- Doc: Docs["SA4019"].String(),
- Requires: []*analysis.Analyzer{facts.Generated},
- Flags: newFlagSet(),
- },
- "SA4020": {
- Name: "SA4020",
- Run: CheckUnreachableTypeCases,
- Doc: Docs["SA4020"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA4021": {
- Name: "SA4021",
- Run: CheckSingleArgAppend,
- Doc: Docs["SA4021"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile},
- Flags: newFlagSet(),
- },
- "SA5000": {
- Name: "SA5000",
- Run: CheckNilMaps,
- Doc: Docs["SA5000"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA5001": {
- Name: "SA5001",
- Run: CheckEarlyDefer,
- Doc: Docs["SA5001"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA5002": {
- Name: "SA5002",
- Run: CheckInfiniteEmptyLoop,
- Doc: Docs["SA5002"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA5003": {
- Name: "SA5003",
- Run: CheckDeferInInfiniteLoop,
- Doc: Docs["SA5003"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA5004": {
- Name: "SA5004",
- Run: CheckLoopEmptyDefault,
- Doc: Docs["SA5004"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA5005": {
- Name: "SA5005",
- Run: CheckCyclicFinalizer,
- Doc: Docs["SA5005"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA5007": {
- Name: "SA5007",
- Run: CheckInfiniteRecursion,
- Doc: Docs["SA5007"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA5008": {
- Name: "SA5008",
- Run: CheckStructTags,
- Doc: Docs["SA5008"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA5009": {
- Name: "SA5009",
- Run: callChecker(checkPrintfRules),
- Doc: Docs["SA5009"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA6000": {
- Name: "SA6000",
- Run: callChecker(checkRegexpMatchLoopRules),
- Doc: Docs["SA6000"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA6001": {
- Name: "SA6001",
- Run: CheckMapBytesKey,
- Doc: Docs["SA6001"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA6002": {
- Name: "SA6002",
- Run: callChecker(checkSyncPoolValueRules),
- Doc: Docs["SA6002"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer},
- Flags: newFlagSet(),
- },
- "SA6003": {
- Name: "SA6003",
- Run: CheckRangeStringRunes,
- Doc: Docs["SA6003"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer},
- Flags: newFlagSet(),
- },
- "SA6005": {
- Name: "SA6005",
- Run: CheckToLowerToUpperComparison,
- Doc: Docs["SA6005"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA9001": {
- Name: "SA9001",
- Run: CheckDubiousDeferInChannelRangeLoop,
- Doc: Docs["SA9001"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA9002": {
- Name: "SA9002",
- Run: CheckNonOctalFileMode,
- Doc: Docs["SA9002"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- "SA9003": {
- Name: "SA9003",
- Run: CheckEmptyBranch,
- Doc: Docs["SA9003"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.TokenFile, facts.Generated},
- Flags: newFlagSet(),
- },
- "SA9004": {
- Name: "SA9004",
- Run: CheckMissingEnumTypesInDeclaration,
- Doc: Docs["SA9004"].String(),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Flags: newFlagSet(),
- },
- // Filtering generated code because it may include empty structs generated from data models.
- "SA9005": {
- Name: "SA9005",
- Run: callChecker(checkNoopMarshal),
- Doc: Docs["SA9005"].String(),
- Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer, facts.Generated, facts.TokenFile},
- Flags: newFlagSet(),
- },
- }
|