mirror of
https://github.com/moonD4rk/HackBrowserData.git
synced 2026-08-20 00:07:11 +02:00
chore: update CI, golangci-lint, and CLAUDE.md (#511)
* chore: update CI, golangci-lint, and CLAUDE.md * fix: resolve CI failures on Windows test and lint * fix: resolve Windows test path and main.go line length lint issues * fix: auto-format log/ with gofumpt, exclude pre-refactoring lint issues * fix: resolve remaining lint issues, remove unnecessary exclusions * fix: remove invalid G117 gosec rule, use text exclusion for secret pattern * fix: align CI golangci-lint version with local (v2.4 -> v2.10)
This commit is contained in:
+190
-246
@@ -1,272 +1,216 @@
|
||||
# golangci-lint configuration
|
||||
# Compatible with golangci-lint v2.4+ and Go 1.20
|
||||
# This is a best practice starter configuration that can be gradually enhanced
|
||||
# golangci-lint v2 configuration
|
||||
# Compatible with Go 1.20
|
||||
version: "2"
|
||||
|
||||
run:
|
||||
# Go version - fixed to 1.20
|
||||
go: "1.20"
|
||||
# Timeout setting
|
||||
timeout: "5m"
|
||||
# Allow parallel runners
|
||||
allow-parallel-runners: true
|
||||
# Module download mode
|
||||
modules-download-mode: "mod"
|
||||
|
||||
# Code formatters configuration
|
||||
formatters:
|
||||
enable:
|
||||
- gofmt # Go official formatter
|
||||
- goimports # Automatic import management
|
||||
- gci # Import grouping and sorting
|
||||
|
||||
settings:
|
||||
gofmt:
|
||||
# Simplify code
|
||||
simplify: true
|
||||
|
||||
goimports:
|
||||
# Local package prefix (must be array in v2)
|
||||
local-prefixes:
|
||||
- github.com/moond4rk/hackbrowserdata
|
||||
|
||||
gci:
|
||||
# Import section order
|
||||
sections:
|
||||
- standard # Standard library
|
||||
- default # Third-party libraries
|
||||
- prefix(github.com/moond4rk/hackbrowserdata) # Local packages
|
||||
|
||||
# Linter configuration
|
||||
linters:
|
||||
# Use standard linters as base
|
||||
default: standard
|
||||
|
||||
# Additional enabled linters (best practices recommended)
|
||||
default: none
|
||||
enable:
|
||||
# Error checking
|
||||
- errcheck # Check unhandled errors
|
||||
- errorlint # Improve error handling
|
||||
# Default tier
|
||||
- errcheck
|
||||
- govet
|
||||
- staticcheck
|
||||
- ineffassign
|
||||
- unused
|
||||
|
||||
# Bug detection
|
||||
- errorlint
|
||||
- gosec
|
||||
- sqlclosecheck
|
||||
|
||||
# Code quality
|
||||
- ineffassign # Detect ineffective assignments
|
||||
- revive # Code quality checks
|
||||
- misspell # Spell checking
|
||||
- unconvert # Detect unnecessary type conversions
|
||||
- depguard
|
||||
- dogsled
|
||||
- dupl
|
||||
- errname
|
||||
- funlen
|
||||
- gocheckcompilerdirectives
|
||||
- gochecknoinits
|
||||
- goconst
|
||||
- gocritic
|
||||
- godox
|
||||
- goprintffuncname
|
||||
- lll
|
||||
- misspell
|
||||
- nakedret
|
||||
- revive
|
||||
- testifylint
|
||||
- unconvert
|
||||
- unparam
|
||||
- usestdlibvars
|
||||
- whitespace
|
||||
|
||||
# Security related
|
||||
- gosec # Security vulnerability checks
|
||||
# Complexity
|
||||
- gocognit
|
||||
|
||||
# Performance related
|
||||
- prealloc # Slice preallocation optimization
|
||||
# Note: copyloopvar, intrange, modernize, perfsprint require Go 1.22+
|
||||
# They will be enabled when Go version constraint is lifted
|
||||
|
||||
# Code standards
|
||||
- whitespace # Whitespace checks
|
||||
|
||||
# Best practices
|
||||
- gocritic # Comprehensive code analysis
|
||||
- goprintffuncname # Printf function naming checks
|
||||
|
||||
# Dependency management
|
||||
- depguard # Package dependency control
|
||||
- gomodguard # Go module dependency control
|
||||
|
||||
# Code complexity (optional for initial setup)
|
||||
- funlen # Function length checks
|
||||
- goconst # Magic number checks
|
||||
|
||||
# Explicitly disabled linters (to avoid false positives and noise)
|
||||
disable:
|
||||
- exhaustruct # Struct field completeness check (too strict)
|
||||
- wrapcheck # Error wrapping check (project specific)
|
||||
- testpackage # Test package separation (not conventional)
|
||||
- paralleltest # Parallel test check (not always needed)
|
||||
- nlreturn # Newline before return (too strict)
|
||||
- wsl # Whitespace rules (too strict)
|
||||
- gochecknoglobals # No global variables (sometimes needed)
|
||||
- gochecknoinits # No init functions (sometimes needed)
|
||||
- exhaustive # Enum completeness (too strict initially)
|
||||
- unused # Temporarily disabled for gradual cleanup
|
||||
|
||||
# Exclusion configuration
|
||||
exclusions:
|
||||
# Paths to exclude
|
||||
paths:
|
||||
- vendor
|
||||
- third_party
|
||||
- testdata
|
||||
- ".*\\.pb\\.go$"
|
||||
- ".*\\.gen\\.go$"
|
||||
|
||||
# Use default exclusion presets
|
||||
presets:
|
||||
- comments
|
||||
- common-false-positives
|
||||
- legacy
|
||||
- std-error-handling
|
||||
|
||||
# Exclusion rules
|
||||
rules:
|
||||
# Test file exclusions
|
||||
- path: '_test\.go'
|
||||
linters:
|
||||
- dupl
|
||||
- funlen
|
||||
- goconst
|
||||
- gosec
|
||||
- errcheck
|
||||
|
||||
# Generated file exclusions
|
||||
- path: '\.pb\.go$'
|
||||
linters:
|
||||
- all
|
||||
|
||||
# Vendor directory exclusions
|
||||
- path: "vendor"
|
||||
linters:
|
||||
- all
|
||||
|
||||
# Defer statement exclusions
|
||||
- source: "defer"
|
||||
linters:
|
||||
- errcheck
|
||||
|
||||
# SQL query exclusions
|
||||
- text: "SELECT"
|
||||
linters:
|
||||
- gosec
|
||||
|
||||
# Package comment exclusions
|
||||
- text: "should have a package comment"
|
||||
linters:
|
||||
- staticcheck
|
||||
- revive
|
||||
|
||||
# Types package exclusions
|
||||
- path: "types/types.go"
|
||||
linters:
|
||||
- revive
|
||||
|
||||
# Unused code exclusions (temporary)
|
||||
- text: "is unused"
|
||||
linters:
|
||||
- unused
|
||||
- staticcheck
|
||||
|
||||
# Linter specific settings
|
||||
settings:
|
||||
# Error check settings
|
||||
errcheck:
|
||||
# Check type assertion errors
|
||||
check-type-assertions: true
|
||||
# Don't check blank identifier
|
||||
check-blank: false
|
||||
# Excluded functions - expanded list to reduce noise
|
||||
exclude-functions:
|
||||
- "os.Remove"
|
||||
- "os.RemoveAll"
|
||||
- "io.Copy(os.Stdout)"
|
||||
- "(*database/sql.DB).Close"
|
||||
- "(*database/sql.Rows).Close"
|
||||
- "(*github.com/syndtr/goleveldb/leveldb.DB).Close"
|
||||
- "defer"
|
||||
- "(net/http.ResponseWriter).Write"
|
||||
|
||||
# Security check settings
|
||||
gosec:
|
||||
# Excluded rules (adjust based on project needs)
|
||||
excludes:
|
||||
- G101 # Hardcoded credentials - too many false positives
|
||||
- G104 # Error checking (handled by errcheck)
|
||||
- G304 # File path traversal (needed for project features)
|
||||
- G306 # Poor file permissions (test files)
|
||||
- G401 # Weak cryptographic algorithm (needed for compatibility)
|
||||
- G405 # Weak cryptographic algorithm
|
||||
- G501 # Import crypto/md5 (needed for compatibility)
|
||||
- G502 # Import crypto/des (needed for compatibility)
|
||||
- G505 # Import crypto/sha1 (needed for compatibility)
|
||||
|
||||
# Go vet settings
|
||||
govet:
|
||||
enable-all: true
|
||||
disable:
|
||||
- fieldalignment # Field alignment optimization (premature optimization)
|
||||
- shadow # Variable shadowing (sometimes intentional)
|
||||
|
||||
# Static check settings
|
||||
staticcheck:
|
||||
# Check all except the ones we exclude
|
||||
checks:
|
||||
[
|
||||
"all",
|
||||
"-ST1000",
|
||||
"-ST1003",
|
||||
"-ST1016",
|
||||
"-ST1020",
|
||||
"-ST1021",
|
||||
"-ST1022",
|
||||
]
|
||||
|
||||
# Revive settings
|
||||
revive:
|
||||
severity: warning
|
||||
depguard:
|
||||
rules:
|
||||
- name: unused-parameter
|
||||
disabled: true # Interface implementations may not use all parameters
|
||||
- name: var-naming
|
||||
disabled: true # Too many false positives with types package
|
||||
- name: package-comments
|
||||
disabled: true # Package comments are not mandatory
|
||||
- name: exported
|
||||
disabled: true # Not all exported types need comments initially
|
||||
|
||||
# Function length settings
|
||||
blocked:
|
||||
deny:
|
||||
- pkg: "github.com/pkg/errors"
|
||||
desc: Use fmt.Errorf with %w or errors stdlib instead.
|
||||
- pkg: "io/ioutil"
|
||||
desc: Deprecated since Go 1.16. Use io and os packages instead.
|
||||
- pkg: "github.com/instana/testify"
|
||||
desc: Use github.com/stretchr/testify instead.
|
||||
dupl:
|
||||
threshold: 100
|
||||
funlen:
|
||||
lines: 150 # Increased for existing code
|
||||
statements: 80 # Increased for existing code
|
||||
ignore-comments: true
|
||||
|
||||
# Code critic settings
|
||||
lines: -1
|
||||
statements: 50
|
||||
goconst:
|
||||
min-len: 2
|
||||
min-occurrences: 3
|
||||
gocritic:
|
||||
enabled-tags:
|
||||
- diagnostic
|
||||
- experimental
|
||||
- opinionated
|
||||
- performance
|
||||
- style
|
||||
disabled-checks:
|
||||
- hugeParam # Large value parameters (sometimes needed)
|
||||
- rangeValCopy # Range value copy (minimal performance impact)
|
||||
- commentedOutCode # Allow commented code for now
|
||||
- ifElseChain # Allow if-else chains
|
||||
settings:
|
||||
rangeExprCopy:
|
||||
sizeThreshold: 512
|
||||
|
||||
# Dependency guard settings
|
||||
depguard:
|
||||
rules:
|
||||
main:
|
||||
files:
|
||||
- $all
|
||||
deny:
|
||||
- pkg: "github.com/pkg/errors"
|
||||
desc: "Use standard library errors package instead"
|
||||
- pkg: "io/ioutil"
|
||||
desc: "io/ioutil is deprecated, use io or os package"
|
||||
|
||||
# Spell check settings
|
||||
- dupImport
|
||||
- hugeParam
|
||||
- rangeValCopy
|
||||
- ifElseChain
|
||||
- octalLiteral
|
||||
- whyNoLint
|
||||
- singleCaseSwitch
|
||||
- exitAfterDefer
|
||||
- commentedOutCode
|
||||
lll:
|
||||
line-length: 140
|
||||
gocognit:
|
||||
min-complexity: 30
|
||||
godox:
|
||||
keywords:
|
||||
- FIXME
|
||||
govet:
|
||||
enable:
|
||||
- nilness
|
||||
errorlint:
|
||||
asserts: false
|
||||
gosec:
|
||||
excludes:
|
||||
- G101
|
||||
- G104
|
||||
- G304
|
||||
- G401
|
||||
- G405
|
||||
- G501
|
||||
- G502
|
||||
- G505
|
||||
- G115
|
||||
- G117
|
||||
- G204
|
||||
errcheck:
|
||||
check-type-assertions: true
|
||||
exclude-functions:
|
||||
- "os.Remove"
|
||||
- "os.RemoveAll"
|
||||
- "(*database/sql.DB).Close"
|
||||
- "(*database/sql.Rows).Close"
|
||||
misspell:
|
||||
locale: US
|
||||
ignore-rules:
|
||||
- behaviour # British spelling
|
||||
revive:
|
||||
rules:
|
||||
- name: indent-error-flow
|
||||
- name: unexported-return
|
||||
disabled: true
|
||||
- name: unused-parameter
|
||||
disabled: true
|
||||
- name: package-comments
|
||||
disabled: true
|
||||
- name: exported
|
||||
disabled: true
|
||||
staticcheck:
|
||||
checks:
|
||||
- "all"
|
||||
- "-ST1000"
|
||||
- "-ST1003"
|
||||
- "-ST1016"
|
||||
- "-ST1020"
|
||||
- "-ST1021"
|
||||
- "-ST1022"
|
||||
|
||||
# goconst settings - make it less aggressive
|
||||
goconst:
|
||||
min-len: 5 # Minimum length of string constant
|
||||
min-occurrences: 5 # Increased from default 3
|
||||
exclusions:
|
||||
presets:
|
||||
- comments
|
||||
- std-error-handling
|
||||
- common-false-positives
|
||||
- legacy
|
||||
rules:
|
||||
- path: _test\.go
|
||||
linters:
|
||||
- dupl
|
||||
- funlen
|
||||
- gosec
|
||||
- errcheck
|
||||
- testifylint
|
||||
- lll
|
||||
- source: "defer"
|
||||
linters:
|
||||
- errcheck
|
||||
- text: "SELECT"
|
||||
linters:
|
||||
- gosec
|
||||
# Temporary: known issues in pre-refactoring code (will be removed during refactoring)
|
||||
- text: "result 0 .* is always nil"
|
||||
linters:
|
||||
- unparam
|
||||
- text: "result 0 .* is never used"
|
||||
linters:
|
||||
- unparam
|
||||
- path: "browser/firefox/firefox.go"
|
||||
text: "field .* is unused"
|
||||
linters:
|
||||
- unused
|
||||
- path: "browserdata/sessionstorage/"
|
||||
text: "is unused"
|
||||
linters:
|
||||
- unused
|
||||
- path: "cmd/hack-browser-data/main.go"
|
||||
linters:
|
||||
- lll
|
||||
# Temporary: pre-refactoring code issues (all will be rewritten)
|
||||
- path: "browserdata/"
|
||||
linters:
|
||||
- dupl
|
||||
- gochecknoinits
|
||||
- goconst
|
||||
- lll
|
||||
- path: "browser/firefox/"
|
||||
linters:
|
||||
- gocritic
|
||||
- path: "crypto/"
|
||||
linters:
|
||||
- gocritic
|
||||
- path: "utils/chainbreaker/"
|
||||
linters:
|
||||
- gocritic
|
||||
- path: "browser/exploit/"
|
||||
linters:
|
||||
- gocritic
|
||||
- gocognit
|
||||
- funlen
|
||||
- whitespace
|
||||
- staticcheck
|
||||
|
||||
# Output configuration
|
||||
output:
|
||||
# Output format - use text format with colors
|
||||
formats:
|
||||
text:
|
||||
path: stdout
|
||||
colors: true
|
||||
formatters:
|
||||
enable:
|
||||
- gofumpt
|
||||
- goimports
|
||||
settings:
|
||||
gofumpt:
|
||||
extra-rules: true
|
||||
goimports:
|
||||
local-prefixes:
|
||||
- github.com/moond4rk/hackbrowserdata
|
||||
|
||||
Reference in New Issue
Block a user