Skip to content

Commit d9131b0

Browse files
alexandearcatenacyber
authored andcommitted
analyzer: refactor value type of neededPackages map
1 parent a34cbe3 commit d9131b0

File tree

1 file changed

+29
-39
lines changed

1 file changed

+29
-39
lines changed

analyzer/analyzer.go

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
8181
return nil, nil
8282
}
8383
removedFmtUsages := make(map[string]int)
84-
neededPackages := make(map[string]map[string]bool)
84+
neededPackages := make(map[string]map[string]struct{})
8585

8686
insp := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector)
8787
nodeFilter := []ast.Node{
@@ -156,13 +156,12 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
156156
switch {
157157
case isBasicType(valueType, types.String) && oneOf(verb, "%v", "%s"):
158158
fname := pass.Fset.File(call.Pos()).Name()
159-
_, ok := neededPackages[fname]
160-
if !ok {
161-
neededPackages[fname] = make(map[string]bool)
159+
if _, ok := neededPackages[fname]; !ok {
160+
neededPackages[fname] = make(map[string]struct{})
162161
}
163162
removedFmtUsages[fname]++
164163
if fn == "fmt.Errorf" {
165-
neededPackages[fname]["errors"] = true
164+
neededPackages[fname]["errors"] = struct{}{}
166165
d = newAnalysisDiagnostic(
167166
"", // TODO: precise checker
168167
call,
@@ -220,11 +219,10 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
220219
case isBasicType(valueType, types.Bool) && oneOf(verb, "%v", "%t"):
221220
fname := pass.Fset.File(call.Pos()).Name()
222221
removedFmtUsages[fname]++
223-
_, ok := neededPackages[fname]
224-
if !ok {
225-
neededPackages[fname] = make(map[string]bool)
222+
if _, ok := neededPackages[fname]; !ok {
223+
neededPackages[fname] = make(map[string]struct{})
226224
}
227-
neededPackages[fname]["strconv"] = true
225+
neededPackages[fname]["strconv"] = struct{}{}
228226
d = newAnalysisDiagnostic(
229227
"", // TODO: precise checker
230228
call,
@@ -249,11 +247,10 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
249247

250248
fname := pass.Fset.File(call.Pos()).Name()
251249
removedFmtUsages[fname]++
252-
_, ok := neededPackages[fname]
253-
if !ok {
254-
neededPackages[fname] = make(map[string]bool)
250+
if _, ok := neededPackages[fname]; !ok {
251+
neededPackages[fname] = make(map[string]struct{})
255252
}
256-
neededPackages[fname]["encoding/hex"] = true
253+
neededPackages[fname]["encoding/hex"] = struct{}{}
257254
d = newAnalysisDiagnostic(
258255
"", // TODO: precise checker
259256
call,
@@ -279,11 +276,10 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
279276
case isSlice && isBasicType(s.Elem(), types.Uint8) && oneOf(verb, "%x"):
280277
fname := pass.Fset.File(call.Pos()).Name()
281278
removedFmtUsages[fname]++
282-
_, ok := neededPackages[fname]
283-
if !ok {
284-
neededPackages[fname] = make(map[string]bool)
279+
if _, ok := neededPackages[fname]; !ok {
280+
neededPackages[fname] = make(map[string]struct{})
285281
}
286-
neededPackages[fname]["encoding/hex"] = true
282+
neededPackages[fname]["encoding/hex"] = struct{}{}
287283
d = newAnalysisDiagnostic(
288284
"", // TODO: precise checker
289285
call,
@@ -303,11 +299,10 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
303299
case isBasicType(valueType, types.Int8, types.Int16, types.Int32) && oneOf(verb, "%v", "%d") && n.intConv:
304300
fname := pass.Fset.File(call.Pos()).Name()
305301
removedFmtUsages[fname]++
306-
_, ok := neededPackages[fname]
307-
if !ok {
308-
neededPackages[fname] = make(map[string]bool)
302+
if _, ok := neededPackages[fname]; !ok {
303+
neededPackages[fname] = make(map[string]struct{})
309304
}
310-
neededPackages[fname]["strconv"] = true
305+
neededPackages[fname]["strconv"] = struct{}{}
311306
d = newAnalysisDiagnostic(
312307
"", // TODO: precise checker
313308
call,
@@ -333,11 +328,10 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
333328
case isBasicType(valueType, types.Int) && oneOf(verb, "%v", "%d"):
334329
fname := pass.Fset.File(call.Pos()).Name()
335330
removedFmtUsages[fname]++
336-
_, ok := neededPackages[fname]
337-
if !ok {
338-
neededPackages[fname] = make(map[string]bool)
331+
if _, ok := neededPackages[fname]; !ok {
332+
neededPackages[fname] = make(map[string]struct{})
339333
}
340-
neededPackages[fname]["strconv"] = true
334+
neededPackages[fname]["strconv"] = struct{}{}
341335
d = newAnalysisDiagnostic(
342336
"", // TODO: precise checker
343337
call,
@@ -356,11 +350,10 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
356350
case isBasicType(valueType, types.Int64) && oneOf(verb, "%v", "%d"):
357351
fname := pass.Fset.File(call.Pos()).Name()
358352
removedFmtUsages[fname]++
359-
_, ok := neededPackages[fname]
360-
if !ok {
361-
neededPackages[fname] = make(map[string]bool)
353+
if _, ok := neededPackages[fname]; !ok {
354+
neededPackages[fname] = make(map[string]struct{})
362355
}
363-
neededPackages[fname]["strconv"] = true
356+
neededPackages[fname]["strconv"] = struct{}{}
364357
d = newAnalysisDiagnostic(
365358
"", // TODO: precise checker
366359
call,
@@ -391,11 +384,10 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
391384
}
392385
fname := pass.Fset.File(call.Pos()).Name()
393386
removedFmtUsages[fname]++
394-
_, ok := neededPackages[fname]
395-
if !ok {
396-
neededPackages[fname] = make(map[string]bool)
387+
if _, ok := neededPackages[fname]; !ok {
388+
neededPackages[fname] = make(map[string]struct{})
397389
}
398-
neededPackages[fname]["strconv"] = true
390+
neededPackages[fname]["strconv"] = struct{}{}
399391
d = newAnalysisDiagnostic(
400392
"", // TODO: precise checker
401393
call,
@@ -425,11 +417,10 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
425417
}
426418
fname := pass.Fset.File(call.Pos()).Name()
427419
removedFmtUsages[fname]++
428-
_, ok := neededPackages[fname]
429-
if !ok {
430-
neededPackages[fname] = make(map[string]bool)
420+
if _, ok := neededPackages[fname]; !ok {
421+
neededPackages[fname] = make(map[string]struct{})
431422
}
432-
neededPackages[fname]["strconv"] = true
423+
neededPackages[fname]["strconv"] = struct{}{}
433424
d = newAnalysisDiagnostic(
434425
"", // TODO: precise checker
435426
call,
@@ -514,8 +505,7 @@ func (n *perfSprint) run(pass *analysis.Pass) (interface{}, error) {
514505
gd := node.(*ast.ImportSpec)
515506
if gd.Path.Value == strconv.Quote(pkg.Path()) {
516507
fname := pass.Fset.File(gd.Pos()).Name()
517-
_, ok := neededPackages[fname]
518-
if ok {
508+
if _, ok := neededPackages[fname]; ok {
519509
delete(neededPackages[fname], pkg.Path())
520510
}
521511
}

0 commit comments

Comments
 (0)