Suggest a tool

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

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

Summary

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

mypy: Static type checker for Python that checks PEP 484 type hints without running the program.

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

ShellCheck and mypy: metrics and documented facts, in the fixed row order used for code quality and static analysis comparisons.
FactShellCheckmypy
Stars40,067120,6481
Forks1,94613,3101
Contributors17918691
Last release2025-08-0412026-08-151
Last commit2026-09-2112026-09-221
Commits in 90 days911361
LicenseGPL-3.01MIT1
Primary languageHaskell1Python1
Statusactive1active1
Languages or files analysedShell scripts in the sh, bash, dash, ksh and BusyBox dialects source: Docs: shellcheck(1) manualPython programs with type hints source: README
Configuration formatkey=value directives in .shellcheckrc files and in script comments source: Docs: shellcheck(1) manualConfig file: mypy.ini, .mypy.ini, pyproject.toml ([tool.mypy]) or setup.cfg ([mypy]) source: Docs: The mypy configuration file
CI integrationPre-installed on Travis CI, CircleCI (ShellCheck Orb), GitHub (Linux), Codacy, Code Climate and other services source: READMEDocs describe running mypy in a CI system, with an example CI script source: Docs: Using mypy with an existing codebase
Report formatsJSON, CheckStyle XML, GCC-compatible warnings, plain text source: READMEJUnit XML; JSON output; HTML, XML, Cobertura XML and text type checking coverage reports source: Docs: The mypy command line
Install methodOS package managers (apt, pacman, dnf, brew, choco, winget and others); Docker image koalaman/shellcheck; binaries source: READMEpip (python3 -m pip install -U mypy) 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.

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

mypy

Fits projects that add PEP 484 type hints to Python programs; its README describes gradual typing, where hints are added over time with a fallback to dynamic typing. 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: tags, read
  7. GitHub REST API: commits, read
  8. GitHub REST API: commits, read
  9. Docs: shellcheck(1) manual, read
  10. README, read
  11. Docs: The mypy configuration file, read
  12. README, read
  13. Docs: Using mypy with an existing codebase, read
  14. Docs: The mypy command line, read

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