Skip to content

Commit b2df2f4

Browse files
authored
Add new linter canonicalheader (#4672)
1 parent e953689 commit b2df2f4

File tree

8 files changed

+62
-0
lines changed

8 files changed

+62
-0
lines changed

.golangci.next.reference.yml

+2
Original file line numberDiff line numberDiff line change
@@ -2525,6 +2525,7 @@ linters:
25252525
- asciicheck
25262526
- bidichk
25272527
- bodyclose
2528+
- canonicalheader
25282529
- containedctx
25292530
- contextcheck
25302531
- copyloopvar
@@ -2639,6 +2640,7 @@ linters:
26392640
- asciicheck
26402641
- bidichk
26412642
- bodyclose
2643+
- canonicalheader
26422644
- containedctx
26432645
- contextcheck
26442646
- copyloopvar

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ require (
6565
github.com/kulti/thelper v0.6.3
6666
github.com/kunwardeep/paralleltest v1.0.10
6767
github.com/kyoh86/exportloopref v0.1.11
68+
github.com/lasiar/canonicalheader v1.0.5
6869
github.com/ldez/gomoddirectives v0.2.4
6970
github.com/ldez/tagliatelle v0.5.0
7071
github.com/leonklingele/grouper v1.1.2

go.sum

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jsonschema/golangci.next.jsonschema.json

+1
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@
215215
"asciicheck",
216216
"bidichk",
217217
"bodyclose",
218+
"canonicalheader",
218219
"containedctx",
219220
"contextcheck",
220221
"copyloopvar",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package canonicalheader
2+
3+
import (
4+
"github.com/lasiar/canonicalheader"
5+
"golang.org/x/tools/go/analysis"
6+
7+
"github.com/golangci/golangci-lint/pkg/goanalysis"
8+
)
9+
10+
func New() *goanalysis.Linter {
11+
a := canonicalheader.Analyzer
12+
13+
return goanalysis.NewLinter(
14+
a.Name,
15+
a.Doc,
16+
[]*analysis.Analyzer{a},
17+
nil,
18+
).WithLoadMode(goanalysis.LoadModeTypesInfo)
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package canonicalheader_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/golangci/golangci-lint/test/testshared/integration"
7+
)
8+
9+
func TestFromTestdata(t *testing.T) {
10+
integration.RunTestdata(t)
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//golangcitest:args -Ecanonicalheader
2+
package testdata
3+
4+
import "net/http"
5+
6+
func canonicalheader() {
7+
v := http.Header{}
8+
9+
v.Get("Test-HEader") // want `non-canonical header "Test-HEader", instead use: "Test-Header"`
10+
v.Set("Test-HEader", "value") // want `non-canonical header "Test-HEader", instead use: "Test-Header"`
11+
v.Add("Test-HEader", "value") // want `non-canonical header "Test-HEader", instead use: "Test-Header"`
12+
v.Del("Test-HEader") // want `non-canonical header "Test-HEader", instead use: "Test-Header"`
13+
v.Values("Test-HEader") // want `non-canonical header "Test-HEader", instead use: "Test-Header"`
14+
15+
v.Set("Test-Header", "value")
16+
v.Add("Test-Header", "value")
17+
v.Del("Test-Header")
18+
v.Values("Test-Header")
19+
}

pkg/lint/lintersdb/builder_linter.go

+7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/golangci/golangci-lint/pkg/golinters/asciicheck"
88
"github.com/golangci/golangci-lint/pkg/golinters/bidichk"
99
"github.com/golangci/golangci-lint/pkg/golinters/bodyclose"
10+
"github.com/golangci/golangci-lint/pkg/golinters/canonicalheader"
1011
"github.com/golangci/golangci-lint/pkg/golinters/containedctx"
1112
"github.com/golangci/golangci-lint/pkg/golinters/contextcheck"
1213
"github.com/golangci/golangci-lint/pkg/golinters/copyloopvar"
@@ -154,6 +155,12 @@ func (LinterBuilder) Build(cfg *config.Config) ([]*linter.Config, error) {
154155
WithPresets(linter.PresetPerformance, linter.PresetBugs).
155156
WithURL("https://github.com/timakin/bodyclose"),
156157

158+
linter.NewConfig(canonicalheader.New()).
159+
WithSince("v1.58.0").
160+
WithPresets(linter.PresetStyle).
161+
WithLoadForGoAnalysis().
162+
WithURL("https://github.com/lasiar/canonicalHeader"),
163+
157164
linter.NewConfig(containedctx.New()).
158165
WithSince("1.44.0").
159166
WithLoadForGoAnalysis().

0 commit comments

Comments
 (0)