A collection of git hooks for Java to be used with the pre-commit framework.
pre-commit-java requires the following to run:
- create
.pre-commit-config.yaml
in you git project - pre-commit install
- enjoy :)
example .pre-commit-config.yaml
:
- repo: https://github.com/gherynos/pre-commit-java
rev: v0.2.1 # Use the ref you want to point at
hooks:
- id: pmd
exclude: /test/
- id: cpd
exclude: /test/
- id: checkstyle
exclude: /test/
# ...
Hook name | Description |
---|---|
pmd |
Runs the PMD static code analyzer. |
cpd |
Runs the Copy/Paste Detector (CPD). |
checkstyle |
Runs the Checkstyle static code analysis tool. |
The default ruleset used is ruleset.xml, which runs all the Java rules, except for LoosePackageCoupling
.
To specify a custom ruleset, simply pass the argument to the hook:
- id: pmd
args: ["-R=my_ruleset.xml"]
Furthermore, the default language version passed to PMD is java-17
, which can be tweaked using the --use-version
argument.
Other CLI arguments are also supported, like --cache
for incremental analysis.
The arguments must be specified using the --<arg>=<value>
(-<arg>=<value>
) convention, as opposed to --<arg> <value
(-<arg> <value
) to avoid parsing errors.
The default minimum token length is 100.
To change it, simply pass the argument to the hook:
- id: cpd
args: ["--minimum-tokens=50"]
Other CLI arguments are also supported.
The arguments must be specified using the --<arg>=<value>
(-<arg>=<value>
) convention, as opposed to --<arg> <value
(-<arg> <value
) to avoid parsing errors.
The default configuration used is sun_checks.xml.
To specify a custom one, simply pass the argument to the hook:
- id: checkstyle
args: ["-c", "my_checks.xml"]
Other CLI arguments are also supported.
Other configurations part of the distribution can be used like:
- id: checkstyle
args: ["-c", "/google_checks.xml"]
GitHub @gherynos
pre-commit-java is licensed under the GPLv3 license.