Skip to main content

Module suppression_names_its_case

Module suppression_names_its_case 

Source
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.