0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-24 08:30:56 +01:00
mongodb/docs/linting.md
Trevor Guidry ae750204a5 SERVER-96047 move linters out of scons (#28323)
GitOrigin-RevId: 23c85b6bc1e0b32a295d7a860e2a5f5da3b9025c
2024-10-22 19:17:19 +00:00

4.2 KiB

Linting in the MongoDB codebase

C++ Linters

clang-format

The buildscripts/clang_format.py wrapper script runs the clang-format linter. You can see the usage message for the wrapper by running buildscripts/clang_format.py --help.

Ex: buildscripts/clang_format.py lint

Linter Configuration File(s) Help Command Documentation
clang-format .clang-format clang-format --help https://clang.llvm.org/docs/ClangFormat.html

clang-tidy

The buildscripts/clang_tidy.py shell script runs the clang-tidy linter. In order to run clang-tidy you must have a compilation database (compile_commands.json file).

Ex: python3 buildscripts/clang_tidy.py

Linter Configuration File(s) Help Command Documentation
clang-tidy .clang-tidy clang-tidy --help https://clang.llvm.org/extra/clang-tidy/index.html

errorcodes.py

The buildscripts/errorcodes.py script runs a custom error code linter, which verifies that all assertion codes are distinct. You can see the usage by running the following command: buildscripts/errorcodes.py --help.

Ex: buildscripts/errorcodes.py

quickmongolint.py

The buildscripts/quickmongolint.py script runs a simple MongoDB C++ linter. You can see the usage by running the following command: buildscripts/quickmongolint.py --help. You can take a look at buildscripts/linter/mongolint.py to better understand the rules for this linter.

Ex: buildscripts/quickmongolint.py lint

Javascript Linters

The buildscripts/eslint.py wrapper script runs the eslint javascript linter. You can see the usage message for the wrapper by running buildscripts/eslint.py --help.

Ex: buildscripts/eslint.py lint

Linter Configuration File(s) Help Command Documentation
eslint .eslintrc.yml .eslintignore eslint --help https://eslint.org/

Yaml Linters

The buildscripts/yamllinters.sh shell script runs the yaml linters. The supported yaml linters are: yamllint & evergreen-lint. evergreen-lint is a custom MongoDB linter used specifically for evergreen yaml files.

Ex: bash buildscripts/yamllinters.sh

Linter Configuration File(s) Help Command Documentation
yamllint etc/yamllint_config.yml yamllint --help https://readthedocs.org/projects/yamllint/
evergreen-lint etc/evergreen_lint.yml python -m evergreen_lint --help https://github.com/evergreen-ci/config-linter

Python Linters

The buildscripts/pylinters.py wrapper script runs the Python linters. You can see the usage message for the wrapper by running the following command: buildscripts/pylinters.py --help.

Ex: buildscripts/pylinters.py lint

Linter Configuration File(s) Help Command Documentation
ruff pyproject.toml ruff --help https://docs.astral.sh/ruff/