Navigate

Code Map

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.

01

Overview

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.

Code Map file table with VBT_Main.bas selected
Fig. 1 — The TMP126 program mapped: 36 files, active-function coverage 34/34, 0 errors · 32 warnings. 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.

02

What gets mapped

ArtefactDependency signalWhy 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.

03

Active-function coverage

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 sheet Name column → active procedures ∩ VBA exports case-insensitive join 34/34 implemented / active · missing named distinct names n / m no TestInst sheet parses → the pill renders "—", never a percentage manufactured from header tokens
Fig. 2 — The coverage join. Active procedures from TestInst intersected with VBA exports; anything missing is listed by name.

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.

04

The graph view

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.

Dependency graph view: pattern files fanning into VBT_Main
Fig. 3 — Graph view on the TMP126 repo: 24 .atp pattern nodes fanning into VBT_Main.bas through the TheHdw.Patterns join. Node click opens the same selected-file panel.
05

How it works

  1. Index on sync.

    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.

  2. Extract dependencies.

    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.

  3. Join patterns to tests.

    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.

  4. Compute coverage.

    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.

  5. Overlay quality.

    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.

  6. Surface freshness.

    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.

06

On the TMP126 demo

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.

Honest boundary Coverage is computed, never assumed. If no TestInst sheet parses, the pill reads "—" with the reason — the metric is only ever the real join of active procedures against real exports. The C/C++ export extraction is regex-based and known to be coarser than the VBA path; the map presents dependency edges as navigation aid, not as compile-verified truth.