Analyzers

Every rule belongs to exactly one analyzer, and the analyzer tells you what kind of problem the rule describes and what happens if you ignore it. The rule ID carries the analyzer as its prefix: PC0003 is a PlatformCop rule, AC0002 an ApplicationCop rule.

The table is ordered by what ignoring a rule costs you, from a runtime failure down to an inconsistent-looking file.

AnalyzerInspectsIf you ignore itExample
PlatformCopConstructs the AL runtime rejects, ignores, or executes differently from what the code saysA runtime error, or code that silently does nothingPC0003 : a filter operator inside SetRange is matched literally
ApplicationCopHow tables, fields, pages, enums, labels and permissions are modeledThe code runs, but the object behaves unlike the standard applicationAC0002 : a single-field primary key without NotBlank accepts an empty key
LinterCopProcedure bodies: complexity, redundancy, patterns with a modern AL replacementNothing breaks; the cost lands on whoever maintains the code nextLC0090 : cognitive complexity above the threshold
DocumentationCopComments and XML documentationNothing at runtime; the next developer has to reverse-engineer intentDC0001 : a Commit without a comment explaining why
FormattingCopCasing, spacing, blank lines and orderingNothing at runtime; the file reads differently from the rest of the codebaseFC0002 : casing mismatch with the declaration
TestAutomationCopTest codeunits only; silent on production codeA test the runner skips or misreportsTA0001 : a global procedure in a test codeunit that is not a test method
CommonCross-cutting diagnostics from the shared ALCops.Common library, loaded with every copA misconfiguration goes unnoticedCM0001 : alcops.json cannot be loaded

PlatformCop, ApplicationCop or LinterCop?

Three analyzers look at code rather than documentation, layout or tests, and they split along one line. PlatformCop asks whether the code works: the construct is wrong for the AL runtime no matter which application it runs in. ApplicationCop asks whether the code fits Business Central: the construct works, but the resulting table, page or permission set does not behave like the base application. LinterCop asks whether the code is maintainable: it is correct and fits, but a shorter, clearer or faster form exists.

When a rule proposal fits more than one of these, the consequence decides. If ignoring the rule produces a runtime error or a silently wrong result, it is a PlatformCop rule.