Linters are commonly used in software development as they help to identify in your code :
- Possible bugs
- Code smells (method too long, with too many parameters, ...)
- Vulnerabilities issues
- And so much more...
They're used on local code repositories during coding or before a commit, and also during CI/CD with some break conditions that can stop the full process.
You may already know some of them. At Promyze, we try to regularly maintain a list of open-source linters and to identify new promising projects as well as those which are less and less updated.
This year we decided to provide a new fresh list, and we'll prepare next year an updated list with the evolution of some indicators, like the number of stars on Github.
Here is the complete list in the table below. Please now that N/A means that projects are not hosted on Github.
You can find the PDF/PNG version of the infographic on this page.
Language | Name | Stars Github | Last Activity |
---|---|---|---|
Ansible | ansible-lint | 2534 | June 24, 2021 |
C++ | oclint | 3,333 | July 1, 2021 |
C++ | vera++ | 0 | July 28, 2020 |
C++ | cppcheck | 0 | July 4, 2021 |
C++ | cpplint | 821 | May 20, 2021 |
C# | gendarme | 155 | December 9, 2020 |
C# | dotnet-format | 1,040 | July 8, 2021 |
C# | code-cracker | 1,058 | May 19, 2021 |
C# | Roslynator | 2,077 | July 4, 2021 |
Chef | cookstyle | 95 | July 6, 2021 |
Clojure | eastwood | 1,018 | July 1, 2021 |
Clojure | joker | 1,198 | June 11, 2021 |
Clojure | kibit | 1,668 | April 13, 2021 |
Clojure | clf-kondo | 1,180 | July 7, 2021 |
CSS | stylelint | 8,849 | May 31, 2021 |
CSS | csslint | 4,613 | February 21, 2019 |
CSS | csscomb.js | 3,097 | June 24, 2019 |
CSS | doiuse | 988 | April 2, 2021 |
D | D-Scanner | 226 | June 5, 2021 |
Dart | dart_style | 502 | July 2, 2021 |
Dart | linter | 419 | July 8, 2021 |
Docker | hadolint | 5,564 | July 5, 2021 |
Docker | dockerfilelint | 778 | September 15, 2020 |
Elixir | credo | 3,955 | July 7, 2021 |
Elixir | dogma | 475 | January 19, 2018 |
Erlang | elvis | 389 | April 6, 2021 |
F# | fantomas | 510 | July 7, 2021 |
F# | FSharpLint | 235 | July 5, 2021 |
Go | golangci-lint | 8,045 | July 7, 2021 |
Go | goreporter | 2,880 | September 2, 2018 |
Go | revive | 2,821 | June 30, 2021 |
Go | go-critic | 953 | June 29, 2021 |
Go | ineffassign | 330 | May 22, 2021 |
Groovy | CodeNarc | 259 | July 4, 2021 |
Haml | haml-lint | 249 | June 22, 2021 |
Haskell | hlint | 1,182 | July 3, 2021 |
Haskell | brittany | 647 | May 18, 2021 |
HTML | HTMLHint | 2,645 | June 14, 2021 |
HTML | tidy-html5 | 2,312 | July 1, 2021 |
HTML | bootlint | 2,399 | May 10, 2021 |
HTML | validator | 1,092 | July 8, 2021 |
Java | checkstyle | 6,095 | July 8, 2021 |
Java | error-prone | 5,637 | July 8, 2021 |
Java | pmd | 3,364 | July 8, 2021 |
Java | spotbugs | 2381 | July 6, 2021 |
Java | spoon | 1,160 | July 8, 2021 |
JavaScript | flow | 21,339 | July 8, 2021 |
JavaScript | prettier | 40,046 | July 8, 2021 |
JavaScript | standard | 25,690 | July 4, 2021 |
JavaScript | eslint | 18,759 | July 8, 2021 |
JavaScript | xo | 5,955 | July 8, 2021 |
JavaScript | rslint | 1,522 | June 25, 2021 |
JavaScript | hegel | 1,735 | May 17, 2021 |
Julia | Lint.jl | 161 | August 21, 2019 |
Kotlin | ktlint | 4,315 | July 4, 2021 |
Kotlin | detekt | 3,755 | July 7, 2021 |
Kubernetes | kube-lint | 154 | February 20, 2020 |
Kubernetes | kubeval | 2,413 | April 26, 2021 |
Markdown | markdownlint | 2,572 | February 12, 2021 |
Markdown | textlint | 2,047 | July 7, 2021 |
Ocaml | mascot | 0 | August 29, 2012 |
PHP | PHP-CS-Fixer | 10,272 | June 28, 2021 |
PHP | phpstan | 9,986 | July 8, 2021 |
PHP | phpcpd | 2,063 | May 19, 2021 |
PHP | PHP_CodeSniffer | 8,679 | July 1, 2021 |
PHP | phan | 5,101 | June 27, 2021 |
PHP | psalm | 4,204 | July 8, 2021 |
PHP | phplint | 702 | July 8, 2021 |
Puppet | puppet-lint | 758 | January 18, 2021 |
Python | pycodestyle | 4,341 | May 7, 2021 |
Python | pylint | 3,423 | July 7, 2021 |
Python | bandit | 3,924 | June 29, 2021 |
Python | flake8 | 1,360 | July 6, 2021 |
Python | mypy | 10,982 | July 8, 2021 |
Python | pyre-check | 5,458 | July 7, 2021 |
Python | pyright | 6,920 | July 6, 2021 |
R | pylama | 860 | July 4, 2021 |
R | styler | 484 | July 8, 2021 |
Ruby | rubocop | 11,411 | July 7, 2021 |
Ruby | brakeman | 6,149 | July 5, 2021 |
Ruby | reek | 3,558 | July 4, 2021 |
Ruby | sorbet | 2,612 | July 7, 2021 |
Rust | rust-clippy | 6,029 | July 6, 2021 |
Rust | rust-analyzer | 6,739 | July 8, 2021 |
Scss | scss-lint | 3,511 | July 26, 2020 |
Scala | scapegoat | 421 | July 5, 2021 |
Scala | scalastyle | 676 | March 4, 2019 |
Scala | wartremover | 967 | June 25, 2021 |
Shell | shellcheck | 25,304 | July 2, 2021 |
Shell | bashate | 0 | May 31, 2021 |
Solidity | Ethlint | 721 | September 14, 2019 |
SQL | sqlint | 364 | April 2, 2021 |
SQL | sqlfluff | 1,783 | July 6, 2021 |
Swift | SwiftLint | 14,939 | July 6, 2021 |
Terraform | tflint | 2,430 | July 5, 2021 |
Terraform | tfsec | 2,868 | July 8, 2021 |
Terraform | terrascan | 1,905 | July 7, 2021 |
Terraform | terragrunt | 5,097 | June 22, 2021 |
TypeScript | typescript-eslint | 9,874 | July 5, 2021 |
TypeScript | gts | 3,498 | July 7, 2021 |
TypeScript | codelyzer | 2,420 | July 5, 2021 |
Yaml | yamllint | 1,577 | June 10, 2021 |
Yaml | spectral | 1,005 | July 8, 2021 |
Multi-lang | Sonarqube | 5,905 | July 7, 2021 |
Multi-lang | super-linter | 6,819 | June 29, 2021 |
Multi-lang | mega-linter | 230 | July 7, 2021 |
Top comments (0)