Thanks for taking the time to contribute.
This project is a Rust CLI that focuses on fast scanning + practical security heuristics. Contributions that improve correctness, reduce false positives, improve performance, or improve the UX/reporting are especially welcome.
- Rust toolchain via rustup
cargo buildcargo testcargo run -- --help- Bug fixes (crashes, incorrect output, missed matches)
- False positive reductions (ideally with tests demonstrating the improvement)
- Performance improvements (hot paths, allocation reduction, parallelism)
- New heuristics/signals (keep them explainable)
- Documentation (README, examples, flags, suppression rules)
If you’re planning a larger feature, open an issue first to align on the approach.
- Keep changes focused; avoid drive-by refactors.
- Prefer small, composable functions and minimal allocations in hot paths.
- Keep output deterministic where possible (stable ordering) for CI consumers.
- Preserve existing CLI flags and semantics unless there’s a strong reason.
If you have them installed:
cargo fmt
cargo clippy --all-targets --all-featuresClippy warnings should be addressed for new/changed code.
Heuristic changes should come with tests.
- Add or update tests in
src/main.rsunder the#[cfg(test)]module. - When possible, write tests as small, self-contained fixtures using byte strings.
- Prefer tests that show both:
- a case that should be detected
- a case that should not be detected
If you add a flag, output field, or output format:
- Update README flag tables and examples.
- If applicable, update
src/cli.rsdocstrings.
Use Conventional Commits:
feat(scope): ...fix(scope): ...docs: ...chore: ...
Examples:
fix(scan): skip binary files earlierfeat(output): add story output format
Before opening a PR:
cargo testpassescargo fmtapplied (if available)- New behavior is covered by tests
- README/docs updated for user-visible changes
- No secrets/tokens included in examples, fixtures, screenshots, or logs
Please do not file public issues for security vulnerabilities. See SECURITY.md for responsible disclosure.