Skip to content

exhale 0.1.0

Choose a tag to compare

@obie obie released this 03 Oct 01:21
· 19 commits to main since this release
8b4683b

First release. exhale dry sweeps the whole codebase for duplicated Ruby and HTML ERB and fails while any copy isn't kept by the Contract.

  • Units from Prism (methods, Rails DSL bodies, concerns) and Herb (HTML ERB templates), normalized so the names of operations survive and the names of things become markers.
  • Rarity-weighted Jaccard over subtree fingerprints, with exact prefix filtering for whole units, exact subtree digests for copied fragments, and statement-run seeds for code lifted out of the middle of a method.
  • The verdict depends only on the commit. The merge base labels each finding introduced, shifted, already there, kept or contracted, and --introduced-only is the on-ramp for codebases that don't sweep clean yet.
  • The Contract under contract/<primitive>/ keeps deliberate duplication (parallel), maps primitives to code (covers) and holds settings (settings). Stale clauses and unknown references fail the gate.
  • Text, JSON and EDN reports. EDN uses the shape Uncle Bob's dryer writes.
  • exhale ships with its own Contract (64 obligations, all executable), a clean run on itself, and a mutation gate where every Mutineer mutant is killed or listed with a reason.

https://rubygems.org/gems/exhale/versions/0.1.0