Expand description
Gate: every suppression says why it is there, and says it in the one form that fits what it does.
A suppression over a defect somewhere else names the case that justifies it, and that case resolves to a record. A suppression this project chose and keeps states its reason instead, because no record could carry a retirement condition anyone can meet, and a record with an unmeetable condition is the permanent mask the case rule exists to prevent. A suppression with neither becomes permanent by default: the next reader takes it for a design choice and nothing says what would retire it.
A suppression states that reason in either of two places. Where the tool
that honors the form defines a reason position of its own, the reason
written there counts, so a generated artifact another project owns
satisfies this rule in its own idiom and nothing here reaches into bytes
it does not author. Where the tool defines no such position, the
sdd: permanent marker is the portable fallback. Only a position the
tool formally defines counts, so prose that merely sits near a
suppression never satisfies the rule.
A form counts only in a file the tool that honors it reads. #[allow(
is live Rust and a quotation in markdown; noqa is live in a Python or
shell comment and a quotation here. That scoping is what lets this file,
the specs and the method chapters name a form without being judged by
it. A form inside a string, inside a multi-line string, or inside a
document’s fence is a quotation for the same reason. Binary files and
vendored trees are skipped, and the known-issues directory is exempt,
because a record may discuss suppressions.
Three surfaces stay outside this scan: an extensionless shell script, a
block comment holding a suppression, and the [lints] table of a
manifest.
Constants§
- CITES
- The rules this gate can cite.
Functions§
- run
- Judge every suppression in the repository.