Full Changelog: v0.1.21...v0.1.22
Full Changelog: v0.1.20...v0.1.21
Full Changelog: v0.1.19...v0.1.20
Full Changelog: v0.1.18...v0.1.19
Full Changelog: v0.1.17...v0.1.18
Full Changelog: v0.1.16...v0.1.17
Two fields the rule card needs, and the second frontend will need more.
language on every rule. Written down from the first frontend rather than assumed and retrofitted from the second. It prefixes the rule's name everywhere it is shown — [rust/discarded-check] — and names its page in the documentation. Not patchable: a rule's language is a fact about the rule, not a setting.
item on every finding — the function, method or impl it sits inside, so a reader can zoom out to the thing that is wrong rather than the line it happens to be on. The span was already in the graph: a symbol is joined to whatever contains it by a Contains edge, and that edge's evidence is the symbol's own extent. The innermost one wins, so a call inside a closure inside a method reads as the method.
It is answered in one pass over every finding rather than at each of the twenty places one is made — a rule that forgot to ask would be a rule whose card quietly offers one zoom fewer than the others.
Scoring cqx with itself: 16 of 18 findings carry an item, and the two that do not are about whole files.
cqx score --facts <f> --json — every rule has "language": "rust", and findings on a line carry item.line and file, named after the enclosing function.Full Changelog: v0.1.14...v0.1.15
Full Changelog: v0.1.13...v0.1.14
Full Changelog: v0.1.12...v0.1.13