67 lines
1.7 KiB
Markdown
67 lines
1.7 KiB
Markdown
|
# 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.
|