@@ -3,6 +3,7 @@ package printers
3
3
import (
4
4
"context"
5
5
"encoding/xml"
6
+ "fmt"
6
7
"strings"
7
8
8
9
"github.com/golangci/golangci-lint/pkg/logutils"
@@ -41,7 +42,7 @@ func NewJunitXML() *JunitXML {
41
42
return & JunitXML {}
42
43
}
43
44
44
- func (JunitXML ) Print (ctx context.Context , issues []result.Issue ) error {
45
+ func (j JunitXML ) Print (ctx context.Context , issues []result.Issue ) error {
45
46
suites := make (map [string ]testSuiteXML ) // use a map to group by file
46
47
47
48
for ind := range issues {
@@ -52,12 +53,14 @@ func (JunitXML) Print(ctx context.Context, issues []result.Issue) error {
52
53
testSuite .Tests ++
53
54
testSuite .Failures ++
54
55
56
+ content := strings .Join (i .SourceLines , "\n " )
57
+ content += j .getSuggestedFix (& issues [ind ])
55
58
tc := testCaseXML {
56
59
Name : i .FromLinter ,
57
60
ClassName : i .Pos .String (),
58
61
Failure : failureXML {
59
62
Message : i .Text ,
60
- Content : strings . Join ( i . SourceLines , " \n " ) ,
63
+ Content : content ,
61
64
},
62
65
}
63
66
@@ -77,3 +80,23 @@ func (JunitXML) Print(ctx context.Context, issues []result.Issue) error {
77
80
}
78
81
return nil
79
82
}
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