@@ -49,15 +49,15 @@ func flags() flag.FlagSet {
49
49
func run (pass * analysis.Pass ) (interface {}, error ) {
50
50
insp := pass .ResultOf [inspect .Analyzer ].(* inspector.Inspector )
51
51
52
- filter := []ast.Node {
52
+ types := []ast.Node {
53
53
(* ast .CallExpr )(nil ),
54
54
(* ast .BasicLit )(nil ),
55
55
(* ast .CompositeLit )(nil ),
56
56
(* ast .IfStmt )(nil ),
57
57
(* ast .SwitchStmt )(nil ),
58
58
}
59
59
60
- insp .Preorder (filter , func (node ast.Node ) {
60
+ insp .Preorder (types , func (node ast.Node ) {
61
61
switch n := node .(type ) {
62
62
case * ast.CallExpr :
63
63
selectorExpr , ok := n .Fun .(* ast.SelectorExpr )
@@ -194,35 +194,22 @@ func run(pass *analysis.Pass) (interface{}, error) {
194
194
}
195
195
196
196
case * ast.IfStmt :
197
- binaryExpr , ok := n .Cond .(* ast.BinaryExpr )
197
+ cond , ok := n .Cond .(* ast.BinaryExpr )
198
198
if ! ok {
199
199
return
200
200
}
201
201
202
- selectorExpr , ok := binaryExpr .X .(* ast.SelectorExpr )
202
+ x , ok := cond .X .(* ast.SelectorExpr )
203
203
if ! ok {
204
204
return
205
205
}
206
206
207
- basicLit , ok := binaryExpr .Y .(* ast.BasicLit )
207
+ y , ok := cond .Y .(* ast.BasicLit )
208
208
if ! ok {
209
209
return
210
210
}
211
211
212
- switch selectorExpr .Sel .Name {
213
- case "StatusCode" :
214
- if ! lookupFlag (pass , HTTPStatusCodeFlag ) {
215
- return
216
- }
217
-
218
- checkHTTPStatusCode (pass , basicLit )
219
- case "Method" :
220
- if ! lookupFlag (pass , HTTPMethodFlag ) {
221
- return
222
- }
223
-
224
- checkHTTPMethod (pass , basicLit )
225
- }
212
+ ifstmt (pass , x , y )
226
213
227
214
case * ast.SwitchStmt :
228
215
selectorExpr , ok := n .Tag .(* ast.SelectorExpr )
@@ -307,6 +294,23 @@ func run(pass *analysis.Pass) (interface{}, error) {
307
294
return nil , nil
308
295
}
309
296
297
+ func ifstmt (pass * analysis.Pass , x * ast.SelectorExpr , y * ast.BasicLit ) {
298
+ switch x .Sel .Name {
299
+ case "StatusCode" :
300
+ if ! lookupFlag (pass , HTTPStatusCodeFlag ) {
301
+ return
302
+ }
303
+
304
+ checkHTTPStatusCode (pass , y )
305
+ case "Method" :
306
+ if ! lookupFlag (pass , HTTPMethodFlag ) {
307
+ return
308
+ }
309
+
310
+ checkHTTPMethod (pass , y )
311
+ }
312
+ }
313
+
310
314
func lookupFlag (pass * analysis.Pass , name string ) bool {
311
315
return pass .Analyzer .Flags .Lookup (name ).Value .(flag.Getter ).Get ().(bool )
312
316
}
0 commit comments