# 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. ```{toctree} :glob: true :maxdepth: 1 static-analysis/index lint/index coding-style/index typescript/index ``` ```{eval-rst} .. list-table:: C/C++ :header-rows: 1 :widths: 20 20 20 20 20 * - Tools - Has autofixes - Meta bug - More info - Upstream * - Custom clang checker - - - :searchfox:`Source ` - * - Clang-Tidy - Yes - `bug 712350 `__ - :ref:`Static analysis ` - https://clang.llvm.org/extra/clang-tidy/checks/list.html * - Clang analyzer - - `bug 712350 `__ - - https://clang-analyzer.llvm.org/ * - cpp virtual final - - - :ref:`cpp virtual final ` - * - clang-format - Yes - `bug 1188202 `__ - :ref:`Formatting C++ Code With clang-format` - https://clang.llvm.org/docs/ClangFormat.html ``` ```{eval-rst} .. list-table:: CSS :widths: 20 20 20 20 20 :header-rows: 1 * - Tools - Has autofixes - Meta bug - More info - Upstream * - Stylelint - Yes - `bug 1762027 `__ - :ref:`Stylelint` - https://stylelint.io/ * - Mozilla Stylelint - - - :ref:`Mozilla Stylelint Plugin` - ``` ```{eval-rst} .. list-table:: JavaScript :widths: 20 20 20 20 20 :header-rows: 1 * - Tools - Has autofixes - Meta bug - More info - Upstream * - Eslint - Yes - `bug 1229856 `__ - :ref:`ESLint` - https://eslint.org/ * - Mozilla ESLint - - `bug 1229856 `__ - :ref:`Mozilla ESLint Plugin` - * - Prettier - Yes - `bug 1558517 `__ - :ref:`JavaScript Coding style` - https://prettier.io/ ``` ```{eval-rst} .. list-table:: Python :widths: 20 20 20 20 20 :header-rows: 1 * - Tools - Has autofixes - Meta bug - More info - Upstream * - ruff - Yes - `bug 1811850 `__ - :ref:`ruff` - https://github.com/charliermarsh/ruff * - black - Yes - `bug 1555560 `__ - :ref:`black` - https://black.readthedocs.io/en/stable ``` ```{eval-rst} .. list-table:: Rust :widths: 20 20 20 20 20 :header-rows: 1 * - Tools - Has autofixes - Meta bug - More info - Upstream * - Rustfmt - Yes - `bug 1454764 `__ - :ref:`Rustfmt` - https://github.com/rust-lang/rustfmt * - Clippy - Yes - `bug 1361342 `__ - :ref:`clippy` - https://github.com/rust-lang/rust-clippy * - cargo-audit - - `bug 1747536 `__ - :ref:`cargo-audit` - https://rustsec.org/ ``` ```{eval-rst} .. list-table:: Java/Kotlin :widths: 20 20 20 20 20 :header-rows: 1 * - Tools - Has autofixes - Meta bug - More info - Upstream * - Spotless - Yes - `bug 1571899 `__ - :ref:`Spotless` - https://github.com/diffplug/spotless ``` ```{eval-rst} .. list-table:: Others :widths: 20 20 20 20 20 :header-rows: 1 * - Tools - Has autofixes - Meta bug - More info - Upstream * - shellcheck - - - - https://www.shellcheck.net/ * - rstchecker - - - :ref:`RST Linter` - https://github.com/myint/rstcheck * - Typo detection - Yes - - :ref:`Codespell` - https://github.com/codespell-project/codespell * - Fluent Lint - No - - :ref:`Fluent Lint` - * - YAML linter - No - - :ref:`yamllint` - https://github.com/adrienverge/yamllint ```