A list of awesome linters.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 0c3551b Jun 13, 2018

README.md

Awesome Linters

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

This project is not closed to actual static analyzers. With this repository we intend to have an information resource for all things related to static analysis of code. By this, we mean that articles, talks or any other resource related to this topic will be welcome as well as links related to actual linters.

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++.
  • uncrustify - Source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA.

CoffeeScript

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

C++

  • cppcheck - Cppcheck is a static analysis tool for C/C++ code. It provides unique code analysis to detect bugs and focuses on detecting undefined behaviour and dangerous coding constructs. The goal is to detect only real errors in the code (i.e. have very few false positives).
  • oclint - Static analysis for C, C++ and Objective-C. Written in C++.
  • uncrustify - Source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA.

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.

Dockerfile

  • dockerfile_lint - Rule based linter for Dockerfiles. The linter rules can be used to check file syntax as well as arbitrary semantic and best practice attributes determined by the rule file writer. The linter can also be used to check LABEL rules against docker images.
  • hadolint - Linter for Dockerfiles. The linter is parsing the Dockerfile into an AST and performs rules on top of the AST. It is standing on the shoulders of ShellCheck to lint the Bash code inside RUN instructions.

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.

Haxe

  • haxe-checkstyle - Haxe Checkstyle is a static analysis tool to help developers write Haxe code that adheres to a coding standard.

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.
  • uncrustify - Source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA.

JavaScript

  • clinton - JavaScript project style linter.
  • 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.
  • prettier - Opinionated JavaScript formatter inspired by refmt with advanced support for language features from ES2017, JSX, and Flow.
  • 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.

npm

Objective-C

  • oclint - Static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C. Written in C++.
  • uncrustify - Source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA.

Perl

  • perlcritic - The leading static analyzer for Perl. Configurable, extensible, powerful.

PHP

  • phplint - Node wrapper around the native php linter that allows for parallel linting and integration with build systems like Grunt, Gulp and more.
  • PHP Mess Detector - PHPMD can be seen as an user friendly and easy to configure frontend for the raw metrics measured by PHP Depend.

Polymer

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

Pug

  • pug-lint — An unopinionated and configurable linter and style checker for Pug (formerly Jade)

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

  • doc8 - Doc8 is an opinionated style checker for rst (with basic support for plain text) styles of documentation. Notice, it does not support additional sphinx extensions. Project is also available on OpenStack or GitHub
  • 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