Skip to content

Contributing

bisu edited this page Sep 21, 2026 · 1 revision

Contributing

Thanks for helping improve BinaryInspector. This page summarizes CONTRIBUTING.md in the repo.

Ground rules

  • Rust 1.98.1 baseline; keep changes small and reviewable.
  • Run all gates before committing:
cargo fmt --check
cargo clippy --all-targets -- -D warnings
cargo test
cargo doc --no-deps
  • No new dependencies without documenting why the standard library and installed dependencies are insufficient.
  • Never commit credentials, personal configuration, agent artifacts, or generated build directories.

Fixture policy

Treat fixture binaries as generated artifacts:

  • Commit the smallest source + a regeneration command beside each fixture
  • Record the target architecture
  • Never replace a fixture with an unexplained blob

(Security-relevant parser regressions are preferred as inline byte-array tests in src/elf.rs — see Fuzzing-and-Testing.)

GUI rules

The GUI is a separate executable, binary-inspector-gui. It must call the shared inspect function rather than reimplementing parsing. Validate with:

cargo build --release --bin binary-inspector-gui

Visual smoke-testing is required on each supported desktop platform before a GUI release.

Bug reports and PRs

  • Use GitHub issues for public bugs and feature requests.
  • Use pull requests for changes.
  • Do not report security issues publicly — follow SECURITY.md for private disclosure.

Parser changes

Anything touching src/elf.rs deserves extra scrutiny:

  • Checked arithmetic everywhere; no indexing without bounds checks
  • Respect the parser caps (see Safety-Model)
  • Preserve deterministic output (file-order vectors, no hash-map iteration in output paths)
  • Add a malformed-input regression for every fix

Clone this wiki locally