Skip to content
Strider, the gopher ranger

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