ShellCheck alternatives: 8 open-source code quality and static analysis tools
Metrics as of , from the GitHub or GitLab API of each repository. Refreshed monthly.
About ShellCheck
ShellCheck is a listed code quality and static analysis tool: Static analysis tool that flags syntax, semantic and portability problems in bash and sh scripts.
Order: Listed tools in the same category, with tools in the same primary language (GitHub API) first, then by GitHub stars. Each line gives one fact from the tool's own documentation where it differs from what ShellCheck's documentation states, with its source.
8 alternatives to ShellCheck
Hadolint: Languages or files analysed: Dockerfiles, including the Bash code inside RUN instructions (through ShellCheck). source: README
Ruff: Languages or files analysed: Python files (*.py, *.pyi), Jupyter Notebooks (*.ipynb) and pyproject.toml. source: Docs: Configuring Ruff
ESLint: Languages or files analysed: ECMAScript/JavaScript code; JSX parsing when enabled. source: README
mypy: Languages or files analysed: Python programs with type hints. source: README
golangci-lint: Languages or files analysed: Go code. source: README
Semgrep: Languages or files analysed: Community supported in Semgrep CE: C/C++, C#, Go, Java, JavaScript, TypeScript, Kotlin, Python, Ruby, Rust, PHP, Scala, Swift, Terraform. source: Docs: Supported languages for Semgrep Community Edition (CE)
Infer: Languages or files analysed: Java, C++, Objective-C and C. source: README
PHPStan: Languages or files analysed: PHP code. source: README
Repository metrics
| Ruff | 49,7311 | 2026-09-1610.16.8 | 2026-09-221 | MIT | Rust | active |
|---|---|---|---|---|---|---|
| ShellCheck | 40,0671 | 2025-08-041v0.11.0 | 2026-09-211 | GPL-3.0 | Haskell | active |
| ESLint | 27,5161 | 2026-09-181v10.11.0 | 2026-09-221 | MIT | JavaScript | active |
| mypy | 20,6481 | 2026-08-151v2.3.1 | 2026-09-221 | MIT | Python | active |
| golangci-lint | 19,3941 | 2026-08-271v2.13.2 | 2026-09-201 | GPL-3.0 | Go | active |
| Semgrep | 16,7251 | 2026-09-101v1.177.0 | 2026-09-221 | LGPL-2.1 | C | active |
| Infer | 15,7061 | 2026-05-121v1.3.0 | 2026-09-181 | MIT | OCaml | active |
| PHPStan | 14,1061 | 2026-09-1212.2.14 | 2026-09-221 | MIT | PHP | active |
| Hadolint | 12,4251 | 2026-07-311v2.15.1 | 2026-08-241 | GPL-3.0 | Haskell | active |
1 Fetched from the GitHub or GitLab API on . Hover a value for its own date.