<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LinterCop on Stefan Maron | Business Central &amp; AL Development</title><link>https://stefanmaron.com/tags/lintercop/</link><description>Recent content in LinterCop on Stefan Maron | Business Central &amp; AL Development</description><generator>Hugo -- gohugo.io</generator><language/><lastBuildDate>Fri, 27 Feb 2026 18:00:00 +0100</lastBuildDate><atom:link href="https://stefanmaron.com/tags/lintercop/index.xml" rel="self" type="application/rss+xml"/><item><title>Introducing ALCops — LinterCop's Next Chapter</title><link>https://stefanmaron.com/posts/introducing-alcops/</link><pubDate>Fri, 27 Feb 2026 18:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/introducing-alcops/</guid><description>Arthur van de Vondervoort joined me on stream this week to announce ALCops — a project he&amp;rsquo;s been quietly building for the last three or four months as a complete replacement for BusinessCentral.LinterCop . You can watch the full stream on YouTube if you want the unfiltered version.
I started LinterCop a few years back, Arthur took it somewhere far beyond what I had imagined — almost 100 rules, a huge contributor base — and now he&amp;rsquo;s building the next thing on top of that foundation.</description></item><item><title>How to Set Up a New Business Central Development Project – The 100% Correct Way</title><link>https://stefanmaron.com/posts/how-to-set-up-a-new-business-central-development-project/</link><pubDate>Thu, 05 Jun 2025 07:32:18 +0200</pubDate><guid>https://stefanmaron.com/posts/how-to-set-up-a-new-business-central-development-project/</guid><description>How to Set Up a New Development Project/App — The 100% Correct Way The foundation of any good Business Central app is the way it&amp;rsquo;s set up. That might sound obvious, but it&amp;rsquo;s also one of the most overlooked steps in AL development.
Too often, projects start with a quick AL: Go! command and get to writing objects immediately — skipping over critical setup tasks that ensure long-term maintainability, CI/CD readiness, testability, and AppSource compatibility.</description></item><item><title>Indirect Permissions in Business Central</title><link>https://stefanmaron.com/posts/indirectpermissions/</link><pubDate>Sun, 06 Oct 2024 20:28:30 +0200</pubDate><guid>https://stefanmaron.com/posts/indirectpermissions/</guid><description>Indirect Permissions in Business Central Recently I created a new Rule in the BC Linter Cop to inform about missing Permission to do data Access:
https://github.com/StefanMaron/BusinessCentral.LinterCop/wiki/LC0068 This resulted in a number of discussions about when to set the Permissions property, and if it makes sense at all.
https://github.com/StefanMaron/BusinessCentral.LinterCop/pull/768 https://github.com/StefanMaron/BusinessCentral.LinterCop/issues/725 https://github.com/StefanMaron/BusinessCentral.LinterCop/issues/780 &amp;hellip; and some more, also on other platforms.
So I want to use this Blog post to try to really explain my reasoning behind the rule and why I think that it does make sense exaclty as it is.</description></item><item><title>LinterCop Development: Fixing LC0068 False Positives and the Sandbox Code History Repo</title><link>https://stefanmaron.com/posts/lintercop-lc0068-indirect-permissions-fixes/</link><pubDate>Tue, 03 Sep 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/lintercop-lc0068-indirect-permissions-fixes/</guid><description>This stream happened to land on a good day — I&amp;rsquo;d just been accepted as a Microsoft MVP, so I opened with that before diving straight into bug fixes for LinterCop . The focus was on LC0068, the rule that warns when an object is missing the Permissions property for table data it touches, and there were a handful of community-reported false positives sitting in the issue tracker that needed attention.</description></item><item><title>Basic Repo Setup with AL-Go</title><link>https://stefanmaron.com/posts/basic-repo-setup-with-al-go/</link><pubDate>Thu, 15 Aug 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/basic-repo-setup-with-al-go/</guid><description>Every new Business Central project starts with the same question: how do I get from zero to a working CI/CD pipeline without wasting a day on config? This stream walks through the entire setup — from clicking &amp;ldquo;Use this template&amp;rdquo; on GitHub all the way to running a release and deploying to an environment.
The full stream is on YouTube if you want to follow along in real time.
Choosing your AL-Go template I use AL-Go for all my projects.</description></item><item><title>Reviewing Microsoft's AI Test Toolkit PR in BCApps — Guideline Fixes Live</title><link>https://stefanmaron.com/posts/reviewing-ai-test-toolkit-pr-bcapps-guideline-fixes/</link><pubDate>Wed, 03 Jul 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/reviewing-ai-test-toolkit-pr-bcapps-guideline-fixes/</guid><description>The full stream is on YouTube if you want to watch along. The short version: Microsoft opened a pull request to add an AI Test Toolkit to the public BCApps repository , and I spent a stream going through it file by file, fixing AL guideline violations and trying to get a counter-PR merged.
The previous session I&amp;rsquo;d reviewed the PR and left individual comments on things I spotted. What I learned from that: if you click &amp;ldquo;Add comment&amp;rdquo; instead of &amp;ldquo;Start review&amp;rdquo;, GitHub sends one email per comment to everyone subscribed to the PR.</description></item><item><title>Validate() – All Tables / All Fields / Always</title><link>https://stefanmaron.com/posts/validate-all-tables-all-fields-always/</link><pubDate>Sun, 16 Jun 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/validate-all-tables-all-fields-always/</guid><description>At BC TechDays 2024 in Antwerp, Christian Hovenbitzer and I gave a session with a deliberately provocative title: Validate() – all tables / all fields / always. The room was packed, which tells you this is something people have strong opinions about.
You can watch the full recording on YouTube if you want to follow along.
The short version of our argument: calling Validate() on a field should be your default.</description></item><item><title>Write-Off App: AppSource Finishing Touches</title><link>https://stefanmaron.com/posts/write-off-app-abcsource-finishing-touches/</link><pubDate>Tue, 04 Jun 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/write-off-app-abcsource-finishing-touches/</guid><description>This stream was about getting the Automatic Write-Off app ready for AppSource — the last round of cleanup before the first publish. No new features, just the unglamorous work that actually matters: Access properties on every object, InherentPermissions, permission sets, enum implementations, and reorganizing the folder structure. If you&amp;rsquo;ve been building your first AppSource extension, this session is probably where I&amp;rsquo;d point you.
The full stream is on YouTube if you want to follow along.</description></item><item><title>BC TechDays 2023</title><link>https://stefanmaron.com/posts/bc-techdays-2023/</link><pubDate>Fri, 23 Jun 2023 14:53:23 +0000</pubDate><guid>https://stefanmaron.com/posts/bc-techdays-2023/</guid><description>And yet another conference has come to an end. And again its this weird feeling I can not really describe. All I know is, I am already looking forward to meeting all of the community again in France for EMEA later this year!
It was again an awesome conference for may reasons: Good sessions, good networking, meeting all the friends again, having valuable talk with all those experts on their specific field.</description></item><item><title>Bugfixes for LinterCop Rule LC0015</title><link>https://stefanmaron.com/posts/bugfixes-for-lintercop-rule-lc0015/</link><pubDate>Wed, 02 Feb 2022 08:00:45 +0000</pubDate><guid>https://stefanmaron.com/posts/bugfixes-for-lintercop-rule-lc0015/</guid><description>I just released a new version for the BusinessCentral.LinterCop .
This rule is similar to the PTE0004 from Microsoft which checks for your tables to have a TableData permission set. All the other permissions are not covered.
After some discussion and some thoughts I ended up also including the check for TableData in LC0015. If you dont want to have a double check for this, you can disable PTE0004.
More details can be found in the dedicated docs side for this rule:</description></item><item><title>Business Central LinterCop with older Versions of BC</title><link>https://stefanmaron.com/posts/business-central-lintercop-with-older-versions-of-bc/</link><pubDate>Tue, 11 Jan 2022 05:37:14 +0000</pubDate><guid>https://stefanmaron.com/posts/business-central-lintercop-with-older-versions-of-bc/</guid><description>If you want to run pipelines with the LinterCop, you can use Run-ALPipeline and pass in the path to the LinterCop.dll via the parameter - CustomCops. But when running pipelines for various versions of BusinessCentral you might encounter errors like this:
Microsoft.Dynamics.Nav.CodeAnalysis, Version=8.2.8.24543, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;#39;(,): warning : An instance of analyzer http://BusinessCentral.LinterCop.Design.Rule0012DoNotUseObjectIdInSystemFunctions cannot be created from C:\Agent\LinterCop\BusinessCentral.LinterCop.dll : Could not load file or assembly &amp;#39;Microsoft.Dynamics.Nav.CodeAnalysis, Version=8.2.8.24543, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;#39;. The system cannot find the file specified.</description></item><item><title>BusinessCentral.LinterCop v0.23.0</title><link>https://stefanmaron.com/posts/businesscentral-lintercop-v0-23-0/</link><pubDate>Wed, 05 Jan 2022 07:10:45 +0000</pubDate><guid>https://stefanmaron.com/posts/businesscentral-lintercop-v0-23-0/</guid><description>A new version of the BusinessCentral.LinterCop just got released 🥳
Special thanks to Rob van Bekkum @rvanbekkum who wrote two new rules!
Added Help links to wiki Microsoft already did this in the december release I think, and now the LinterCop also includes direct links to the wiki on GitHub.
Just by clicking for example on &amp;ldquo;LC0015&amp;rdquo; you can open the wiki page for this rule on the GitHub Repository https://github.</description></item><item><title>Updates on my LinterCop project</title><link>https://stefanmaron.com/posts/updates-on-my-lintercop-project/</link><pubDate>Wed, 17 Nov 2021 06:20:47 +0000</pubDate><guid>https://stefanmaron.com/posts/updates-on-my-lintercop-project/</guid><description>In the last days, I managed to get some new updates for you released. Since this would be too much for a tweet, I will summarize here what changed, what will change in the next days (hopefully 🙃 ), and what is planned for future updates.
What changed lately? Pipelines and automated builds The biggest change I did in the last weeks, was to introduce pipelines and automated builds on GitHub for the LinterCop.</description></item><item><title>BusinessCentral.LinterCop goes VS Code!</title><link>https://stefanmaron.com/posts/businesscentral-lintercop-goes-vs-code/</link><pubDate>Tue, 21 Sep 2021 15:59:09 +0000</pubDate><guid>https://stefanmaron.com/posts/businesscentral-lintercop-goes-vs-code/</guid><description>After quite some analyzing and reverse engineering, I got it working!
The custom code analyzer BusinessCentral.LinterCop is running included in VS Code.
And here is how to do it: First, go to my GitHub and download the latest binary here .
Then just place it on your hard drive, for example &amp;ldquo;C:\ALCustomCops\&amp;rdquo;
Then go to your settings file and insert it in the &amp;ldquo;al.codeAnalyzers&amp;rdquo; like this:
And thats it! Pretty short Blog but this should get you going ;)</description></item><item><title>BusinessCentral.LinterCop</title><link>https://stefanmaron.com/posts/businesscentral-lintercop/</link><pubDate>Thu, 02 Sep 2021 08:13:42 +0000</pubDate><guid>https://stefanmaron.com/posts/businesscentral-lintercop/</guid><description>As you maybe remember, I am working on a linter solution for AL for some time already. I tried a VS Code extension. I tried to build a dll to increase performance and to make it available in powershell and therefore also in pipelines. But for now I did not find a proper solution.
Recently I realized that the AL Compiler has a parameter &amp;ldquo;/analyzer:&amp;rdquo; and accepts a dll. And depending on wich cops you enable, the according ddls are just passed in.</description></item><item><title>AL Lint v0.1.7: Code Metrics</title><link>https://stefanmaron.com/posts/al-lint-v0-1-7-code-metrics/</link><pubDate>Tue, 11 Aug 2020 06:09:23 +0000</pubDate><guid>https://stefanmaron.com/posts/al-lint-v0-1-7-code-metrics/</guid><description>This morning I updated the code metrics calculation in AL Lint. Code metrics are meant to give you some comparable numbers on how complex your code is.
Why is this important information?
In general, if you install this extension, you aim for clean code. This is because code is written once but probably is read multiple times. And the easier it is to understand the more time you will save while reading your code.</description></item><item><title>VS Code extension: AL Lint</title><link>https://stefanmaron.com/posts/vs-code-extension-al-lint/</link><pubDate>Sat, 08 Aug 2020 13:34:19 +0000</pubDate><guid>https://stefanmaron.com/posts/vs-code-extension-al-lint/</guid><description>Maybe you have read this in twitter already: I took over the AL Lint extension for VS Code from Marije Brummel. She searched quite some time already for someone and finally she found me :D
For now I did two things on this extension for now.
I worked myself a little bit into extension development for VS Code and did a little bit of refactoring, updated some dependencies to new versions and removed checks which are now covered by the AL Code Cops.</description></item></channel></rss>