Skip to content

Commit 8a08c5e

Browse files
committed
fix(codeclimate-printer): display suggested edit in output
1 parent abc3f26 commit 8a08c5e

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

pkg/printers/codeclimate.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"encoding/json"
66
"fmt"
7+
"strings"
78

89
"github.com/golangci/golangci-lint/pkg/logutils"
910
"github.com/golangci/golangci-lint/pkg/result"
@@ -13,6 +14,7 @@ import (
1314
// It is just enough to support GitLab CI Code Quality - https://docs.gitlab.com/ee/user/project/merge_requests/code_quality.html
1415
type CodeClimateIssue struct {
1516
Description string `json:"description"`
17+
Content string `json:"content,omitempty"`
1618
Severity string `json:"severity,omitempty"`
1719
Fingerprint string `json:"fingerprint"`
1820
Location struct {
@@ -40,6 +42,11 @@ func (p CodeClimate) Print(ctx context.Context, issues []result.Issue) error {
4042
codeClimateIssue.Location.Lines.Begin = issue.Pos.Line
4143
codeClimateIssue.Fingerprint = issue.Fingerprint()
4244

45+
content := p.buildContentString(&issues[i])
46+
if content != "" {
47+
codeClimateIssue.Content = content
48+
}
49+
4350
if issue.Severity != "" {
4451
codeClimateIssue.Severity = issue.Severity
4552
}
@@ -55,3 +62,23 @@ func (p CodeClimate) Print(ctx context.Context, issues []result.Issue) error {
5562
fmt.Fprint(logutils.StdOut, string(outputJSON))
5663
return nil
5764
}
65+
66+
func (p CodeClimate) buildContentString(issue *result.Issue) string {
67+
if len(issue.SuggestedFixes) == 0 {
68+
return ""
69+
}
70+
71+
var text string
72+
for _, fix := range issue.SuggestedFixes {
73+
text += fmt.Sprintf("%s\n", strings.TrimSpace(fix.Message))
74+
var suggestedEdits []string
75+
for _, textEdit := range fix.TextEdits {
76+
suggestedEdits = append(suggestedEdits, strings.TrimSpace(textEdit.NewText))
77+
}
78+
if len(suggestedEdits) > 0 {
79+
text += "```\n" + strings.Join(suggestedEdits, "\n") + "\n" + "```\n"
80+
}
81+
}
82+
83+
return text
84+
}

0 commit comments

Comments
 (0)