Skip to content

v0.9.12 — The panel keeps up

Choose a tag to compare

@nrodear nrodear released this 04 Aug 16:43
· 246 commits to main since this release

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

  • WatchMode can 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 an Application.ProcessMessages and, for
    quick-fix rules, a full source-file read — about thirty rounds a second
    on a held arrow key). Debounced at 120 ms; the ProcessMessages and 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
    documented gh follow-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-bit
  • StaticCodeAnalyser-v0.9.12-Win32.zip — standalone analyser, 32-bit
  • StaticCodeAnalyser-v0.9.12-source.zip — full source