mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-27 06:03:48 +03:00
v2: Project-and-CI-wide linter config (#2812)
* v2: split golangci-lint configuration into its own file to allow code editors to take advantage of it * v2: simplify code * v2: set the correct lint output formatting * v2: invert the logic of linter's configuration of output formatting to allow the editor convenience over CI-specific customization. Customize the output format in CI by passing the flag. * v2: remove irrelevant golangci-lint config
This commit is contained in:
parent
abf5ab340e
commit
e3726588b4
5 changed files with 52 additions and 4 deletions
49
.golangci.yml
Normal file
49
.golangci.yml
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
linters-settings:
|
||||||
|
errcheck:
|
||||||
|
ignore: fmt:.*,io/ioutil:^Read.*,github.com/caddyserver/caddy/v2/caddyconfig:RegisterAdapter,github.com/caddyserver/caddy/v2:RegisterModule
|
||||||
|
ignoretests: true
|
||||||
|
misspell:
|
||||||
|
locale: US
|
||||||
|
|
||||||
|
linters:
|
||||||
|
enable:
|
||||||
|
- bodyclose
|
||||||
|
- errcheck
|
||||||
|
- gofmt
|
||||||
|
- goimports
|
||||||
|
- gosec
|
||||||
|
- ineffassign
|
||||||
|
- misspell
|
||||||
|
|
||||||
|
run:
|
||||||
|
# default concurrency is a available CPU number.
|
||||||
|
# concurrency: 4 # explicitly omit this value to fully utilize available resources.
|
||||||
|
deadline: 5m
|
||||||
|
issues-exit-code: 1
|
||||||
|
tests: false
|
||||||
|
|
||||||
|
# output configuration options
|
||||||
|
output:
|
||||||
|
format: 'colored-line-number'
|
||||||
|
print-issued-lines: true
|
||||||
|
print-linter-name: true
|
||||||
|
|
||||||
|
issues:
|
||||||
|
exclude-rules:
|
||||||
|
# we aren't calling unknown URL
|
||||||
|
- text: "G107" # G107: Url provided to HTTP request as taint input
|
||||||
|
linters:
|
||||||
|
- gosec
|
||||||
|
# as a web server that's expected to handle any template, this is totally in the hands of the user.
|
||||||
|
- text: "G203" # G203: Use of unescaped data in HTML templates
|
||||||
|
linters:
|
||||||
|
- gosec
|
||||||
|
# we're shelling out to known commands, not relying on user-defined input.
|
||||||
|
- text: "G204" # G204: Audit use of command execution
|
||||||
|
linters:
|
||||||
|
- gosec
|
||||||
|
# the choice of weakrand is deliberate, hence the named import "weakrand"
|
||||||
|
- path: modules/caddyhttp/reverseproxy/selectionpolicies.go
|
||||||
|
text: "G404" # G404: Insecure random number source (rand)
|
||||||
|
linters:
|
||||||
|
- gosec
|
|
@ -89,7 +89,8 @@ steps:
|
||||||
displayName: Get dependencies
|
displayName: Get dependencies
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
(golangci-lint run --out-format junit-xml -E gofmt -E goimports -E misspell) > test-results/lint-result.xml
|
# its behavior is governed by .golangci.yml
|
||||||
|
(golangci-lint run --out-format junit-xml) > test-results/lint-result.xml
|
||||||
exit 0
|
exit 0
|
||||||
workingDirectory: '$(modulePath)'
|
workingDirectory: '$(modulePath)'
|
||||||
continueOnError: true
|
continueOnError: true
|
||||||
|
|
|
@ -107,7 +107,6 @@ func (l *lexer) next() bool {
|
||||||
escaped = false
|
escaped = false
|
||||||
} else {
|
} else {
|
||||||
if ch == '"' {
|
if ch == '"' {
|
||||||
quoted = false
|
|
||||||
return makeToken()
|
return makeToken()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,7 +118,6 @@ func loadConfig(configFile, adapterName string) ([]byte, error) {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
// okay, no default Caddyfile; pretend like this never happened
|
// okay, no default Caddyfile; pretend like this never happened
|
||||||
cfgAdapter = nil
|
cfgAdapter = nil
|
||||||
err = nil
|
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
// default Caddyfile exists, but error reading it
|
// default Caddyfile exists, but error reading it
|
||||||
return nil, fmt.Errorf("reading default Caddyfile: %v", err)
|
return nil, fmt.Errorf("reading default Caddyfile: %v", err)
|
||||||
|
|
|
@ -169,7 +169,7 @@ func (s *Server) enforcementHandler(w http.ResponseWriter, r *http.Request, next
|
||||||
if err != nil {
|
if err != nil {
|
||||||
hostname = r.Host // OK; probably lacked port
|
hostname = r.Host // OK; probably lacked port
|
||||||
}
|
}
|
||||||
if strings.ToLower(r.TLS.ServerName) != strings.ToLower(hostname) {
|
if !strings.EqualFold(r.TLS.ServerName, hostname) {
|
||||||
err := fmt.Errorf("strict host matching: TLS ServerName (%s) and HTTP Host (%s) values differ",
|
err := fmt.Errorf("strict host matching: TLS ServerName (%s) and HTTP Host (%s) values differ",
|
||||||
r.TLS.ServerName, hostname)
|
r.TLS.ServerName, hostname)
|
||||||
r.Close = true
|
r.Close = true
|
||||||
|
|
Loading…
Reference in a new issue