This section provides a list of tools that some have found useful for ensuring their code abides by Drake’s Code Style Guide. The list is by no means comprehensive. If your favorite tools or methodologies are not listed, we would be delighted to learn about them. Please document your trick and submit a pull request!
Automated style checks
Code style tests are run by default during bazel test
and the results are
cached so that only edited files are re-checked. In other words, no special
action is required by a developer.
However, you may still invoke code style checks directly if desired, as follows:
cd /path/to/drake
bazel test --config lint //... # Only run style checks; don't build or test anything else.
bazel test --config lint //common/... # Check common/ and its child subdirectories.
User manuals for the style-checking tools are as follows:
- C/C++: See the cpplint
USAGE
string at https://github.com/google/styleguide/blob/gh-pages/cpplint/cpplint.py.- In particular, note the
// NOLINT(foo/bar)
syntax to disable a warning.
- In particular, note the
- Python: See the pycodestyle manual at
http://pycodestyle.readthedocs.io/en/latest/intro.html.
- The syntax
# noqa
can be used to quiet the warning about an overly-long line.
- The syntax
- Bazel: Uses both pycodestyle like Python, and also the buildifier tool as described in Updating BUILD files.
To opt-out of all linting (e.g., when committing vendored copies of third-party
external files into Drake’s workspace), add tags = ["nolint"]
to the
BUILD.bazel
rule(s) for the copied code.
Manual style fixups
C/C++: Clang-Format
To run clang-format
:
cd drake
bazel run //tools/lint:clang-format -- -i -style=file [file name]
Using clang-format
will modify the entire file that is specified.
IDE integration
Most IDEs can run clang-format
automatically.
We have some tips for specific IDEs: