
Strider
The ranger for your Go code. One fast, self-contained binary that formats source and hunts down trouble — before it reaches review.
1static binary, zero deps
201checks
1,362 msto format SFTPGo
3,877 msto check SFTPGo
Benchmark timings measured on an Apple M4.
One commandDiagnostics with the code that caused them
strider check folds formatting drift, style policy, and package-aware
correctness analysis into a single diagnostic pass. It is read-only by default,
with explicit safe and unsafe fix modes when source should be updated. No plugin
zoo, no tool matrix — files are parsed once and shared across every selected
check.
$ strider check
format*: file is not formatted
┌─ tests/eventsearcher/main.go:1:1
│
1 │ package main
2 │
no-package-var: package variables introduce mutable global state
┌─ tests/eventsearcher/main.go:12:2
│
11 │ var (
12 │ errNotSupported = errors.New("unsupported parameter")
13 │ )
format*: file is not formatted
┌─ tests/ipfilter/main.go:1:1
│
1 │ package main
2 │
unused-parameter: parameter protocol is unused
┌─ tests/ipfilter/main.go:12:30
│
11 │
12 │ func (f *Filter) CheckIP(ip, protocol string) error {
13 │ if ip == "192.168.1.12" {
discarded-error-result 1689
modifies-parameter 924
cognitive-complexity 819
redundant-conversion 813
[...]
Checked 246 files in 3207ms. Ran 184 checks.
7385 issues: 2905 errors, 4480 warnings, 154 fixable