ctx/.golangci.yml
Ricardo Carneiro 22f6e8fde9 chore: add golangci-lint, GitHub Actions CI, and pre-commit hooks
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>
2026-04-28 00:30:54 -03:00

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