/awesome-linters

A list of awesome linters.

The UnlicenseUnlicense

Awesome Linters Awesome

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.

Contents

Linters

Language Agnostic

  • coala - Language agnostic linter based on rules and standards. Written in Python.

Awesome Lists

  • awesome-lint - Linter for Awesome lists. Helps to createa and maintain Awesome lists. Written in Javascript.

C

  • oclint - Static analysis for C, C++ and Objective-C. Written in C++.

CoffeeScript

  • coffeelint - Configurable linter written in CoffeScript to analyze CoffeScript.

C++

  • oclint - Static analysis for C, C++ and Objective-C. Written in C++.

CSS

  • 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.

Dart

  • linter - Linter for Dart mostly focused on style lints. It's configurable but comes with configured rules out of the box. Written in Dart.

English

  • 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.

Erlang

  • elvis - Configurable Erlang linter written in Erlang.

Go

  • 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.

Haskell

  • hlint - Tool for suggesting possible improvements to Haskell code. These suggestions include ideas such as using alternative functions, simplifying code and spotting redundancies.

HTML

  • 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.

Java

  • 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.

JavaScript

  • 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.

Lua

  • lualint - lualint performs luac-based static analysis of global variable usage in Lua source code.

Markdown

  • 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.

Objective-C

  • oclint - Static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C. Written in C++.

Polymer

  • polylint - Catch errors in your polymer project before even running your code. Written in TypeScript.

Puppet

  • puppet-lint - Test modules and manifests against the recommended Puppet style guidelines from the Puppet Labs style guide. Written in Ruby.

Python

  • 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

  • reStructuredText Lint - Validate reST files either as a module or from a CLI utility. Written in Python.

Ruby

  • rubocop - Ruby static code analyzer. Out of the box it will enforce many of the guidelines outlined in the community Ruby Style Guide.

Rust

  • rust-clippy - Collection of lints to catch common mistakes and improve your Rust code.

Sass

  • 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.

Scala

  • 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.

Shell

  • shellcheck - Gives warnings and suggestions for bash/sh shell scripts.

Swift

  • swiftlint - Tool to enforce Swift style and conventions, loosely based on GitHub's Swift Style Guide.

TypeScript

  • tslint - Customizable TypeScript linter with automatic fixing of formating and style violations.

Contributing

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.

Contributors

Thanks to everyone that helped!

License

unlicense