Skip to content

Commit 874e41b

Browse files
feat(formatter)!: json does not classify issues by severity
json results in following structure { "input": <commit msg>, "valid: <is valid>, "issues": [ { "name": <rule name> "severity": <severity> "messages": []string } ] }
1 parent 2faff74 commit 874e41b

File tree

1 file changed

+17
-21
lines changed

1 file changed

+17
-21
lines changed

formatter/json.go

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package formatter
22

33
import (
44
"encoding/json"
5+
"fmt"
56
"strings"
67

78
"github.com/conventionalcommit/commitlint/lint"
@@ -14,40 +15,35 @@ type JSONFormatter struct{}
1415
func (f *JSONFormatter) Name() string { return "json" }
1516

1617
// Format formats the lint.Result
17-
func (f *JSONFormatter) Format(res *lint.Result) (string, error) {
18+
func (f *JSONFormatter) Format(result *lint.Result) (string, error) {
1819
output := make(map[string]interface{}, 4)
1920

20-
errs, warns, others := bySeverity(res)
21+
output["input"] = result.Input()
22+
output["valid"] = result.IsOK()
23+
output["issues"] = f.formatIssue(result.Issues())
2124

22-
output["input"] = res.Input()
23-
output["status"] = res.IsOK()
24-
25-
output["errors"] = f.formRuleFailure(errs, false)
26-
output["warnings"] = f.formRuleFailure(warns, false)
27-
output["others"] = f.formRuleFailure(others, true)
28-
29-
msg, err := json.Marshal(output)
25+
formatted, err := json.Marshal(output)
3026
if err != nil {
31-
return "", err
27+
return "", fmt.Errorf("json formatting failed: %w", err)
3228
}
33-
return strings.Trim(string(msg), "\n"), nil
29+
return strings.Trim(string(formatted), "\n"), nil
3430
}
3531

36-
func (f *JSONFormatter) formRuleFailure(res []*lint.Issue, includeSev bool) []map[string]interface{} {
37-
outs := make([]map[string]interface{}, 0, len(res))
32+
func (f *JSONFormatter) formatIssue(issues []*lint.Issue) []interface{} {
33+
formattedIssues := make([]interface{}, 0, len(issues))
3834

39-
for _, r := range res {
35+
for _, issue := range issues {
4036
output := make(map[string]interface{})
4137

42-
output["name"] = r.Name()
43-
output["messages"] = r.Message()
38+
output["name"] = issue.Name()
39+
output["severity"] = issue.Severity()
4440

45-
if includeSev {
46-
output["severity"] = r.Severity()
41+
if len(issue.Message()) > 0 {
42+
output["messages"] = issue.Message()
4743
}
4844

49-
outs = append(outs, output)
45+
formattedIssues = append(formattedIssues, output)
5046
}
5147

52-
return outs
48+
return formattedIssues
5349
}

0 commit comments

Comments
 (0)