v0.9.12 — The panel keeps up
A small release, one day after 0.9.11: the file-scan panel in the IDE
follows the mouse now, one genuine detector defect found by reviewing our
own week's work, and two guards that close known traps. One rule reports
slightly more than before — that is the fix working.
On the reference corpus the count goes 560,073 → 560,077 (+4). Only
SCA054 moves, and all four new findings were read in the source: they are
genuine.
Full notes: docs/releases/v0.9.12.md
· deutsch
The file-scan panel
- The list was sluggish: the renderer asked the IDE's theming service
for style objects per drawn cell — a COM call, roughly 300 per frame.
Now a one-slot cache (the pattern the main grid already used), reset on
theme change, with the handler order corrected so the repaint happens
after the reset. - Mouse and wheel follow the finding with a 50 ms settle delay. Before,
a click jumped instantly and the wheel moved the selection without the
editor following at all. All three input paths share one debounced
navigator now (keyboard unchanged at 80 ms). Spinning the wheel fast
collapses to a single jump on the resting row; re-clicking the same row
re-centres the editor.
SCA054 — single-line routines report again
The source check from 0.9.11 scanned the whole begin line, so in
procedure TFoo.Bar(Sender: TObject); begin end;the parameter's own declaration counted as a use and the finding
vanished — a defect that only ever suppressed, invisible to every gate.
The start line is now cut at the begin token (whole-word; BeginUpdate
is not a cut point). Measured: +4 findings return, all verified —
single-line NIF handlers in TES5Edit whose parameters genuinely are not
read.
Guards
WatchModecan no longer stack workers: at most one watch worker
runs; a trigger arriving meanwhile re-arms the debounce instead of being
dropped. The unit header called the previous state "endless loop
possible".- Selecting a finding stopped hammering the clipboard: the copy ran on
every selection change (with anApplication.ProcessMessagesand, for
quick-fix rules, a full source-file read — about thirty rounds a second
on a held arrow key). Debounced at 120 ms; theProcessMessagesand its
re-entrancy dance are gone entirely. package-release.ps1: stale zips of other versions are swept before
packaging (they would have been attached to the next release by the
documentedghfollow-up), and the tag guard actually fires now instead
of dying in a raw PowerShell error.
Known open observation
One of two full-corpus gate runs hit a non-deterministic access
violation while analysing CnScript_ToolsAPI_D2006.pas (cnwizards). The
repeat run, the single file and the whole subtree are clean; the six rules
that appeared to move in the crashed run were collateral of the aborted
file. Not attributable to this release's diff (the only engine change is
local string work). Recorded and under watch.
Upgrading
Re-check baselines that pin SCA054: up to a handful of findings may
return on single-line routines — they are genuine. Nothing else changes
fingerprints.
Downloads
StaticCodeAnalyser-v0.9.12-Win64.zip— standalone analyser, 64-bitStaticCodeAnalyser-v0.9.12-Win32.zip— standalone analyser, 32-bitStaticCodeAnalyser-v0.9.12-source.zip— full source