A curated list of awesome linters.
Code linters are programs that performs static analysis on your code. They check your code for common mistakes and bad coding style/practices thus helping you catch errors before compilation/interpretation and forcing you and your team to keep a consistent code style within a project.
Most of the linters in this list have plugins available for popular text editors and IDEs and are pretty easy to setup and automate (via a pre-commit hook or a CI service for example).
Here's a complementary list regarding Coding Standards.
- coala - Language agnostic linter based on rules and standards. Written in Python.
- awesome-lint - Linter for Awesome lists. Helps to createa and maintain Awesome lists. Written in Javascript.
- oclint - Static analysis for C, C++ and Objective-C. Written in C++.
- coffeelint - Configurable linter written in CoffeScript to analyze CoffeScript.
- oclint - Static analysis for C, C++ and Objective-C. Written in C++.
- csslint - CSS static analysis written in Javascript. Uses pluggable rules.
- csscomb - CSS tool that beautifies CSS based on a configuration. Helps with keeping CSS consistent. Written in Javascript.
- ie8linter - Static analysis for Internet Explorer 8 compatibility. Written in Javascript.
- postcss-bem-linter - A plugin for PostCSS to lint CSS according to BEM-style. Written in Javascript.
- stylelint - CSS linter that is unopinionated, supports plugins and has a wide range of rules built-in. Written in Javascript.
- linter - Linter for Dart mostly focused on style lints. It's configurable but comes with configured rules out of the box. Written in Dart.
- alex - Linter to help catch insensitive writing in English. Written in Javascript.
- proselint - Linter for English that provides guidelines to make better writing. It has plugins for several editors and is configurable.
- elvis - Configurable Erlang linter written in Erlang.
- golint - Go style linter written in Go. Focus with coding styles more than with correctness.
- gometalinter - Concurrently run Go lint tools and normalise their output.
- go vet - Examines Go source code and reports suspicious constructs.
- hlint - Tool for suggesting possible improvements to Haskell code. These suggestions include ideas such as using alternative functions, simplifying code and spotting redundancies.
- htmlhint - HTMLHint is a Static Code Analysis Tool for HTML, you can use it with IDE or in build system.
- bootlint - Bootlint is a tool that checks for several common HTML mistakes in webpages that are using Bootstrap.
- checkstyle - Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard.
- findbugs - Uses static analysis to look for bugs in Java code.
- pmd - Static analyzer that finds common programming flaws. It supports Java, JavaScript, Salesforce.com Apex, PLSQL, Apache Velocity, XML, XSL.
- eslint - Fully pluggable tool for identifying and reporting on patterns in JavaScript.
- jshint - Community-driven tool that detects errors and potential problems in JavaScript code.
- standard - Javascript style linter that allows no configuration.
- xo - Opinionated but configurable ESLint wrapper with lots of goodies included. Enforces strict and readable code.
- lualint - lualint performs luac-based static analysis of global variable usage in Lua source code.
- markdownlint - Node.js style checker and lint tool for Markdown/CommonMark files.
- mdl - Check markdown files and flag style issues. Written in ruby and is distributed as a rubygem.
- remark-lint - Written in Javascript. remark-lint provides configurable Markdown style linting.
- oclint - Static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C. Written in C++.
- polylint - Catch errors in your polymer project before even running your code. Written in TypeScript.
- puppet-lint - Test modules and manifests against the recommended Puppet style guidelines from the Puppet Labs style guide. Written in Ruby.
- flake8 - Runs PyFlakes, pycodestyle and other tools from only one CLI. Written in Python.
- pycodestyle (formerly called pep8) - Tool to check your Python code against some of the style conventions in PEP 8.
- pylint - Source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells.
- reStructuredText Lint - Validate reST files either as a module or from a CLI utility. Written in Python.
- rubocop - Ruby static code analyzer. Out of the box it will enforce many of the guidelines outlined in the community Ruby Style Guide.
- rust-clippy - Collection of lints to catch common mistakes and improve your Rust code.
- sass-lint - Node-only Sass linter for both sass and scss syntax.
- scss-lint - Tool to help keep your SCSS files clean and readable by running it against a collection of configurable linter rules.
- linter - Scala static analysis compiler plugin which adds compile-time checks for various possible bugs, inefficiencies, and style problems.
- scalastyle - Examines your Scala code and indicates potential problems with it. Similar to Checkstyle for Java.
- scapegoat - Another similar tool to Checkstyle for Java. Flags suspicious language usage in code.
- wartRemover - Flexible and configurable Scala linter written in Scala.
- shellcheck - Gives warnings and suggestions for bash/sh shell scripts.
- swiftlint - Tool to enforce Swift style and conventions, loosely based on GitHub's Swift Style Guide.
- tslint - Customizable TypeScript linter with automatic fixing of formating and style violations.
Contributions are very welcome! Create a new pull request, solve a bug or grab an issue that is currently unassigned!
The only rule is: keep it organized.
Thanks to everyone that helped!