@@ -80,12 +80,13 @@ func (p Fixer) process(issues []result.Issue) ([]result.Issue, error) {
8080 formatters := []string {gofumpt .Name , goimports .Name , gofmt .Name , gci .Name }
8181
8282 var notFixableIssues []result.Issue
83+ var formatIssues []result.Issue
8384
8485 for i := range issues {
8586 issue := issues [i ]
8687
8788 if slices .Contains (formatters , issue .FromLinter ) {
88- notFixableIssues = append (notFixableIssues , issue )
89+ formatIssues = append (formatIssues , issue )
8990 continue
9091 }
9192
@@ -175,6 +176,8 @@ func (p Fixer) process(issues []result.Issue) ([]result.Issue, error) {
175176
176177 var editError error
177178
179+ var formattedFiles []string
180+
178181 // Now we've got a set of valid edits for each file. Apply them.
179182 for path , edits := range editsByPath {
180183 contents , err := p .fileCache .GetFileBytes (path )
@@ -196,6 +199,28 @@ func (p Fixer) process(issues []result.Issue) ([]result.Issue, error) {
196199 editError = errors .Join (editError , fmt .Errorf ("%s: %w" , path , err ))
197200 continue
198201 }
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+ }
199224 }
200225
201226 return notFixableIssues , editError
0 commit comments