rsconstruct 0.9.83

Rust based fast build system
# Cppcheck Processor

## Purpose

Runs cppcheck static analysis on C/C++ source files.

## How It Works

Discovers `.c` and `.cc` files under the configured source directory, runs
cppcheck on each file individually, and creates a stub file on success. A
non-zero exit code from cppcheck fails the product.

**Note:** This processor does not support batch mode. Each file is checked
separately because cppcheck performs cross-file analysis (CTU - Cross Translation
Unit) which produces false positives when unrelated files are checked together.
For example, standalone example programs that define classes with the same name
will trigger `ctuOneDefinitionRuleViolation` errors even though the files are
never linked together. Cppcheck has no flag to disable this cross-file analysis
(`--max-ctu-depth=0` does not help), so files must be checked individually.

## Source Files

- Input: `{source_dir}/**/*.c`, `{source_dir}/**/*.cc`
- Output: `out/cppcheck/{flat_name}.cppcheck`

## Configuration

```toml
[processor.cppcheck]
args = ["--error-exitcode=1", "--enable=warning,style,performance,portability"]
dep_inputs = [".cppcheck-suppressions"]   # Additional files that trigger rebuilds when changed
```

| Key | Type | Default | Description |
|-----|------|---------|-------------|
| `args` | string[] | `["--error-exitcode=1", "--enable=warning,style,performance,portability"]` | Arguments passed to cppcheck |
| `dep_inputs` | string[] | `[]` | Extra files whose changes trigger rebuilds |

To use a suppressions file, add `"--suppressions-list=.cppcheck-suppressions"` to `args`.

## Batch support

The tool processes one file at a time. Each file is checked in a separate invocation.

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