Code quality

Because Firefox is a complex piece of software, a lot of tools are executed to identify issues at development phase. In this document, we try to list these all tools.

C/C++

Tools

Has autofixes

More info

Upstream

Custom clang checker

Source

Clang-Tidy

Yes

Static analysis

https://clang.llvm.org/extra/clang-tidy/checks/list.html

Clang analyzer

https://clang-analyzer.llvm.org/

Coverity

cpp virtual final

cpp virtual final

Semmle/LGTM

clang-format

Yes

Formatting C++ Code With clang-format

https://clang.llvm.org/docs/ClangFormat.html

JavaScript

Tools

Has autofixes

More info

Upstream

Eslint

Yes

ESLint

https://eslint.org/

Mozilla ESLint

Mozilla ESLint Plugin

Prettier

Yes

JavaScript Coding style

https://prettier.io/

Python

Tools

Has autofixes

More info

Upstream

Flake8

Yes (with autopep8)

http://flake8.pycqa.org/

Python 2/3 compatibility check

Python 2/3 compatibility check

Rust

Tools

Has autofixes

More info

Upstream

Rustfmt

Yes

https://github.com/rust-lang/rustfmt

Clippy

clippy

https://github.com/rust-lang/rust-clippy

Java

Tools

Has autofixes

More info

Upstream

Infer

https://github.com/facebook/infer