Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8889464

Browse files
committed
Format output text for rule results to improve readability
Previously, the output text for the rule results had no formatting to speak of. It was simply a single, often long, line of text. Wrapping of this text was at the mercy of whatever displayed it. When there were multiple rule results in the output it melded into a wall of dense text.The readability is improved by two formatting changes:- Format the rule level (e.g., ERROR, WARNING) text and the rule message text into separate columns- Wrap the rule message text, maintaining the column alignment after line breaksThis is accomplished by putting the result output for each rule is made into a single row, borderless table.
1 parent24d0055 commit8889464

File tree

4 files changed

+29
-6
lines changed

4 files changed

+29
-6
lines changed

‎go.mod‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ require (
2828
github.com/kevinburke/ssh_configv0.0.0-20201106050909-4977a11b4351// indirect
2929
github.com/magiconair/propertiesv1.8.4// indirect
3030
github.com/mitchellh/mapstructurev1.4.0// indirect
31+
github.com/olekukonko/tablewriterv0.0.5
3132
github.com/ory/go-accv0.2.6// indirect
3233
github.com/ory/herodotv0.9.1// indirect
3334
github.com/ory/jsonschema/v3v3.0.1

‎go.sum‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,8 @@ github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn
813813
github.com/oleiade/reflectionsv1.0.0/go.mod h1:RbATFBbKYkVdqmSFtx13Bb/tVhR0lgOBXunWTZKeL4w=
814814
github.com/oleksandr/bonjourv0.0.0-20160508152359-5dcf00d8b228 h1:Cvfd2dOlXIPTeEkOT/h8PyK4phBngOM4at9/jlgy7d4=
815815
github.com/oleksandr/bonjourv0.0.0-20160508152359-5dcf00d8b228/go.mod h1:MGuVJ1+5TX1SCoO2Sx0eAnjpdRytYla2uC1YIZfkC9c=
816+
github.com/olekukonko/tablewriterv0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
817+
github.com/olekukonko/tablewriterv0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
816818
github.com/onsi/ginkgov1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
817819
github.com/onsi/ginkgov1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
818820
github.com/onsi/ginkgov1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=

‎internal/result/result.go‎

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"encoding/json"
2222
"fmt"
2323
"io"
24+
"strings"
2425
"text/template"
2526

2627
"github.com/arduino/arduino-lint/internal/configuration"
@@ -30,6 +31,7 @@ import (
3031
"github.com/arduino/arduino-lint/internal/rule/rulelevel"
3132
"github.com/arduino/arduino-lint/internal/rule/ruleresult"
3233
"github.com/arduino/go-paths-helper"
34+
"github.com/olekukonko/tablewriter"
3335
)
3436

3537
// Results is the global instance of the rule results result.Type struct
@@ -111,16 +113,32 @@ func (results *Type) Record(lintedProject project.Type, ruleConfiguration ruleco
111113
}
112114

113115
summaryText:=""
116+
117+
formatRuleText:=func(level rulelevel.Type,messagestring)string {
118+
width:=120// Wrap text to this width
119+
prefix:=fmt.Sprintf("%s: ",level)
120+
121+
formattedOutput:=&strings.Builder{}
122+
table:=tablewriter.NewWriter(formattedOutput)
123+
table.SetBorder(false)
124+
table.SetColumnSeparator("")
125+
table.SetNoWhiteSpace(true)
126+
table.SetColWidth(width-len(prefix))
127+
table.Append([]string{prefix,message})
128+
table.Render()
129+
130+
returnformattedOutput.String()
131+
}
132+
114133
ifconfiguration.Verbose() {
115-
summaryText=fmt.Sprintf("Rule %s result: %s",ruleConfiguration.ID,ruleResult)
134+
summaryText=fmt.Sprintf("Rule %s result: %s\n",ruleConfiguration.ID,ruleResult)
116135
// Add explanation of rule result if present.
117136
ifruleMessage!="" {
118-
summaryText+=fmt.Sprintf("\n%s: %s",ruleLevel,ruleMessage)
137+
summaryText+=formatRuleText(ruleLevel,ruleMessage)
119138
}
120-
summaryText+="\n"
121139
}else {
122140
ifruleResult==ruleresult.Fail {
123-
summaryText=fmt.Sprintf("%s: %s(Rule %s)\n",ruleLevel,ruleMessage,ruleConfiguration.ID)
141+
summaryText=formatRuleText(ruleLevel,fmt.Sprintf("%s(Rule %s)",ruleMessage,ruleConfiguration.ID))
124142
}
125143
}
126144

‎internal/result/result_test.go‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,17 @@ func TestRecord(t *testing.T) {
7777
flags.Set("verbose","true")
7878
require.Nil(t,configuration.Initialize(flags,projectPaths))
7979
summaryText:=results.Record(lintedProject,ruleConfiguration,ruleresult.Fail,ruleOutput)
80-
assert.Equal(t,fmt.Sprintf("Rule %s result: %s\n%s: %s\n",ruleConfiguration.ID,ruleresult.Fail,rulelevel.Error,message(ruleConfiguration.MessageTemplate,ruleOutput)),summaryText)
80+
outputAssertion:="Rule LS001 result: fail\nERROR: Path does not contain a valid Arduino library. See:\n https://arduino.github.io/arduino-cli/latest/library-specification\n"
81+
assert.Equal(t,outputAssertion,summaryText)
8182
summaryText=results.Record(lintedProject,ruleConfiguration,ruleresult.NotRun,ruleOutput)
8283
assert.Equal(t,fmt.Sprintf("Rule %s result: %s\n%s: %s\n",ruleConfiguration.ID,ruleresult.NotRun,rulelevel.Notice,ruleOutput),summaryText,"Non-fail result should not use message")
8384
summaryText=results.Record(lintedProject,ruleConfiguration,ruleresult.Pass,"")
8485
assert.Equal(t,fmt.Sprintf("Rule %s result: %s\n",ruleConfiguration.ID,ruleresult.Pass),summaryText,"Non-failure result with no rule function output should only use preface")
8586
flags.Set("verbose","false")
8687
require.Nil(t,configuration.Initialize(flags,projectPaths))
8788
summaryText=results.Record(lintedProject,ruleConfiguration,ruleresult.Fail,ruleOutput)
88-
assert.Equal(t,fmt.Sprintf("%s: %s (Rule %s)\n",rulelevel.Error,message(ruleConfiguration.MessageTemplate,ruleOutput),ruleConfiguration.ID),summaryText)
89+
outputAssertion="ERROR: Path does not contain a valid Arduino library. See:\n https://arduino.github.io/arduino-cli/latest/library-specification (Rule LS001)\n"
90+
assert.Equal(t,outputAssertion,summaryText)
8991
summaryText=results.Record(lintedProject,ruleConfiguration,ruleresult.NotRun,ruleOutput)
9092
assert.Equal(t,"",summaryText,"Non-fail result should not result in output in non-verbose mode")
9193
summaryText=results.Record(lintedProject,ruleConfiguration,ruleresult.Pass,"")

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp