Code Quality

2025

2024

Indirect Permissions in Business Central

Why LinterCop rule LC0068 warns about missing Permissions properties in AL — a complete explanation of indirect permissions, 250 restricted tables, and

Creating the ErrorInfo Wrapper

Live-stream walkthrough of building a fluent ErrorInfo wrapper codeunit in AL using the 'this' keyword, fix-it actions, and the facade pattern for clean

2022

Bugfixes for LinterCop Rule LC0015

LinterCop v0.24.0 fixes rule LC0015 to check all permission types — not just TableData — filling the gap left by PTE0004 for Business Central AL

BusinessCentral.LinterCop v0.23.0

LinterCop v0.23.0 adds wiki help links, LC0014 for permission set caption length, and LC0015 for full permission set object coverage — not just tables.

2021

Updates on my LinterCop project

LinterCop update: GitHub Actions CI pipelines, expanded Rule0005 casing checks, new LC0013 NotBlank rule for primary keys, and plans for pre-release beta

BusinessCentral.LinterCop goes VS Code!

Install LinterCop in VS Code for AL development — the auto-updating extension adds custom code analysis rules via your al.codeAnalyzers settings.

BusinessCentral.LinterCop

Introducing LinterCop — an AL code analyzer for Business Central built by reverse-engineering the compiler /analyzer: interface. Contribute on GitHub.

Be careful with dynamic code

How overusing RecordRef and FieldRef in Business Central caused a 650% performance regression on sales header modifications — and why interfaces fixed it

Code review: Loop over an Enum

Refactor an AL enum loop into a clean foreach with Enum.Ordinals() and FromInteger() — a code review on why readable AL code is always easier to maintain.

2020

Business Central and Multiline Fields

Display long text fields across multiple lines in Business Central using the built-in WebPageViewer control add-in — no custom control add-in required.

AL Lint v0.1.7: Code Metrics

AL Lint v0.1.7 adds cyclomatic complexity and maintainability index metrics to the VS Code status bar, helping you keep Business Central AL code clean and

VS Code extension: AL Lint

Stefan Maron takes over the AL Lint VS Code extension — adding a function length check and planning clean code and performance rules beyond the built-in

Condition basics in AL

Practical AL coding patterns for writing clean, readable conditions — from IN statements and case true of to extracting complex logic into named functions.

Coding4Performance 1: Text Builder

AL TextBuilder vs string concatenation benchmarks — why += causes exponential slowdowns and how TextBuilder handles 10 million appends in just 6 seconds.