# Checkstyle Processor
## Purpose
Checks Java code style using [Checkstyle](https://checkstyle.org/).
The Rust alternative is [icheckstyle](icheckstyle.md): checkstyle's grammar and the checks of the fleet's `checkstyle.xml`, in-process, with checkstyle's messages and positions. Switching is `checkstyle` → `icheckstyle` in the stanza header, dropping `args = ["-c", "checkstyle.xml"]`.
## How It Works
Discovers `.java` files in the project (excluding common build tool directories),
runs `checkstyle` on each file, and records success in the cache. A non-zero exit
code from checkstyle fails the product.
This processor supports batch mode.
If a `checkstyle.xml` file exists, it is automatically added as an extra input so
that configuration changes trigger rebuilds.
## Source Files
- Input: `**/*.java`
- Output: none (checker)
## Configuration
```toml
[processor.checker.checkstyle]
args = []
dep_inputs = []
```
| `args` | string[] | `[]` | Extra arguments passed to checkstyle |
| `dep_inputs` | string[] | `[]` | Extra files whose changes trigger rebuilds |
## Batch support
The tool accepts multiple files on the command line. When batching is enabled (default), rsconstruct passes all files in a single invocation for better performance.
## Clean behavior
This processor is a Checker — `rsconstruct clean outputs` is a no-op for it (checkers produce no outputs). See [Clean behavior](../../processors.md#clean-behavior) and [`rsconstruct clean`](../../commands.md#rsconstruct-clean).