# Checkstyle Checkstyle is used by developers to validate Java code style and formatting, and can be run as part of the pre-upload hooks. [TOC] ## Running it It can be invoked in two ways. 1. To check style of entire specific files: `checkstyle.py -f FILE [FILE ...]` 2. To check style of the lines modified in the latest commit: `checkstyle.py` ## Projects used ### Checkstyle A development tool to help programmers write Java code that adheres to a coding standard. * URL: https://checkstyle.sourceforge.io/ * Version: 7.4-SNAPSHOT * License: LGPL 2.1 * License File: LICENSE * Source repo: https://android.googlesource.com/platform/external/checkstyle ### Git-Lint Git-lint is a tool to run lint checks on only files changed in the latest commit. * URL: https://github.com/sk-/git-lint/ * Version: 0.0.8 * License: Apache 2.0 * License File: gitlint/LICENSE * Local Modifications: * Downloaded gitlint/git.py and git/utils.py files individually. ## Pre-upload linting To run checkstyle as part of the pre-upload hooks, add the following line to your `PREUPLOAD.cfg`: ``` checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT} ``` Note that checkstyle does not always agree with clang-format, and so it's best to only have one enabled for Java. ### Disabling Clang Format for Java In `.clang-format` add the following to disable format checking and correcting for Java: ``` --- Language: Java DisableFormat: true SortIncludes: false --- ``` In some versions of clang-format, `DisableFormat` doesn't stop the sorting of includes. So to fully disable clang-format from doing anything for Java files, both options are needed.