fix: linter compliance and code quality improvements across codebase
Address golangci-lint findings and improve error handling throughout:
Package doc comments:
- Add canonical "// Package X ..." comments to source, model, config,
pipeline, cli, store, and main packages for godoc compliance.
Security & correctness:
- Fix directory permissions 0o755 -> 0o750 in store/cache.go Open()
(gosec G301: restrict group write on cache directory)
- Fix config.Save() to check encoder error before closing file, preventing
silent data loss on encode failure
- Add //nolint:gosec annotations with justifications on intentional
patterns (constructed file paths, manual bounds checking, config fields)
- Add //nolint:nilerr on intentional error-swallowing in scanner WalkDir
- Add //nolint:revive on stuttering type names (ModelStats, ModelUsage)
that would break too many call sites to rename
Performance (perfsprint):
- Replace fmt.Sprintf("%d", n) with strconv.FormatInt(n, 10) in format.go
FormatTokens() and FormatNumber() hot paths
- Clean up redundant fmt.Sprintf patterns in FormatCost and FormatDelta
Code cleanup:
- Convert if-else chain to switch in parser.go skipJSONString() for clarity
- Remove unused indexedResult struct from pipeline/loader.go
- Add deferred cache.Close() in pipeline/bench_test.go to prevent leaks
- Add deferred cache.Close() in cmd/root.go data loading path
- Fix doc comment alignment in scanner.go decodeProjectName
- Remove trailing blank line in cmd/costs.go
- Fix duplicate "/day" suffix in cmd/summary.go cost-per-day formatting
- Rename shadowed variable 'max' -> 'maxVal' in cli/render.go Sparkline
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
// Package pipeline orchestrates session loading, caching, and metric aggregation.
|
||||
package pipeline
|
||||
|
||||
import (
|
||||
|
||||
@@ -79,7 +79,7 @@ func BenchmarkLoadWithCache(b *testing.B) {
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
defer cache.Close()
|
||||
defer func() { _ = cache.Close() }()
|
||||
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
|
||||
@@ -67,11 +67,6 @@ func Load(claudeDir string, includeSubagents bool, progressFn ProgressFunc) (*Lo
|
||||
numWorkers = len(toProcess)
|
||||
}
|
||||
|
||||
type indexedResult struct {
|
||||
idx int
|
||||
result source.ParseResult
|
||||
}
|
||||
|
||||
work := make(chan int, len(toProcess))
|
||||
results := make([]source.ParseResult, len(toProcess))
|
||||
var wg sync.WaitGroup
|
||||
|
||||
Reference in New Issue
Block a user