Follow-up from the review of #1820, which fixed the singular/plural mismatch for the Unused files section. The same surface has a wider gap: section_suppress_rule in crates/cli/src/report/human/mod.rs emits suppression hint tokens that fallow_types::suppress::parse_suppression_target does not recognize, so following the printed hint produces a comment that suppresses nothing and then surfaces a stale-suppression finding.
Verified unparseable footer tokens (present only as config_key/mcp_issue_type, no alias): unused-exports, unused-types, unused-dependencies, unused-enum-members, unused-class-members, unresolved-imports, unlisted-dependencies, duplicate-exports.
Not broken (registered aliases): circular-dependencies, unused-store-members, unprovided-injects, unrendered-components, unused-component-props, unused-component-emits.
Two-part fix:
- Correct the emitted tokens (or add plural aliases where that is the better contract; the dependency sections may want no hint at all, since those findings live in
package.json where inline comments are impossible).
- Add a parse-roundtrip guard test asserting every token
section_suppress_rule can emit parses via parse_suppression_target, so this whole surface stays locked down.
Follow-up from the review of #1820, which fixed the singular/plural mismatch for the Unused files section. The same surface has a wider gap:
section_suppress_ruleincrates/cli/src/report/human/mod.rsemits suppression hint tokens thatfallow_types::suppress::parse_suppression_targetdoes not recognize, so following the printed hint produces a comment that suppresses nothing and then surfaces a stale-suppression finding.Verified unparseable footer tokens (present only as
config_key/mcp_issue_type, no alias):unused-exports,unused-types,unused-dependencies,unused-enum-members,unused-class-members,unresolved-imports,unlisted-dependencies,duplicate-exports.Not broken (registered aliases):
circular-dependencies,unused-store-members,unprovided-injects,unrendered-components,unused-component-props,unused-component-emits.Two-part fix:
package.jsonwhere inline comments are impossible).section_suppress_rulecan emit parses viaparse_suppression_target, so this whole surface stays locked down.