Skip to content

Commit c82ebc2

Browse files
committed
add new required field for code climate report format
1 parent 0ce421f commit c82ebc2

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

pkg/printers/codeclimate.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@ import (
77
"github.com/golangci/golangci-lint/pkg/result"
88
)
99

10-
const defaultCodeClimateSeverity = "critical"
10+
const (
11+
defaultCheckName = "golangci-lint"
12+
defaultCodeClimateSeverity = "critical"
13+
)
1114

1215
// CodeClimateIssue is a subset of the Code Climate spec.
1316
// https://github.com/codeclimate/platform/blob/master/spec/analyzers/SPEC.md#data-types
1417
// It is just enough to support GitLab CI Code Quality.
15-
// https://docs.gitlab.com/ee/user/project/merge_requests/code_quality.html
18+
// https://docs.gitlab.com/ee/ci/testing/code_quality.html#implement-a-custom-tool
1619
type CodeClimateIssue struct {
1720
Description string `json:"description"`
21+
CheckName string `json:"check_name"`
1822
Severity string `json:"severity,omitempty"`
1923
Fingerprint string `json:"fingerprint"`
2024
Location struct {
@@ -38,12 +42,17 @@ func (p CodeClimate) Print(issues []result.Issue) error {
3842
for i := range issues {
3943
issue := &issues[i]
4044
codeClimateIssue := CodeClimateIssue{}
41-
codeClimateIssue.Description = issue.Description()
45+
codeClimateIssue.Description = issue.Text
46+
codeClimateIssue.CheckName = defaultCheckName
4247
codeClimateIssue.Location.Path = issue.Pos.Filename
4348
codeClimateIssue.Location.Lines.Begin = issue.Pos.Line
4449
codeClimateIssue.Fingerprint = issue.Fingerprint()
4550
codeClimateIssue.Severity = defaultCodeClimateSeverity
4651

52+
if issue.FromLinter != "" {
53+
codeClimateIssue.CheckName = issue.FromLinter
54+
}
55+
4756
if issue.Severity != "" {
4857
codeClimateIssue.Severity = issue.Severity
4958
}

pkg/printers/codeclimate_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ func TestCodeClimate_Print(t *testing.T) {
4141
},
4242
},
4343
{
44-
FromLinter: "linter-c",
45-
Text: "issue c",
44+
Text: "issue c",
4645
SourceLines: []string{
4746
"func foo() {",
4847
"\tfmt.Println(\"ccc\")",
@@ -63,7 +62,7 @@ func TestCodeClimate_Print(t *testing.T) {
6362
err := printer.Print(issues)
6463
require.NoError(t, err)
6564

66-
expected := `[{"description":"linter-a: some issue","severity":"warning","fingerprint":"BA73C5DF4A6FD8462FFF1D3140235777","location":{"path":"path/to/filea.go","lines":{"begin":10}}},{"description":"linter-b: another issue","severity":"error","fingerprint":"0777B4FE60242BD8B2E9B7E92C4B9521","location":{"path":"path/to/fileb.go","lines":{"begin":300}}},{"description":"linter-c: issue c","severity":"critical","fingerprint":"BEE6E9FBB6BFA4B7DB9FB036697FB036","location":{"path":"path/to/filec.go","lines":{"begin":200}}}]
65+
expected := `[{"description":"some issue","check_name":"linter-a","severity":"warning","fingerprint":"BA73C5DF4A6FD8462FFF1D3140235777","location":{"path":"path/to/filea.go","lines":{"begin":10}}},{"description":"another issue","check_name":"linter-b","severity":"error","fingerprint":"0777B4FE60242BD8B2E9B7E92C4B9521","location":{"path":"path/to/fileb.go","lines":{"begin":300}}},{"description":"issue c","check_name":"golangci-lint","severity":"critical","fingerprint":"BEE6E9FBB6BFA4B7DB9FB036697FB036","location":{"path":"path/to/filec.go","lines":{"begin":200}}}]
6766
`
6867

6968
assert.Equal(t, expected, buf.String())

pkg/result/issue.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,6 @@ func (i *Issue) GetLineRange() Range {
8181
return *i.LineRange
8282
}
8383

84-
func (i *Issue) Description() string {
85-
return fmt.Sprintf("%s: %s", i.FromLinter, i.Text)
86-
}
87-
8884
func (i *Issue) Fingerprint() string {
8985
firstLine := ""
9086
if len(i.SourceLines) > 0 {

0 commit comments

Comments
 (0)