Documentation ¶
Overview ¶
Package staticcheck contains a linter for Go source code.
Index ¶
- Constants
- Variables
- func CanBinaryMarshal(pass *analysis.Pass, v Value) bool
- func CheckArgOverwritten(pass *analysis.Pass) (interface{}, error)
- func CheckBenchmarkN(pass *analysis.Pass) (interface{}, error)
- func CheckCanonicalHeaderKey(pass *analysis.Pass) (interface{}, error)
- func CheckConcurrentTesting(pass *analysis.Pass) (interface{}, error)
- func CheckCyclicFinalizer(pass *analysis.Pass) (interface{}, error)
- func CheckDeferInInfiniteLoop(pass *analysis.Pass) (interface{}, error)
- func CheckDeferLock(pass *analysis.Pass) (interface{}, error)
- func CheckDeprecated(pass *analysis.Pass) (interface{}, error)
- func CheckDiffSizeComparison(pass *analysis.Pass) (interface{}, error)
- func CheckDoubleNegation(pass *analysis.Pass) (interface{}, error)
- func CheckDubiousDeferInChannelRangeLoop(pass *analysis.Pass) (interface{}, error)
- func CheckDuplicateBuildConstraints(pass *analysis.Pass) (interface{}, error)
- func CheckEarlyDefer(pass *analysis.Pass) (interface{}, error)
- func CheckEmptyBranch(pass *analysis.Pass) (interface{}, error)
- func CheckEmptyCriticalSection(pass *analysis.Pass) (interface{}, error)
- func CheckExec(pass *analysis.Pass) (interface{}, error)
- func CheckExtremeComparison(pass *analysis.Pass) (interface{}, error)
- func CheckIneffectiveAppend(pass *analysis.Pass) (interface{}, error)
- func CheckIneffectiveCopy(pass *analysis.Pass) (interface{}, error)
- func CheckIneffectiveLoop(pass *analysis.Pass) (interface{}, error)
- func CheckInfiniteEmptyLoop(pass *analysis.Pass) (interface{}, error)
- func CheckInfiniteRecursion(pass *analysis.Pass) (interface{}, error)
- func CheckLeakyTimeTick(pass *analysis.Pass) (interface{}, error)
- func CheckLhsRhsIdentical(pass *analysis.Pass) (interface{}, error)
- func CheckLoopCondition(pass *analysis.Pass) (interface{}, error)
- func CheckLoopEmptyDefault(pass *analysis.Pass) (interface{}, error)
- func CheckMapBytesKey(pass *analysis.Pass) (interface{}, error)
- func CheckMissingEnumTypesInDeclaration(pass *analysis.Pass) (interface{}, error)
- func CheckNaNComparison(pass *analysis.Pass) (interface{}, error)
- func CheckNilContext(pass *analysis.Pass) (interface{}, error)
- func CheckNilMaps(pass *analysis.Pass) (interface{}, error)
- func CheckNonOctalFileMode(pass *analysis.Pass) (interface{}, error)
- func CheckPredeterminedBooleanExprs(pass *analysis.Pass) (interface{}, error)
- func CheckPureFunctions(pass *analysis.Pass) (interface{}, error)
- func CheckRangeStringRunes(pass *analysis.Pass) (interface{}, error)
- func CheckRepeatedIfElse(pass *analysis.Pass) (interface{}, error)
- func CheckScopedBreak(pass *analysis.Pass) (interface{}, error)
- func CheckSeeker(pass *analysis.Pass) (interface{}, error)
- func CheckSelfAssignment(pass *analysis.Pass) (interface{}, error)
- func CheckSillyBitwiseOps(pass *analysis.Pass) (interface{}, error)
- func CheckSillyRegexp(pass *analysis.Pass) (interface{}, error)
- func CheckSingleArgAppend(pass *analysis.Pass) (interface{}, error)
- func CheckStructTags(pass *analysis.Pass) (interface{}, error)
- func CheckTemplate(pass *analysis.Pass) (interface{}, error)
- func CheckTestMainExit(pass *analysis.Pass) (interface{}, error)
- func CheckTimeSleepConstant(pass *analysis.Pass) (interface{}, error)
- func CheckTimerResetReturnValue(pass *analysis.Pass) (interface{}, error)
- func CheckToLowerToUpperComparison(pass *analysis.Pass) (interface{}, error)
- func CheckUnreachableTypeCases(pass *analysis.Pass) (interface{}, error)
- func CheckUnreadVariableValues(pass *analysis.Pass) (interface{}, error)
- func CheckUnsafePrintf(pass *analysis.Pass) (interface{}, error)
- func CheckUntrappableSignal(pass *analysis.Pass) (interface{}, error)
- func CheckWaitgroupAdd(pass *analysis.Pass) (interface{}, error)
- func CheckWriterBufferModified(pass *analysis.Pass) (interface{}, error)
- func ConvertedFrom(v Value, typ string) bool
- func ConvertedFromInt(v Value) bool
- func IntValue(v Value, z vrp.Z) bool
- func InvalidUTF8(v Value) bool
- func Pointer(v Value) bool
- func UnbufferedChannel(v Value) bool
- func UniqueStringCutset(v Value) bool
- func ValidHostPort(v Value) bool
- func ValidateRegexp(v Value) error
- func ValidateTimeLayout(v Value) error
- func ValidateURL(v Value) error
- type Argument
- type Call
- type CallCheck
- type Value
Constants ¶
View Source
const ( MsgInvalidHostPort = "invalid port or service name in host:port pair" MsgInvalidUTF8 = "argument is not a valid UTF-8 encoded string" MsgNonUniqueCutset = "cutset contains duplicate characters" )
Variables ¶
View Source
var Analyzers = map[string]*analysis.Analyzer{ "SA1000": { Name: "SA1000", Run: callChecker(checkRegexpRules), Doc: docSA1000, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1001": { Name: "SA1001", Run: CheckTemplate, Doc: docSA1001, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA1002": { Name: "SA1002", Run: callChecker(checkTimeParseRules), Doc: docSA1002, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1003": { Name: "SA1003", Run: callChecker(checkEncodingBinaryRules), Doc: docSA1003, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1004": { Name: "SA1004", Run: CheckTimeSleepConstant, Doc: docSA1004, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA1005": { Name: "SA1005", Run: CheckExec, Doc: docSA1005, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA1006": { Name: "SA1006", Run: CheckUnsafePrintf, Doc: docSA1006, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA1007": { Name: "SA1007", Run: callChecker(checkURLsRules), Doc: docSA1007, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1008": { Name: "SA1008", Run: CheckCanonicalHeaderKey, Doc: docSA1008, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA1010": { Name: "SA1010", Run: callChecker(checkRegexpFindAllRules), Doc: docSA1010, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1011": { Name: "SA1011", Run: callChecker(checkUTF8CutsetRules), Doc: docSA1011, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1012": { Name: "SA1012", Run: CheckNilContext, Doc: docSA1012, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA1013": { Name: "SA1013", Run: CheckSeeker, Doc: docSA1013, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA1014": { Name: "SA1014", Run: callChecker(checkUnmarshalPointerRules), Doc: docSA1014, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1015": { Name: "SA1015", Run: CheckLeakyTimeTick, Doc: docSA1015, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA1016": { Name: "SA1016", Run: CheckUntrappableSignal, Doc: docSA1016, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA1017": { Name: "SA1017", Run: callChecker(checkUnbufferedSignalChanRules), Doc: docSA1017, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1018": { Name: "SA1018", Run: callChecker(checkStringsReplaceZeroRules), Doc: docSA1018, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1019": { Name: "SA1019", Run: CheckDeprecated, Doc: docSA1019, Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Deprecated}, Flags: newFlagSet(), }, "SA1020": { Name: "SA1020", Run: callChecker(checkListenAddressRules), Doc: docSA1020, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1021": { Name: "SA1021", Run: callChecker(checkBytesEqualIPRules), Doc: docSA1021, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1023": { Name: "SA1023", Run: CheckWriterBufferModified, Doc: docSA1023, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA1024": { Name: "SA1024", Run: callChecker(checkUniqueCutsetRules), Doc: docSA1024, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1025": { Name: "SA1025", Run: CheckTimerResetReturnValue, Doc: docSA1025, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA1026": { Name: "SA1026", Run: callChecker(checkUnsupportedMarshal), Doc: docSA1026, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA1027": { Name: "SA1027", Run: callChecker(checkAtomicAlignment), Doc: docSA1027, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA2000": { Name: "SA2000", Run: CheckWaitgroupAdd, Doc: docSA2000, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA2001": { Name: "SA2001", Run: CheckEmptyCriticalSection, Doc: docSA2001, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA2002": { Name: "SA2002", Run: CheckConcurrentTesting, Doc: docSA2002, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA2003": { Name: "SA2003", Run: CheckDeferLock, Doc: docSA2003, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA3000": { Name: "SA3000", Run: CheckTestMainExit, Doc: docSA3000, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA3001": { Name: "SA3001", Run: CheckBenchmarkN, Doc: docSA3001, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA4000": { Name: "SA4000", Run: CheckLhsRhsIdentical, Doc: docSA4000, Requires: []*analysis.Analyzer{inspect.Analyzer, facts.TokenFile, facts.Generated}, Flags: newFlagSet(), }, "SA4001": { Name: "SA4001", Run: CheckIneffectiveCopy, Doc: docSA4001, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA4002": { Name: "SA4002", Run: CheckDiffSizeComparison, Doc: docSA4002, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA4003": { Name: "SA4003", Run: CheckExtremeComparison, Doc: docSA4003, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA4004": { Name: "SA4004", Run: CheckIneffectiveLoop, Doc: docSA4004, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA4006": { Name: "SA4006", Run: CheckUnreadVariableValues, Doc: docSA4006, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA4008": { Name: "SA4008", Run: CheckLoopCondition, Doc: docSA4008, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA4009": { Name: "SA4009", Run: CheckArgOverwritten, Doc: docSA4009, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA4010": { Name: "SA4010", Run: CheckIneffectiveAppend, Doc: docSA4010, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA4011": { Name: "SA4011", Run: CheckScopedBreak, Doc: docSA4011, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA4012": { Name: "SA4012", Run: CheckNaNComparison, Doc: docSA4012, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA4013": { Name: "SA4013", Run: CheckDoubleNegation, Doc: docSA4013, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA4014": { Name: "SA4014", Run: CheckRepeatedIfElse, Doc: docSA4014, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA4015": { Name: "SA4015", Run: callChecker(checkMathIntRules), Doc: docSA4015, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA4016": { Name: "SA4016", Run: CheckSillyBitwiseOps, Doc: docSA4016, Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.TokenFile}, Flags: newFlagSet(), }, "SA4017": { Name: "SA4017", Run: CheckPureFunctions, Doc: docSA4017, Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.Purity}, Flags: newFlagSet(), }, "SA4018": { Name: "SA4018", Run: CheckSelfAssignment, Doc: docSA4018, Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile}, Flags: newFlagSet(), }, "SA4019": { Name: "SA4019", Run: CheckDuplicateBuildConstraints, Doc: docSA4019, Requires: []*analysis.Analyzer{facts.Generated}, Flags: newFlagSet(), }, "SA4020": { Name: "SA4020", Run: CheckUnreachableTypeCases, Doc: docSA4020, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA4021": { Name: "SA4021", Run: CheckSingleArgAppend, Doc: docSA4021, Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile}, Flags: newFlagSet(), }, "SA5000": { Name: "SA5000", Run: CheckNilMaps, Doc: docSA5000, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA5001": { Name: "SA5001", Run: CheckEarlyDefer, Doc: docSA5001, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA5002": { Name: "SA5002", Run: CheckInfiniteEmptyLoop, Doc: docSA5002, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA5003": { Name: "SA5003", Run: CheckDeferInInfiniteLoop, Doc: docSA5003, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA5004": { Name: "SA5004", Run: CheckLoopEmptyDefault, Doc: docSA5004, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA5005": { Name: "SA5005", Run: CheckCyclicFinalizer, Doc: docSA5005, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA5007": { Name: "SA5007", Run: CheckInfiniteRecursion, Doc: docSA5007, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA5008": { Name: "SA5008", Run: CheckStructTags, Doc: docSA5008, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA5009": { Name: "SA5009", Run: callChecker(checkPrintfRules), Doc: docSA5009, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA6000": { Name: "SA6000", Run: callChecker(checkRegexpMatchLoopRules), Doc: docSA6000, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA6001": { Name: "SA6001", Run: CheckMapBytesKey, Doc: docSA6001, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA6002": { Name: "SA6002", Run: callChecker(checkSyncPoolValueRules), Doc: docSA6002, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer}, Flags: newFlagSet(), }, "SA6003": { Name: "SA6003", Run: CheckRangeStringRunes, Doc: docSA6003, Requires: []*analysis.Analyzer{buildssa.Analyzer}, Flags: newFlagSet(), }, "SA6005": { Name: "SA6005", Run: CheckToLowerToUpperComparison, Doc: docSA6005, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA9001": { Name: "SA9001", Run: CheckDubiousDeferInChannelRangeLoop, Doc: docSA9001, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA9002": { Name: "SA9002", Run: CheckNonOctalFileMode, Doc: docSA9002, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA9003": { Name: "SA9003", Run: CheckEmptyBranch, Doc: docSA9003, Requires: []*analysis.Analyzer{buildssa.Analyzer, facts.TokenFile, facts.Generated}, Flags: newFlagSet(), }, "SA9004": { Name: "SA9004", Run: CheckMissingEnumTypesInDeclaration, Doc: docSA9004, Requires: []*analysis.Analyzer{inspect.Analyzer}, Flags: newFlagSet(), }, "SA9005": { Name: "SA9005", Run: callChecker(checkNoopMarshal), Doc: docSA9005, Requires: []*analysis.Analyzer{buildssa.Analyzer, valueRangesAnalyzer, facts.Generated, facts.TokenFile}, Flags: newFlagSet(), }, }
Functions ¶
func CheckArgOverwritten ¶
func CheckBenchmarkN ¶
func CheckCanonicalHeaderKey ¶
func CheckConcurrentTesting ¶
func CheckCyclicFinalizer ¶
func CheckDeferLock ¶
func CheckDeprecated ¶
func CheckDiffSizeComparison ¶
func CheckDoubleNegation ¶
func CheckEarlyDefer ¶
func CheckEmptyBranch ¶
func CheckExtremeComparison ¶
func CheckIneffectiveAppend ¶
func CheckIneffectiveCopy ¶
func CheckIneffectiveLoop ¶
func CheckInfiniteEmptyLoop ¶
func CheckInfiniteRecursion ¶
func CheckLeakyTimeTick ¶
func CheckLhsRhsIdentical ¶
func CheckLoopCondition ¶
func CheckLoopEmptyDefault ¶
func CheckMapBytesKey ¶
func CheckNaNComparison ¶
func CheckNilContext ¶
func CheckNilMaps ¶
func CheckNonOctalFileMode ¶
func CheckPureFunctions ¶
func CheckRangeStringRunes ¶
func CheckRepeatedIfElse ¶
func CheckScopedBreak ¶
func CheckSeeker ¶
func CheckSelfAssignment ¶
func CheckSillyBitwiseOps ¶
func CheckSillyRegexp ¶
func CheckSingleArgAppend ¶
func CheckStructTags ¶
func CheckTemplate ¶
func CheckTestMainExit ¶
func CheckTimeSleepConstant ¶
func CheckUnsafePrintf ¶
func CheckUntrappableSignal ¶
func CheckWaitgroupAdd ¶
func ConvertedFrom ¶
ConvertedFrom reports whether value v was converted from type typ.
func ConvertedFromInt ¶
func InvalidUTF8 ¶
func UnbufferedChannel ¶
func UniqueStringCutset ¶
func ValidHostPort ¶
func ValidateRegexp ¶
func ValidateTimeLayout ¶
func ValidateURL ¶
Types ¶
type Call ¶
Source Files ¶
Click to show internal directories.
Click to hide internal directories.