ARXML Workbench
A VS Code extension for navigating, inspecting, and comparing AUTOSAR ARXML / CDD files. Streams large documents into a tree, follows cross-file references, exports review-ready HTML/Excel diff reports, and opens a side workbench panel with a recursive AUTOSAR-aware inspector.
Previously published as ARXML Tree Viewer; renamed to ARXML Workbench in 0.4.1 to reflect the broader feature set.
Installation
- Install from the VS Code Marketplace, or sideload the latest
arxml-workbench-*.vsix from pre-release/.
- Open any
.arxml / .cdd file. The ARXML Tree View appears in the Activity Bar.
- For local development:
npm install, then npm run esbuild.
Features
- Tree View — SAX-streamed parser handles large files; selecting a node reveals the matching range in the editor.
- Cross-File Hover Navigation — hovering any
*REF DEST="..." shows a clickable link to the matching AR-PATH, resolved across all open ARXML files (cross-file hits show the source filename).
- Persistent Bookmarks — workspace-scoped, survive reloads.
- Focus Sync — caret position in the editor focuses the closest tree node.
- Side-by-Side Compare — right-click two
.arxml/.cdd files → ARTree: Compare ARXMLs. Color-coded added/removed/modified, identity-aware child pairing (by SHORT-NAME then tag+position), ignores UUID / whitespace on demand, prev/next jump, double-click any row to reveal in source.
- Quality Diff Reports (HTML + Excel) — export from the compare view or directly from the Explorer. Includes weighted risk score, automatic findings (reference retargets, numeric drift, UUID-only churn, mass add/remove), per-module Mod sheets with frozen panes + autofilter + data bars, embedded provenance (file SHA-256, reviewer/ticket/notes, tool version). Self-contained HTML is theme-aware and print-friendly.
- ARXML Workbench Panel (preview) —
ARTree: Open Workbench (Beside) opens a webview beside the source ARXML that follows the integrated tree selection.
- Overview — SHORT-NAME, AR-PATH, UUID, DESC / LONG-NAME / CATEGORY / INTRODUCTION, AUTOSAR R20-11 schema description for the selected tag, and root attributes.
- Properties — recursive grouped inspector. Scalar fields render as a flat table; sub-containers under
SUB-CONTAINERS / ELEMENTS / AR-PACKAGES are grouped by DEFINITION-REF leaf with catalog-aware columns (e.g. DcmDspDid rows surface DcmDspDidIdentifier). Every row has an inline + expander that reveals that container's own fields and nested sub-groups recursively — mirroring the full Raw XML depth as tables.
- References — VALUE-REF entries with their DEST.
- Raw XML — recursive card inspector with the verbatim XML in a disclosure block; loaded lazily on tab activation.
- Keybinding
Ctrl+Alt+W (Cmd+Alt+W on macOS) toggles focus between editor and workbench. Schema descriptions come from the bundled xsd/AUTOSAR_00049.xsd (AUTOSAR R20-11, per GM SDV-8001).

Usage
Filter Controls
Filtering is integrated into the ARXML Explorer view. Three fields (Name, AR-PATH, Element), each with right-click mode selection (Contains / Regex / Glob). Recent filters and file-filter toggle are available from the header.
Shortcuts: Ctrl+Shift+F toggle controls · Ctrl+F toggle File Filter · Esc clear filter (when the ARXML Explorer is focused).
Custom Views
Select from View Controls → Custom Views, edit via Edit Custom Views, and import/export sets via the corresponding ARTree: …custom views commands (includes versioning and conflict resolution). Storage scope is controlled by arxmlTree.customViewStorageScope. Schema and examples: .claude/skills/arxml-tree-domain/references/custom-views.md.
Bookmarks
Right-click a tree node → ARTree: Add bookmark. Manage entries from the Bookmarks tree.
Hover & Go-To References
Hover any REF DEST="..." for a trusted link to the matching AR-PATH (across open files); cross-file hits show a 📄 icon with the target filename. Clicking runs ARTree: Goto node, opening the file if needed.
Compare & Diff Reports
- Launch a compare via Explorer multi-select or the Select for Compare → Compare with Selected two-step.
- Toolbar offers diff filters (only diffs / all), ignore UUID, ignore whitespace, expand/collapse, prev/next, and counts.
- Export via the toolbar ⤓ HTML / ⤓ Excel buttons, or headlessly via ARTree: Export Diff Report (HTML / Excel) in the Explorer context menu.
- Report settings live under
arxmlTree.diffReport.* (defaultFormat, includeUnchangedInExcel, maxModuleSheets).
Commands & Settings
All commands are discoverable from the Command Palette under ARTree:. The canonical command and setting list lives in package.json under contributes.commands and contributes.configuration.
Notable groups:
- Tree: Refresh, Reveal in file, Focus node, Goto node.
- Filtering: Toggle Filter Controls, Toggle File Filter, Clear Filter.
- Bookmarks: Add / Remove bookmark.
- Custom Views: Edit / Select / Apply / Toggle / Add / Remove / Import / Export.
- Compare: Compare ARXMLs, Select for Compare, Compare with Selected, Export Diff Report.
- Workbench: Open Workbench (Beside), Toggle Workbench Focus.
- Files with 1000+ nodes auto-switch to optimized rendering with lazy/chunked processing and intelligent caching.
- Filter application is debounced (
arxmlTree.debounceDelay, default 200ms) and adapts to file size when arxmlTree.adaptiveDebounce is enabled.
arxmlTree.refreshMode: onChange (default, most responsive), onSave, or manual (lowest CPU; cross-file refs may show stale data until refresh).
arxmlTree.workspaceSearchLargeFileThresholdMB (default 50, range 10–500) switches workspace search to conservative filesystem-fallback mode for huge files.
- Workbench selection updates use a lightweight payload + lazy Raw XML, an LRU cache keyed by URI/AR-path/document version, and a monotonic selection sequence that drops stale messages from rapid clicks.
Limitations & Tips
- Cross-file navigation needs the target file open (or reachable via workspace search). Definition files under
/MICROSAR/Rte/... may live in separate ARXMLs.
- For extremely large files, VS Code may disable document sync; workspace search uses a filesystem fallback so splitting is rarely needed.
- Parsing requires valid XML; syntax errors are surfaced in the notification area.
- Bookmark ranges are not auto-updated when you insert lines above them — use the AR-PATH tooltip link to re-sync.
Contributing & Testing
npm run compile — TypeScript (strict, noImplicitReturns, noFallthroughCasesInSwitch, noUnusedParameters). Prefix unused params with _.
npm run lint — ESLint flat config (eslint.config.js, ESLint 9+).
npm test — Mocha suite covering parser, search, filters, stores, WebView messaging, custom views, and the workbench service.
npm run esbuild — dev build. npm run vscode:prepublish — production build.
- Package via
npx @vscode/vsce package.
Contributions welcome — document new commands or settings in this README and ensure tests pass.
Credits
Forked from robinbreast/vscode-arxml-tree — the original ARXML Tree Viewer by robinbreast (Kihoa Nam), whose tree, hover, and bookmark foundations made this workbench possible. Thank you. See LICENSE for the dual MIT copyright.
License
MIT — © 2024 robinbreast, © 2026 Pritam Jagtap.
| |