Skip to content

BC Atlas for VS Code ​

The BC Atlas extension brings everything BC Atlas does into VS Code, where AL developers already work. Open a folder with an app.json and BC Atlas analyzes it; nothing else needs to be installed. The extension contains the BC Atlas engine and runs it on VS Code's own Node.js runtime, in a background process, so the editor stays responsive while large apps are analyzed.

Install BC Atlas (SchulzOli.bc-atlas) from the Extensions view, or from a .vsix file with Extensions: Install from VSIX…. bca setup with VS Code tasks also recommends it in .vscode/extensions.json.

The BC Atlas panel ​

Open it with BC Atlas: Open, the BC Atlas icon in the activity bar, the status bar item, or the BC Atlas button above an AL file. The pages are listed in the BC Atlas side bar, which marks the page the panel shows; the panel itself has no second navigation.

PageShowsSame as
OverviewObjects, apps, health, the architecture at a glance, the most connected objects, and next steps.
HealthEvery finding, filterable by severity, linked to its object.bca check
ArchitectureThe configured architecture or a proposal: components in layers, work items with the steps to resolve them, data ownership, checks, the plan to extract a component as an app, components with Martin metrics, and objects that belong elsewhere.bca architecture
DependenciesThe 3D dependency explorer: objects, modules, apps, and components; inside one app vs. across apps; a timeline by commit, pull request, or release.bca export --view explorer
DiagramsEvery diagram view with zoom and pan; SVG and D2 save the file.bca export --view <view>
ObjectsEvery AL object, searchable and sortable, filtered by type, app, component, or violations.
ObjectOne object: what it uses and what uses it, its wrong-way dependencies with steps to resolve them, fields, procedures, actions, and properties. Open source opens the file at the declaration; a procedure opens at its line.bca export --view object --object <selector>
DocsThe guides from your AL UI tests, when the project has documented UI tests.bca docs generate --export html

The panel takes its design from your VS Code color theme: background, text, borders, accent, selection, error and warning colors, and the editor's fonts, including high contrast and custom themes, the 3D explorer and the Docs page included. It changes with the theme and refreshes when AL files, app.json, .bca.json, or the architecture baseline change. An exported page (bca export) keeps the BC Atlas design with its light and dark mode.

Change the architecture from the panel ​

On the Architecture page:

  • Adopt this architecture saves the proposal (components, layers, allowed dependencies) to .bca.json and accepts today's wrong-way dependencies in .bca-architecture-baseline.json, like bca architecture --propose --write --update-baseline.
  • Propose again with a different grouping (auto, module, app, namespace, folder), namespace depth, or minimum component size shows a new proposal; nothing is written until you adopt it.
  • Accept current violations updates the baseline, like bca architecture --update-baseline. Afterwards bca check fails only on new violations.

See Clean architecture for the rules behind it.

In the editor ​

  • Problems panel: every health and architecture finding with a location, at its file and line. AL compiler and analyzer findings are left to the AL Language extension, which reports them itself.
  • CodeLens above each object declaration: how often it is used, what it uses, its component, and its dependencies against the architecture. Click it to open the object's page.
  • Context menu in AL files: Show This Object, Show This Object in 3D, Diagram of This Object.
  • Status bar: health at a glance; click it for the overview.
  • Side bar (BC Atlas icon): the pages of the panel with their numbers, the page it shows marked, and buttons to analyze again, run the health check, export, and more.

Commands ​

CommandDoes
BC Atlas: Open, Open Page…Shows the panel.
BC Atlas: Run Health CheckAnalyzes again and fills the Problems panel.
BC Atlas: Propose an ArchitectureOpens a fresh proposal.
BC Atlas: Accept Current Violations in the BaselineLike bca architecture --update-baseline.
BC Atlas: Export…Writes the BC Atlas pages as one offline HTML file, the Markdown report, the 3D explorer, the object catalog, or a diagram (bca export).
BC Atlas: Generate Documentation from UI Tests…Markdown, HTML, DITA, Azure DevOps CSV, or BPMN (bca docs generate).
BC Atlas: Set Up Automation.bca.json, Git hooks, pipeline, and schedule, in a terminal (bca setup).
BC Atlas: Run Tasks of a Trigger…What a hook, the pipeline, or the schedule runs (bca run).
BC Atlas: Select Project…The app, or a folder above several apps, to analyze.
BC Atlas: Analyze Again, Show Output

AI agents ​

The extension registers the BC Atlas MCP server with VS Code, so agents in the editor (for example GitHub Copilot in agent mode) can use the BC Atlas tools: check the health and the architecture, propose one, write reports and diagrams, and work with the UI-test documentation. See Agent integration.

Settings ​

SettingDefaultDescription
bcAtlas.projectemptyFolder to analyze, relative to the workspace. Empty: the first app, or the workspace folder when it holds several apps.
bcAtlas.paths[]Only analyze these folders or globs, like --paths. Speeds up large repositories such as BCApps.
bcAtlas.problemstrueFindings in the Problems panel.
bcAtlas.codeLenstrueCodeLens above AL objects.
bcAtlas.nodePathemptyNode.js 22 or later for the engine. Empty uses the runtime built into VS Code (1.101 or later).
bcAtlas.alCompilerautoMicrosoft's AL compiler: auto uses the AL Language extension's (or the AL Development Tools), off only BC Atlas's own analysis, or a path.
bcAtlas.alAnalyzers[]Code analyzers for that compile, e.g. CodeCop. Empty: al.codeAnalyzers when al.enableCodeAnalysis is on.

With the AL Language extension ​

BC Atlas works next to Microsoft's AL Language extension and uses it:

  • the AL compiler of the extension resolves every call and reports compiler and code-analyzer findings on the Health page. It runs in the background after each change; the panel shows the last results at once and refreshes when the compiler is done;
  • BC Atlas reads the editor's al.* settings: al.packageCachePath for symbols, al.codeAnalyzers with al.enableCodeAnalysis, al.ruleSetPath, and al.assemblyProbingPaths;
  • AL: Download Symbols, a new .app, or changed al.* settings start a new analysis, so BC Atlas stays in step with the code and its symbols.

See AL toolchain.

Share it without VS Code ​

sh
bca export ./app -o atlas.html

writes the same pages as one self-contained HTML file that works offline: publish it from CI, attach it to a pull request, or send it to people who do not use VS Code. The file contains the diagrams of the report views with their default settings, the explorer, every object page, and the docs. It cannot change files. Add --history (or --history-by prs or --history-by releases) to include the Git timeline in the explorer.

Large projects ​

The first analysis of the Base Application with the System Application and Business Foundation (about 9,500 objects) takes about two minutes; afterwards every page opens in under a second. The first rendering of a large diagram view can take 20 seconds; it is cached until the source changes. Views with more than 1,500 nodes are not drawn: filter them by namespace or pick a focused view. Use bcAtlas.paths to analyze only some folders of a large repository.

Build the extension from source ​

sh
cd vscode
npm ci
npm test
npm run package      # bc-atlas-<version>.vsix with the engine inside

npm run package packs the BC Atlas engine with npm pack, adds it to the extension, and bundles both with esbuild: the extension becomes dist/extension.js, and each engine entry it starts (the analysis worker, the panel page, the CLI, the MCP server) becomes one file with its dependencies. Only D2, web-tree-sitter, and the 3D explorer's browser bundle stay packages, because they load their WebAssembly and worker files from next to themselves. The .vsix holds about 50 files.

sh
unzip -q bc-atlas-<version>.vsix -d .packaged
BCA_EXTENSION_MAIN=.packaged/extension/dist/extension.js npm test   # the tests against the package

Released under the MIT License.