The best linters, according to hackers
14 linters recommended in Hacker News comments over the past year, ranked by how many separate people recommend each one.
All linters
- RuffA very fast Python linter and formatter that replaces flake8, black and similar tools and keeps AI coding agents honest; critics say new default rules cause upgrade churn.115recommend
- Clippy (Rust linter)Rust's linter catches bugs and poor patterns, auto-fixes many of them, and helps enforce project standards. Some lints have false positives, so not all are on by default.58recommend
- ESLintPluggable JavaScript linter that catches bugs and enforces code quality rules, with custom rules easy to write. Critics say it is slow on large projects and breaks across version upgrades.32recommend
- BiomeFast free JavaScript and TypeScript formatter and linter that replaces ESLint and Prettier in one tool; critics say mixed-language files like Vue and Svelte work poorly.23recommend
- OxlintRecommended as a much faster, near drop-in ESLint replacement. Caveat: it catches only a subset of errors and lacks full type-aware plugin support.20recommend
- ShellCheckFree linter that flags common mistakes and quoting errors in shell scripts, and people recommend it for writing more reliable Bash. Critics say it adds noisy best-practice warnings.19recommend
- golangci-lintDevelopers recommend it as a comprehensive, one-stop Go linter that bundles many linters and runs locally. Critics note it is slow, even with a cache.12recommend
- DeslopFree tool that cleans up sloppy AI-generated code and front ends, which people find useful for LLM output.10recommend
- AISlop CLIRecommended as a linter that flags AI-generated code smells and works as a quality gate; the most common caveat is false positives, and critics say it overlaps existing linters.9recommend
- RuboCopRuby linter people recommend for enforcing consistent style, including with coding agents and build pipelines. Critics call it more bikeshedding than linting.7recommend
- VibeCheckCompares AI-generated code against what you asked for and quizzes you on what changed, so you understand what you ship.7recommend
- CredoElixir linter that enforces code style and steers LLM coding agents with deterministic checks; people pair it with dialyzer and tidewave.5recommend
- TachFree Python tool for enforcing import boundaries and architecture rules across a codebase, especially larger-scale interactions between modules.5recommend
- PylintA Python linter with many deep checks that people run and then forget. Critics say it is old, slow on some checks, and that Ruff has overtaken it in adoption.5recommend