Navigate
A dependency map over everything a test program is made of — VBA modules,
.atp digital patterns, IG-XL sheets, C/C++ and Python — with the two
joins an ATE engineer actually needs: which tests run this pattern,
and which active procedures have an implementation. Quality findings
overlay the same table.
Every synced repository is indexed into a file table: language, imports, exports, and the content itself. Select a file and the side panel shows what it depends on, what uses it, and what it exports — plus any quality findings on that file.
VBT_Main.bas selected — 26 dependencies, 35 exported procedures.
The map is not a text search. Dependencies are extracted per language —
Dim … As, With blocks and qualified calls for VBA, import
statements for the compiled languages — and every VBA rule runs over
comment- and string-stripped source, so a module-looking token inside a comment
or a string literal cannot mint a false dependency edge. Tester API roots
(TheHdw, TheExec, Datalog and the rest) are
filtered out: an edge to the tester runtime is never useful navigation.
| Artefact | Dependency signal | Why it matters |
|---|---|---|
| VBA modules (.bas / .cls / .frm) | Dim x As Module, With Module, qualified calls — including the no-parentheses Module.Proc arg1, arg2 statement form, the dominant VBA call style. |
Which module breaks when you change this one. |
| Digital patterns (.atp) | TheHdw.Patterns("name") string literals in VBT source, resolved to pattern files by basename. |
Re-cyclize a pattern and the map names every test that starts it. |
| IG-XL sheets | Ingested as sheet/<Name> rows; the TestInst sheet drives the coverage join below. | The program's structure, not just its code. |
| C / C++, Python, TypeScript, Go, Rust, C# | Import and include statements per language. | Mixed-language test benches map in the same table. |
The pattern join is the one worth stopping on. In an IG-XL program the link
between a test and its pattern is a string literal —
TheHdw.Patterns("Common\Patterns\spi_read_lo") — invisible to any
conventional import scanner. The Code Map extracts those literals and resolves
them against the repo's .atp file stems, extension stripped, so the
question "if I re-cyclize this pattern, which tests re-run?" has a
deterministic answer.
The TestInst sheet names the VBT procedure each test instance calls — those are the procedures that actually run on the tester. Coverage joins that list against the exported procedures of the repo's VBA modules, case-insensitively, because VBA is case-insensitive. The result is the number an IG-XL engineer thinks in: of the active procedures, how many have an implementation?
TestInst detection is basename-tolerant — TestInst.txt,
Test Instances.txt and test_inst.txt all qualify — and
only sheet rows count, so a VBA module named TestInstHelpers.bas
is never mistaken for the sheet. When no TestInst parses, the metric renders as
an em dash with the reason, not a number.
The same adjacency renders as a layered SVG graph: files that import nothing local on the left, top-level consumers on the right, one longest-path layering pass plus one barycenter ordering pass — no force simulation, so a ~200-node repo stays smooth. Edges come from the exact join the side panel's "Used by" list uses, so the graph and the table cannot disagree. Isolated nodes — files with no edges in either direction — hide behind a toggle to keep the view dependency-signal only.
.atp pattern nodes fanning into VBT_Main.bas through the TheHdw.Patterns join. Node click opens the same selected-file panel.Repo syncs enqueue a code-map job on the background worker. Each file is stored with its language, extracted imports and exports, and its content capped at 150 lines with an explicit truncation marker — a partial file is labelled partial, downstream consumers key off the marker.
Per-language extractors run over comment- and string-stripped source. Locally declared variable names are excluded from the qualified-reference capture, so ws.Cells references the variable, not a phantom module.
TheHdw.Patterns("…") literals in VBT and .igxlproj sources resolve to .atp file stems. The "Used by" list on a pattern file is the list of tests that start it.
The TestInst sheet's active procedure names join against VBA exports; the result is a pure function of the two artefacts, recomputed on every page load.
A scan runs the shared VBA rule registry over the mapped modules. Findings attach to their file rows, and an issues-only filter reduces the table to files with findings. A scan older than the current index is flagged as stale.
The page reads the worker's job state per repo: indexing while a sync job is queued or running (the visible map is the previous index, and says so), the error message when the last index failed, and mapped X ago otherwise. A stale map is never presented silently as current.
The generated TMP126 program maps to 36 files: one VBT module
(VBT_Main.bas, 35 exported procedures), the IG-XL sheets, and the
24 SPI pattern files the generator emitted. Active-function coverage reads
34/34 — every procedure the TestInst sheet references has an
implementation — and the graph view shows the pattern fan-in at a glance:
select any .atp node and its "Used by" panel names the tests that
start it. The quality overlay reports 0 errors and 32 warnings on the module,
each with file, line, rule id and severity.