* refine the plan
* Fix all staticcheck lint findings (uncapped)
golangci-lint's default max-same-issues=3 was hiding most of the backlog:
the true pre-fix count was 69 staticcheck findings, not 34. This fixes all
of them, driving staticcheck to zero:
- ST1023/QF1011 (37): omit explicit types inferred from the RHS
- S1009/S1031 (15): drop redundant nil checks before len()/range
- SA9003 (9): remove comment-only empty branches, keeping the comments
- QF1007 (3): merge conditional assignment into declaration
- QF1006 (3): lift break conditions into loop conditions
- QF1001 (3): apply De Morgan's law / name the negated predicate
Also updates plans/lintfixes.md with the cap discovery and the corrected
errcheck picture (1202 uncapped, ~949 of them fmt.Fprint*).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* Drive errcheck to zero: config for bulk categories, propagate real errors
Adds .golangci.yml with errcheck exclude-functions for fmt.Fprint* (usage
printers), (*bufio.Writer).Write/WriteString (sticky errors, surfaced at the
now-checked final Flush), and (*strings.Builder).WriteString; pins
max-issues-per-linter/max-same-issues to 0 so CI reports true counts.
Real error paths now propagate instead of being dropped:
- Finalize{Reader,Writer}Options in join/put/filter/split/tee and the
repl/script entry points: 'mlr join -i badformat' now errors instead of
silently using wrong separators
- final output-stream Flush in pkg/stream: write failure no longer exits 0
- DSL emit/print/dump redirect writes, matching their sibling branches
- CSV writer WriteCSVRecordMaybeColorized, close-time Flush in file output
handlers, ENV[...] Setenv, REPL record-write and redirect-close errors
- termcvt write-side Close before rename (had "TODO: check return status")
The rest are deliberate ignores, marked with _ = and a comment where the
reason isn't obvious: unset-of-missing-path no-ops, read-side closes,
mid-stream FlushOnEveryRecord, init-time strftime registrations, in-memory
usage-capture pipes, and regtest-harness env/temp-file teardown.
golangci-lint now reports 0 issues on ./cmd/mlr ./pkg/... with all caps off.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* To-do items for broader platform/go-version benchmarking
* neaten inferrer API
* extend type-inference unit-test cases
* Add benchmark scripts for comparing compiler versions
* mlr version in addition to mlr --version
* some go-benchmark files for Mac/Linux perf comparisons
* neaten perf-scripts
* merge
* type-scan optimization tests
* type-scan optimization infra
* test new inferrer
* mlr --time option
* include --cpuprofile and --traceprofile in on-line help
* sharpen inferred/deferred-type API distinction
* replace old inferrer with newer/faster
* update docs for new type-inferrer
* Rename inputChannel,outputChannel to readerChannel,writerChannel
* Rename inputChannel,outputChannel to readerChannel,writerChannel (#772)
* Start batched-reader API mods
* Singleton-list step for reader-batching at input
* CLI options for records-per-batch and hash-records
* Push channelized-reader logic into DKVP reader
* Push batching logic into chain-transformer, transformers, and channel-writer
* foo
* cmd/mprof and cmd/mprof2
* cmd/mprof3 and cmd/mprof4
* narrowed in on regexp-splitting on IFS/IPS as perf-hit
* neaten
* channelize nidx
* cmd/mprof5
* channelize CSV reader
* channelize NIDX reader
* Dedupe DKVP-reader and NIDX-reader source files
* channelize CSV-lite reader
* channelize XTAB reader
* batchify JSON reader
* channelize GEN pseudo-reader
* scripts for perf-testing on larger files
* merge with main for #776
* Fix record-batching for join and repl
* Fix comment-handling in channelized XTAB reader
* Fix bug found in positional-rename