Skip to content

Commit 01a9d0a

Browse files
committed
formatter: self-review #3
1 parent f03823e commit 01a9d0a

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

internal/checkers/formatter.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,15 @@ func (checker Formatter) checkNotFmtAssertion(pass *analysis.Pass, call *CallMet
6565
return nil
6666
}
6767

68+
fFunc := call.Fn.Name + "f"
69+
6870
if msgAndArgsPos == len(call.ArgsRaw)-1 {
6971
msgAndArgs := call.ArgsRaw[msgAndArgsPos]
7072
if args, ok := isFmtSprintfCall(pass, msgAndArgs); ok {
7173
if checker.requireFFuncs {
72-
msg := fmt.Sprintf("remove unnecessary fmt.Sprintf and use %s.%s", call.SelectorXStr, call.Fn.Name+"f")
74+
msg := fmt.Sprintf("remove unnecessary fmt.Sprintf and use %s.%s", call.SelectorXStr, fFunc)
7375
return newDiagnostic(checker.Name(), call, msg,
74-
newSuggestedFuncReplacement(call, call.Fn.Name+"f", analysis.TextEdit{
76+
newSuggestedFuncReplacement(call, fFunc, analysis.TextEdit{
7577
Pos: msgAndArgs.Pos(),
7678
End: msgAndArgs.End(),
7779
NewText: formatAsCallArgs(pass, args...),
@@ -83,21 +85,20 @@ func (checker Formatter) checkNotFmtAssertion(pass *analysis.Pass, call *CallMet
8385
}
8486

8587
if checker.requireFFuncs {
86-
return newUseFunctionDiagnostic(checker.Name(), call, call.Fn.Name+"f",
87-
newSuggestedFuncReplacement(call, call.Fn.Name+"f"))
88+
return newUseFunctionDiagnostic(checker.Name(), call, fFunc, newSuggestedFuncReplacement(call, fFunc))
8889
}
8990
return nil
9091
}
9192

9293
func (checker Formatter) checkFmtAssertion(pass *analysis.Pass, call *CallMeta) (result *analysis.Diagnostic) {
93-
formatIdx := getMsgPosition(call.Fn.Signature)
94-
if formatIdx == 0 {
94+
formatPos := getMsgPosition(call.Fn.Signature)
95+
if formatPos < 0 {
9596
return nil
9697
}
9798

98-
msg := call.ArgsRaw[formatIdx]
99+
msg := call.ArgsRaw[formatPos]
99100

100-
if formatIdx == len(call.ArgsRaw)-1 {
101+
if formatPos == len(call.ArgsRaw)-1 {
101102
if args, ok := isFmtSprintfCall(pass, msg); ok {
102103
return newRemoveSprintfDiagnostic(pass, checker.Name(), call, msg, args)
103104
}
@@ -115,7 +116,7 @@ func (checker Formatter) checkFmtAssertion(pass *analysis.Pass, call *CallMeta)
115116
if err != nil {
116117
return nil
117118
}
118-
printf.CheckPrintf(pass, call.Call, call.String(), format, formatIdx)
119+
printf.CheckPrintf(pass, call.Call, call.String(), format, formatPos)
119120
}
120121
return result
121122
}
@@ -159,7 +160,7 @@ func getMsgPosition(sig *types.Signature) int {
159160
return i
160161
}
161162
}
162-
return 0
163+
return -1
163164
}
164165

165166
func isFmtSprintfCall(pass *analysis.Pass, expr ast.Expr) ([]ast.Expr, bool) {

internal/testgen/gen_formatter_not_defaults.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,13 @@ import (
99

1010
type FormatterNotDefaultsTestsGenerator struct{}
1111

12-
func (FormatterNotDefaultsTestsGenerator) Checker() checkers.Checker {
13-
return checkers.NewFormatter()
14-
}
15-
1612
func (g FormatterNotDefaultsTestsGenerator) TemplateData() any {
17-
reportUse := g.Checker().Name() + ": use %s.%s"
18-
reportRemove := g.Checker().Name() + ": remove unnecessary fmt.Sprintf"
19-
reportRemoveAndUse := g.Checker().Name() + ": remove unnecessary fmt.Sprintf and use %s.%s"
13+
var (
14+
checker = checkers.NewFormatter().Name()
15+
reportUse = checker + ": use %s.%s"
16+
reportRemove = checker + ": remove unnecessary fmt.Sprintf"
17+
reportRemoveAndUse = checker + ": remove unnecessary fmt.Sprintf and use %s.%s"
18+
)
2019

2120
baseAssertions := []Assertion{
2221
{Fn: "Equal", Argsf: "1, 2"},
@@ -126,7 +125,7 @@ func (g FormatterNotDefaultsTestsGenerator) TemplateData() any {
126125
SprintfAssertions []Assertion
127126
AllAssertions []Assertion
128127
}{
129-
CheckerName: CheckerName(g.Checker().Name()),
128+
CheckerName: CheckerName(checker),
130129
BaseAssertions: baseAssertions,
131130
SprintfAssertions: sprintfAssertions,
132131
AllAssertions: assertions,

0 commit comments

Comments
 (0)