You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.7 KiB

# 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.