Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / honnef.co / go / tools@v0.0.1-2020.1.5 / staticcheck / analysis.go
1 package staticcheck
2
3 import (
4         "honnef.co/go/tools/facts"
5         "honnef.co/go/tools/internal/passes/buildir"
6         "honnef.co/go/tools/lint/lintutil"
7
8         "golang.org/x/tools/go/analysis"
9         "golang.org/x/tools/go/analysis/passes/inspect"
10 )
11
12 func makeCallCheckerAnalyzer(rules map[string]CallCheck, extraReqs ...*analysis.Analyzer) *analysis.Analyzer {
13         reqs := []*analysis.Analyzer{buildir.Analyzer, facts.TokenFile}
14         reqs = append(reqs, extraReqs...)
15         return &analysis.Analyzer{
16                 Run:      callChecker(rules),
17                 Requires: reqs,
18         }
19 }
20
21 var Analyzers = lintutil.InitializeAnalyzers(Docs, map[string]*analysis.Analyzer{
22         "SA1000": makeCallCheckerAnalyzer(checkRegexpRules),
23         "SA1001": {
24                 Run:      CheckTemplate,
25                 Requires: []*analysis.Analyzer{inspect.Analyzer},
26         },
27         "SA1002": makeCallCheckerAnalyzer(checkTimeParseRules),
28         "SA1003": makeCallCheckerAnalyzer(checkEncodingBinaryRules),
29         "SA1004": {
30                 Run:      CheckTimeSleepConstant,
31                 Requires: []*analysis.Analyzer{inspect.Analyzer},
32         },
33         "SA1005": {
34                 Run:      CheckExec,
35                 Requires: []*analysis.Analyzer{inspect.Analyzer},
36         },
37         "SA1006": {
38                 Run:      CheckUnsafePrintf,
39                 Requires: []*analysis.Analyzer{inspect.Analyzer},
40         },
41         "SA1007": makeCallCheckerAnalyzer(checkURLsRules),
42         "SA1008": {
43                 Run:      CheckCanonicalHeaderKey,
44                 Requires: []*analysis.Analyzer{inspect.Analyzer},
45         },
46         "SA1010": makeCallCheckerAnalyzer(checkRegexpFindAllRules),
47         "SA1011": makeCallCheckerAnalyzer(checkUTF8CutsetRules),
48         "SA1012": {
49                 Run:      CheckNilContext,
50                 Requires: []*analysis.Analyzer{inspect.Analyzer},
51         },
52         "SA1013": {
53                 Run:      CheckSeeker,
54                 Requires: []*analysis.Analyzer{inspect.Analyzer},
55         },
56         "SA1014": makeCallCheckerAnalyzer(checkUnmarshalPointerRules),
57         "SA1015": {
58                 Run:      CheckLeakyTimeTick,
59                 Requires: []*analysis.Analyzer{buildir.Analyzer},
60         },
61         "SA1016": {
62                 Run:      CheckUntrappableSignal,
63                 Requires: []*analysis.Analyzer{inspect.Analyzer},
64         },
65         "SA1017": makeCallCheckerAnalyzer(checkUnbufferedSignalChanRules),
66         "SA1018": makeCallCheckerAnalyzer(checkStringsReplaceZeroRules),
67         "SA1019": {
68                 Run:      CheckDeprecated,
69                 Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Deprecated, facts.Generated},
70         },
71         "SA1020": makeCallCheckerAnalyzer(checkListenAddressRules),
72         "SA1021": makeCallCheckerAnalyzer(checkBytesEqualIPRules),
73         "SA1023": {
74                 Run:      CheckWriterBufferModified,
75                 Requires: []*analysis.Analyzer{buildir.Analyzer},
76         },
77         "SA1024": makeCallCheckerAnalyzer(checkUniqueCutsetRules),
78         "SA1025": {
79                 Run:      CheckTimerResetReturnValue,
80                 Requires: []*analysis.Analyzer{buildir.Analyzer},
81         },
82         "SA1026": makeCallCheckerAnalyzer(checkUnsupportedMarshal),
83         "SA1027": makeCallCheckerAnalyzer(checkAtomicAlignment),
84         "SA1028": makeCallCheckerAnalyzer(checkSortSliceRules),
85         "SA1029": makeCallCheckerAnalyzer(checkWithValueKeyRules),
86
87         "SA2000": {
88                 Run:      CheckWaitgroupAdd,
89                 Requires: []*analysis.Analyzer{inspect.Analyzer},
90         },
91         "SA2001": {
92                 Run:      CheckEmptyCriticalSection,
93                 Requires: []*analysis.Analyzer{inspect.Analyzer},
94         },
95         "SA2002": {
96                 Run:      CheckConcurrentTesting,
97                 Requires: []*analysis.Analyzer{buildir.Analyzer},
98         },
99         "SA2003": {
100                 Run:      CheckDeferLock,
101                 Requires: []*analysis.Analyzer{buildir.Analyzer},
102         },
103
104         "SA3000": {
105                 Run:      CheckTestMainExit,
106                 Requires: []*analysis.Analyzer{inspect.Analyzer},
107         },
108         "SA3001": {
109                 Run:      CheckBenchmarkN,
110                 Requires: []*analysis.Analyzer{inspect.Analyzer},
111         },
112
113         "SA4000": {
114                 Run:      CheckLhsRhsIdentical,
115                 Requires: []*analysis.Analyzer{inspect.Analyzer, facts.TokenFile, facts.Generated},
116         },
117         "SA4001": {
118                 Run:      CheckIneffectiveCopy,
119                 Requires: []*analysis.Analyzer{inspect.Analyzer},
120         },
121         "SA4003": {
122                 Run:      CheckExtremeComparison,
123                 Requires: []*analysis.Analyzer{inspect.Analyzer},
124         },
125         "SA4004": {
126                 Run:      CheckIneffectiveLoop,
127                 Requires: []*analysis.Analyzer{inspect.Analyzer},
128         },
129         "SA4006": {
130                 Run:      CheckUnreadVariableValues,
131                 Requires: []*analysis.Analyzer{buildir.Analyzer, facts.Generated},
132         },
133         "SA4008": {
134                 Run:      CheckLoopCondition,
135                 Requires: []*analysis.Analyzer{buildir.Analyzer},
136         },
137         "SA4009": {
138                 Run:      CheckArgOverwritten,
139                 Requires: []*analysis.Analyzer{buildir.Analyzer},
140         },
141         "SA4010": {
142                 Run:      CheckIneffectiveAppend,
143                 Requires: []*analysis.Analyzer{buildir.Analyzer},
144         },
145         "SA4011": {
146                 Run:      CheckScopedBreak,
147                 Requires: []*analysis.Analyzer{inspect.Analyzer},
148         },
149         "SA4012": {
150                 Run:      CheckNaNComparison,
151                 Requires: []*analysis.Analyzer{buildir.Analyzer},
152         },
153         "SA4013": {
154                 Run:      CheckDoubleNegation,
155                 Requires: []*analysis.Analyzer{inspect.Analyzer},
156         },
157         "SA4014": {
158                 Run:      CheckRepeatedIfElse,
159                 Requires: []*analysis.Analyzer{inspect.Analyzer},
160         },
161         "SA4015": makeCallCheckerAnalyzer(checkMathIntRules),
162         "SA4016": {
163                 Run:      CheckSillyBitwiseOps,
164                 Requires: []*analysis.Analyzer{inspect.Analyzer, facts.TokenFile},
165         },
166         "SA4017": {
167                 Run:      CheckPureFunctions,
168                 Requires: []*analysis.Analyzer{buildir.Analyzer, facts.Purity},
169         },
170         "SA4018": {
171                 Run:      CheckSelfAssignment,
172                 Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile, facts.Purity},
173         },
174         "SA4019": {
175                 Run:      CheckDuplicateBuildConstraints,
176                 Requires: []*analysis.Analyzer{facts.Generated},
177         },
178         "SA4020": {
179                 Run:      CheckUnreachableTypeCases,
180                 Requires: []*analysis.Analyzer{inspect.Analyzer},
181         },
182         "SA4021": {
183                 Run:      CheckSingleArgAppend,
184                 Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated, facts.TokenFile},
185         },
186
187         "SA5000": {
188                 Run:      CheckNilMaps,
189                 Requires: []*analysis.Analyzer{buildir.Analyzer},
190         },
191         "SA5001": {
192                 Run:      CheckEarlyDefer,
193                 Requires: []*analysis.Analyzer{inspect.Analyzer},
194         },
195         "SA5002": {
196                 Run:      CheckInfiniteEmptyLoop,
197                 Requires: []*analysis.Analyzer{inspect.Analyzer},
198         },
199         "SA5003": {
200                 Run:      CheckDeferInInfiniteLoop,
201                 Requires: []*analysis.Analyzer{inspect.Analyzer},
202         },
203         "SA5004": {
204                 Run:      CheckLoopEmptyDefault,
205                 Requires: []*analysis.Analyzer{inspect.Analyzer},
206         },
207         "SA5005": {
208                 Run:      CheckCyclicFinalizer,
209                 Requires: []*analysis.Analyzer{buildir.Analyzer},
210         },
211         "SA5007": {
212                 Run:      CheckInfiniteRecursion,
213                 Requires: []*analysis.Analyzer{buildir.Analyzer},
214         },
215         "SA5008": {
216                 Run:      CheckStructTags,
217                 Requires: []*analysis.Analyzer{inspect.Analyzer},
218         },
219         "SA5009": makeCallCheckerAnalyzer(checkPrintfRules),
220         "SA5010": {
221                 Run:      CheckImpossibleTypeAssertion,
222                 Requires: []*analysis.Analyzer{buildir.Analyzer, facts.TokenFile},
223         },
224         "SA5011": {
225                 Run:      CheckMaybeNil,
226                 Requires: []*analysis.Analyzer{buildir.Analyzer},
227         },
228
229         "SA6000": makeCallCheckerAnalyzer(checkRegexpMatchLoopRules),
230         "SA6001": {
231                 Run:      CheckMapBytesKey,
232                 Requires: []*analysis.Analyzer{buildir.Analyzer},
233         },
234         "SA6002": makeCallCheckerAnalyzer(checkSyncPoolValueRules),
235         "SA6003": {
236                 Run:      CheckRangeStringRunes,
237                 Requires: []*analysis.Analyzer{buildir.Analyzer},
238         },
239         "SA6005": {
240                 Run:      CheckToLowerToUpperComparison,
241                 Requires: []*analysis.Analyzer{inspect.Analyzer},
242         },
243
244         "SA9001": {
245                 Run:      CheckDubiousDeferInChannelRangeLoop,
246                 Requires: []*analysis.Analyzer{inspect.Analyzer},
247         },
248         "SA9002": {
249                 Run:      CheckNonOctalFileMode,
250                 Requires: []*analysis.Analyzer{inspect.Analyzer},
251         },
252         "SA9003": {
253                 Run:      CheckEmptyBranch,
254                 Requires: []*analysis.Analyzer{buildir.Analyzer, facts.TokenFile, facts.Generated},
255         },
256         "SA9004": {
257                 Run:      CheckMissingEnumTypesInDeclaration,
258                 Requires: []*analysis.Analyzer{inspect.Analyzer},
259         },
260         // Filtering generated code because it may include empty structs generated from data models.
261         "SA9005": makeCallCheckerAnalyzer(checkNoopMarshal, facts.Generated),
262
263         "SA4022": {
264                 Run:      CheckAddressIsNil,
265                 Requires: []*analysis.Analyzer{inspect.Analyzer},
266         },
267 })