Skip to content

Commit abc3f26

Browse files
committed
fix(junitxml-printer): display suggested edit in output
1 parent f992976 commit abc3f26

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

Diff for: pkg/printers/junitxml.go

+25-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package printers
33
import (
44
"context"
55
"encoding/xml"
6+
"fmt"
67
"strings"
78

89
"github.com/golangci/golangci-lint/pkg/logutils"
@@ -41,7 +42,7 @@ func NewJunitXML() *JunitXML {
4142
return &JunitXML{}
4243
}
4344

44-
func (JunitXML) Print(ctx context.Context, issues []result.Issue) error {
45+
func (j JunitXML) Print(ctx context.Context, issues []result.Issue) error {
4546
suites := make(map[string]testSuiteXML) // use a map to group by file
4647

4748
for ind := range issues {
@@ -52,12 +53,14 @@ func (JunitXML) Print(ctx context.Context, issues []result.Issue) error {
5253
testSuite.Tests++
5354
testSuite.Failures++
5455

56+
content := strings.Join(i.SourceLines, "\n")
57+
content += j.getSuggestedFix(&issues[ind])
5558
tc := testCaseXML{
5659
Name: i.FromLinter,
5760
ClassName: i.Pos.String(),
5861
Failure: failureXML{
5962
Message: i.Text,
60-
Content: strings.Join(i.SourceLines, "\n"),
63+
Content: content,
6164
},
6265
}
6366

@@ -77,3 +80,23 @@ func (JunitXML) Print(ctx context.Context, issues []result.Issue) error {
7780
}
7881
return nil
7982
}
83+
84+
func (j JunitXML) getSuggestedFix(i *result.Issue) string {
85+
var text string
86+
if len(i.SuggestedFixes) > 0 {
87+
for _, fix := range i.SuggestedFixes {
88+
text += fmt.Sprintf("%s\n", strings.TrimSpace(fix.Message))
89+
var suggestedEdits []string
90+
for _, textEdit := range fix.TextEdits {
91+
suggestedEdits = append(suggestedEdits, strings.TrimSpace(textEdit.NewText))
92+
}
93+
text += strings.Join(suggestedEdits, "\n") + "\n"
94+
}
95+
}
96+
97+
if text != "" {
98+
return fmt.Sprintf("\n\n%s", text)
99+
}
100+
101+
return ""
102+
}

0 commit comments

Comments
 (0)