@@ -80,12 +80,13 @@ func (p Fixer) process(issues []result.Issue) ([]result.Issue, error) {
80
80
formatters := []string {gofumpt .Name , goimports .Name , gofmt .Name , gci .Name }
81
81
82
82
var notFixableIssues []result.Issue
83
+ var formatIssues []result.Issue
83
84
84
85
for i := range issues {
85
86
issue := issues [i ]
86
87
87
88
if slices .Contains (formatters , issue .FromLinter ) {
88
- notFixableIssues = append (notFixableIssues , issue )
89
+ formatIssues = append (formatIssues , issue )
89
90
continue
90
91
}
91
92
@@ -175,6 +176,8 @@ func (p Fixer) process(issues []result.Issue) ([]result.Issue, error) {
175
176
176
177
var editError error
177
178
179
+ var formattedFiles []string
180
+
178
181
// Now we've got a set of valid edits for each file. Apply them.
179
182
for path , edits := range editsByPath {
180
183
contents , err := p .fileCache .GetFileBytes (path )
@@ -196,6 +199,28 @@ func (p Fixer) process(issues []result.Issue) ([]result.Issue, error) {
196
199
editError = errors .Join (editError , fmt .Errorf ("%s: %w" , path , err ))
197
200
continue
198
201
}
202
+
203
+ formattedFiles = append (formattedFiles , path )
204
+ }
205
+
206
+ for i := range formatIssues {
207
+ path := issues [i ].FilePath ()
208
+
209
+ // Skips files already formatted by the previous fix step.
210
+ if slices .Contains (formattedFiles , path ) {
211
+ content , err := p .fileCache .GetFileBytes (path )
212
+ if err != nil {
213
+ p .log .Warnf ("Error reading file %s: %v" , path , err )
214
+ continue
215
+ }
216
+
217
+ out := p .formatter .Format (path , content )
218
+
219
+ if err := os .WriteFile (path , out , filePerm ); err != nil {
220
+ editError = errors .Join (editError , fmt .Errorf ("%s: %w" , path , err ))
221
+ continue
222
+ }
223
+ }
199
224
}
200
225
201
226
return notFixableIssues , editError
0 commit comments