By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Render findings with diagnose, and add centjes to the corpus Findings are now shown against the code they are about rather than located by file:line:col. The rule id is the report's code, because it is also what has to be typed to suppress it; the marker carries the line from the standards, so the answer to "says who" is next to the code; the hint carries the exact annotation to paste. Output moves to stderr, as a compiler's diagnostics do. Showing the code means having the code, which the project layer does not: it runs on fact files alone. That dependency is explicit, as a SourceMap the caller fills, and 'hopinion project' takes --source PREFIX=DIR per package for it. It costs nothing in rebuilds, since a fact file already changes whenever its package's sources do. Every rendering is pinned as a golden under test_resources/Report, owned by a new ReportSpec, so a change to what a person sees is a reviewable artifact. centjes joins nix-ci and sydtest in the corpus run, and found a bug by being unlike them: it has a parser, so it has modules generated by alex and happy. A declared module whose only source is an alex, happy or hsc2hs input used to be reported as a module the facts do not cover, which is the right report for a module deleted from the tree and the wrong one here. It is now a third parse outcome, and every module rule abstains on it, so the gap is counted rather than silent. Two smaller things the change forced. diagnose is jailbroken in the overlay: its upper bound on text predates GHC 9.10's, which is all that marks it broken. And the tool now sets its output handles to UTF-8, because a Nix build runs under the C locale, where the default encoding cannot write a box-drawing character at all and the first finding would kill the tool.
| Time to Start | Worker time | Duration | Time to finish | Idle | |
| Config | 0s | 1s | 1s | 1s | 0s |
| Eval | 1s | 13s | 13s | 14s | 0s |
| Build | 5s | 11s | 14s | 20s | 0s |
| Suite | 0s | 26s | 20s | 20s | 0s |