Suggest a tool

Ruff vs ShellCheck: open-source code quality and static analysis tools compared

Metrics as of , from the GitHub or GitLab API of each repository. Refreshed monthly.

Summary

Ruff: Python linter and code formatter written in Rust that covers Flake8, Black and isort functions in one tool.

ShellCheck: Static analysis tool that flags syntax, semantic and portability problems in bash and sh scripts.

Both are listed under Code quality and static analysis. The table gives repository metrics from the GitHub API with their fetch date, then the documented facts used for every comparison in this category, each linked to the README or docs page it comes from. A cell reads "not documented" when the fact was not found in the project's documentation; that does not mean the feature is absent.

Side by side

Ruff and ShellCheck: metrics and documented facts, in the fixed row order used for code quality and static analysis comparisons.
FactRuffShellCheck
Stars49,731140,0671
Forks2,43011,9461
Contributors97911791
Last release2026-09-1612025-08-041
Last commit2026-09-2212026-09-211
Commits in 90 days1,447191
LicenseMIT1GPL-3.01
Primary languageRust1Haskell1
Statusactive1active1
Languages or files analysedPython files (*.py, *.pyi), Jupyter Notebooks (*.ipynb) and pyproject.toml source: Docs: Configuring RuffShell scripts in the sh, bash, dash, ksh and BusyBox dialects source: Docs: shellcheck(1) manual
Configuration formatTOML settings in pyproject.toml, ruff.toml or .ruff.toml source: READMEkey=value directives in .shellcheckrc files and in script comments source: Docs: shellcheck(1) manual
CI integrationGitHub Actions (ruff-action) and a GitLab CI/CD example with a code quality report source: Docs: IntegrationsPre-installed on Travis CI, CircleCI (ShellCheck Orb), GitHub (Linux), Codacy, Code Climate and other services source: README
Report formatsconcise, full, JSON, JSON Lines, JUnit, grouped, GitHub, GitLab, Pylint, rdjson, Azure, SARIF source: Docs: Configuring RuffJSON, CheckStyle XML, GCC-compatible warnings, plain text source: README
Install methodPyPI package ruff via uv, pip or pipx; standalone installers source: READMEOS package managers (apt, pacman, dnf, brew, choco, winget and others); Docker image koalaman/shellcheck; binaries source: README

1 Fetched from the GitHub or GitLab API on . Hover a value for its own date.

When each fits

Written from each project's documented scope, not from preference. Neither tool is ranked.

Ruff

Fits projects that lint and format Python code with one tool; its README describes use in place of Flake8, Black, isort, pydocstyle, pyupgrade and autoflake. source: README

ShellCheck

Fits projects that contain bash or sh shell scripts; its README describes a static analysis tool that warns about syntax issues, semantic problems and pitfalls in those scripts. source: README

More on these tools

Sources

  1. GitHub REST API: repository, read
  2. GitHub REST API: repository, read
  3. GitHub REST API: contributors, read
  4. GitHub REST API: contributors, read
  5. GitHub REST API: latest release, read
  6. GitHub REST API: latest release, read
  7. GitHub REST API: commits, read
  8. GitHub REST API: commits, read
  9. Docs: Configuring Ruff, read
  10. Docs: shellcheck(1) manual, read
  11. README, read
  12. Docs: Integrations, read
  13. README, read

Documented facts collected 2026-09-22. See the methodology for how metrics and facts are gathered.