Adds .golangci.yml (errcheck, govet, staticcheck, revive, gocyclo, gocritic, nilerr, errorlint, etc.). Fixes all lint issues found: - RpcError/wrapRpc renamed to RPCError/wrapRPC (revive var-naming) - Shadow vars resolved in process.go, outline.go, project.go - nilerr suppressed with justifying comments in git/collect.go and auto/detector.go (WalkDir / intentional empty-returns) - if-else chain rewritten as switch in format.go (gocritic) - gofmt applied to detector.go and client.go Adds .github/workflows/ci.yml: lint (ubuntu), build+vet+test matrix (ubuntu/windows/macos), and Roslyn helper build (windows). Validated with actionlint (0 issues). Adds .githooks/pre-commit + pre-commit.ps1 for local pre-commit checks. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
70 lines
1.9 KiB
YAML
70 lines
1.9 KiB
YAML
run:
|
|
timeout: 3m
|
|
tests: true
|
|
go: "1.26"
|
|
|
|
output:
|
|
formats:
|
|
- format: colored-line-number
|
|
print-issued-lines: true
|
|
print-linter-name: true
|
|
sort-results: true
|
|
|
|
linters:
|
|
disable-all: true
|
|
enable:
|
|
- errcheck # unhandled errors
|
|
- govet # official compiler checks
|
|
- ineffassign # useless assignments
|
|
- staticcheck # bugs and simplifications
|
|
- unused # dead code
|
|
- gofmt # formatting
|
|
- goimports # import organization
|
|
- misspell # typos in strings/comments
|
|
- revive # golint successor
|
|
- gocyclo # high cyclomatic complexity
|
|
- gocritic # additional checks
|
|
- bodyclose # http.Response.Body closed
|
|
- nilerr # returning nil when err intended
|
|
- errorlint # non-wrappable errors
|
|
|
|
linters-settings:
|
|
gocyclo:
|
|
min-complexity: 15
|
|
govet:
|
|
enable-all: true
|
|
disable:
|
|
- fieldalignment # unnecessary noise
|
|
revive:
|
|
rules:
|
|
- name: var-naming
|
|
- name: exported
|
|
arguments: ["disableStutteringCheck"] # allows ctx.Context
|
|
- name: error-return
|
|
- name: error-naming
|
|
- name: unexported-return
|
|
- name: indent-error-flow
|
|
- name: unreachable-code
|
|
|
|
issues:
|
|
exclude-dirs:
|
|
- tools/roslyn-helper # C# code, ignore
|
|
- vendor
|
|
- bin
|
|
exclude-rules:
|
|
# Allow errcheck in cobra command handlers — cobra's RunE owns error printing
|
|
- path: cmd/
|
|
linters: [errcheck]
|
|
# Allow higher complexity in plugin format functions (inherently procedural)
|
|
- path: internal/plugins/.*/format\.go
|
|
linters: [gocyclo]
|
|
text: "cyclomatic complexity"
|
|
# Allow higher complexity in plugin collect/detect logic
|
|
- path: internal/plugins/.*/detect
|
|
linters: [gocyclo]
|
|
text: "cyclomatic complexity"
|
|
|
|
max-issues-per-linter: 0
|
|
max-same-issues: 0
|
|
new: false
|