{"id":130,"date":"2026-02-23T19:39:34","date_gmt":"2026-02-23T18:39:34","guid":{"rendered":"https:\/\/www.vondervoort.be\/?p=130"},"modified":"2026-02-23T19:39:34","modified_gmt":"2026-02-23T18:39:34","slug":"alcops-the-next-chapter-of-lintercop","status":"publish","type":"post","link":"https:\/\/www.vondervoort.be\/index.php\/2026\/02\/23\/alcops-the-next-chapter-of-lintercop\/","title":{"rendered":"ALCops: The Next Chapter of LinterCop"},"content":{"rendered":"\n<p>Over the past few months, I\u2019ve been quietly working in the background on the Next Chapter of the LinterCop. I wasn\u2019t sure when the right moment would be to announce it, but I believe we\u2019ve reached that point. So I\u2019m proud to introduce &#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ALCops<\/h2>\n\n\n\n<p><em>A community driven collection of code analyzers for the AL programming language of Microsoft Dynamics 365 Business Central.<\/em><\/p>\n\n\n\n<p>Head over to <a href=\"https:\/\/alcops.dev\" target=\"_blank\" rel=\"noreferrer noopener\">ALCops.dev<\/a> for the docs, tools and everything else you need to get started.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">A Bit of History<\/h2>\n\n\n\n<p>Some time ago, I had a conversation with Stefan Maron about the future of the LinterCop. He simply didn\u2019t have enough time to keep maintaining it. We considered transferring the existing repository, but moving it would\u2019ve broken all the integrations and pipelines. Breaking things for everyone using it daily simply wasn\u2019t an option, so I thought: is there a better way?<\/p>\n\n\n\n<p>That question led to the birth of a new project. Starting fresh meant we could allow breaking changes without damaging existing setups. It also gave me room to rethink some things properly instead of patching around old decisions. And I made a conscious choice not to put this under my personal GitHub account. I didn\u2019t want this to become &#8220;my project&#8221; and want it to have space to grow beyond one person.<\/p>\n\n\n\n<p>ALCops is a continuation of BusinessCentral.LinterCop and this project wouldn&#8217;t exist without the foundation built by that community. A heartfelt thank you to every contributor who invested their time, ideas, and code into the original LinterCop. Your work didn&#8217;t end there, it lives on and grows further in the ALCops project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Freezing BusinessCentral.LinterCop<\/h2>\n\n\n\n<p>I can\u2019t continue active development on BusinessCentral.LinterCop and build ALCops at the same time. I tried juggling both for a while, but I couldn&#8217;t keep up to he honest. So over the last months, I\u2019ve poured my available time into the ALCops project. That means BusinessCentral.LinterCop hasn\u2019t received the attention I would\u2019ve liked to give it. That wasn\u2019t an easy decision, but it felt more needed to focus fully on creating a solid new foundation rather than half-maintaining two projects.<\/p>\n\n\n\n<p>Because of that, we\u2019ll be setting the BusinessCentral.LinterCop repository to read-only state somewhere in the next upcoming months. The project will gradually come to a halt and there won\u2019t be new features or ongoing updates there anymore.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where We Stand Today<\/h2>\n\n\n\n<p>The current version, v0.5.0, gives a pretty idea of where we are. About 95% of the rules from BusinessCentral.LinterCop have been migrated to ALCops. There\u2019s a VS Code extension available, and support for AL-Go is in place. So for daily AL development, it could maybe already be a viable replacement.<\/p>\n\n\n\n<p>What\u2019s still on my list is an Azure DevOps extension. That one is a bit trickier, because I want to make it generic enough to work alongside different Azure DevOps solutions like ALOps, Alpaca, and others. I\u2019m still figuring out the cleanest way to approach that without making it overly complicated.<\/p>\n\n\n\n<p>At this point, ALCops should be mature enough to replace BusinessCentral.LinterCop in day-to-day AL development. If you\u2019re working with AL, I\u2019d genuinely encourage you to try it.<\/p>\n\n\n\n<p>So over the coming weeks, my focus will be on expanding DevOps integrations and exploring better interaction with agent-based AI tools like Claude Code and GitHub Copilot. Stefan Maron is still involved, by the way. He\u2019s helping on how ALCops can integrate with agent-based AI tools and looking into at what an ALCops MCP maybe could look like. This is a big one and it could fundamentally change how ALCops fits into the tooling ecosystem.<\/p>\n\n\n\n<p>There\u2019s still work to do. There always is, but the base is here now.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Contribute<\/h2>\n\n\n\n<p>If you try ALCops and have idea&#8217;s, feedback or improvements, please don\u2019t hesitate to contribute. So if you\u2019ve ever thought, &#8220;<em>This rule should work differently<\/em>&#8221; or &#8220;<em>Wouldn\u2019t it be useful if it also checked this?<\/em>&#8221; now\u2019s the time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the past few months, I\u2019ve been quietly working in the background on the Next Chapter of the LinterCop. I wasn\u2019t sure when the right moment would be to announce it, but I believe we\u2019ve reached that point. So I\u2019m proud to introduce &#8230; ALCops A community driven collection of code analyzers for the AL [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-130","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/posts\/130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/comments?post=130"}],"version-history":[{"count":14,"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/posts\/130\/revisions"}],"predecessor-version":[{"id":144,"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/posts\/130\/revisions\/144"}],"wp:attachment":[{"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/media?parent=130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/categories?post=130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vondervoort.be\/index.php\/wp-json\/wp\/v2\/tags?post=130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}