videoAL Developmentcommunity - not Microsoftreviewed - checked by Opus

How Good Can AL Code Get? — A Live ISO 5055 Review

Live walkthrough of a paid AL code review service that checks an extension against ISO 5055 (CWE-mapped rules) plus a custom AL rule set, using a proprietary analyzer with about 500 diagnostics. Useful as evidence for which ISO 5055 rules apply to AL (permission assignment, read isolation, field assignment order, error info, find set without filters, delete all without is empty, case without else, HTTP timeouts) and where the rules produce false positives or need justified exceptions.

  1. 0:00 Introduction and Code Review Service Overview
  2. 2:59 ISO 5055 Standard and Quality Framework
  3. 5:06 Default Analyzers and AppSource Cops
  4. 7:05 AL Cops and Community Code Cops
  5. 9:22 Proprietary Review Analyzer and CWE 732
  6. 11:27 ISO 5055 Mapping and Read Isolation Rules
  7. 14:57 CWE 1083 - Data Access from Outside Data Manager
  8. 17:24 Field Assignment Order Validation
  9. 19:07 Primary Key Field Violation Detection
  10. 20:30 CWE 778 - Insufficient Logging and Security
  11. 22:36 Isolated Storage Cleanup and Encryption Issues
  12. 25:20 Hard-Coding and Error Message Issues
  13. 27:53 Magic Numbers and Self-Documenting Code
  14. 30:34 Boolean Operator Precedence and Complex Expressions
  15. 32:53 Operator Precedence and Readability Concerns
  16. 36:17 Error Handling with Error Info Pattern
  17. 40:51 Unchecked Return Values and User Experience
  18. 43:47 Custom Procedures and Find Set without Filters
  19. 47:03 Delete All Patterns and Locking Behavior
  20. 49:21 Read Isolation and Table Locking Interaction
  21. 52:43 Lock Release Timing and Record Instance Isolation
  22. 56:32 Case Statements without Else and Code Completeness
  23. 59:04 ISO 5055 Standards and HTTP Client Timeouts
  24. 1:01:08 Code Quality Assessment Tool Feedback
  25. 1:05:10 ISO 5055 Scoring and Warning Assessment
  26. 1:06:22 Manual Code Review and Quality Assessment Reports
  27. 1:10:56 Closing Remarks and Audience Engagement
video Stefan Maron · 2026-05-08Watch on YouTube

Overview

The video describes a code review service built on two parts: ISO 5055, a language-independent standard with 119 rules, not all of which fit AL, and a custom set of AL-specific rules. Stefan Maron first covers the default AppSource analyzers and AL Cops, then shows a proprietary analyzer that produces about 500 diagnostics mapped to ISO 5055 and CWE. The source code of that analyzer is not shared.

He then goes through findings on sample code: CWE 732 permissions, read isolation, CWE 1083 data access, field assignment order, logging, isolated storage, hard-coded values, magic numbers, boolean operator precedence, error info, unchecked return values, find set without filters, delete all with is empty, case without else, and HTTP client timeouts. He notes that the project is still changing, some rules are under review, and findings need manual review. He says the analyzer is too noisy for continuous integration and that the signed report is aimed at management.

Key points

  • ISO 5055 has 119 rules, and not all of them fully apply to AL. The review adds a custom AL rule set on top.
  • The proprietary analyzer gives about 500 diagnostics mapped to ISO 5055 and CWE. It is not published, is not enabled in the author’s daily development, and is meant to surface findings for a manual review.
  • Read isolation rule: reads without explicit read isolation default to escalated update locks, which can degrade concurrency under load. A related rule about relying on the primary key when no current key is set is under review and may be removed.
  • Field assignment order should follow the page pattern: init, validate primary key fields, insert(true), then validate the remaining fields and modify(true). Exceptions should be documented.
  • Use error info with navigate actions and custom dimensions instead of plain errors to give users fix-it actions and give support more context.
  • Flagged patterns include find set without filters, delete all without an is empty check, case statements without else, unchecked return values, hard-coded literals and URLs, and HTTP client calls without an explicit timeout. Intentional cases, such as upgrade codeunits, can be documented as accepted.
  • Mixed AND and OR without parentheses is flagged. The presenter could not find documentation on AL precedence and recommends parentheses for readability. Findings can be false positives and need manual review.

Features

Feature Status At
ISO 5055 Review Standard Integration status not stated, demoed 3:38
Custom AL Quality Framework status not stated, demoed 4:42
Free Quality Assessment Service status not stated, demoed 5:18
Default Analyzers Configuration status not stated, demoed 6:11
AL Cops and Community Code Cops status not stated, demoed 8:05
Proprietary Review Analyzer status not stated, demoed 9:51
CWE 732 Permission Assignment Mapping status not stated, demoed 10:19
Read Isolation and Concurrency Rule EAT-10 status not stated, demoed 12:59
CWE 1083 - Data Access from Outside Data Manager status not stated, demoed 14:57
Field Assignment Order Validation status not stated, demoed 17:36
Primary Key Field Violation Detection status not stated, demoed 19:21
CWE 778 - Insufficient Logging for Security Events status not stated, demoed 20:59
Isolated Storage Cleanup Validation status not stated, demoed 22:57
Isolated Storage Encryption Validation status not stated, demoed 24:50
CWE 1052 detection status not stated, demoed 26:40
Magic number detection status not stated, demoed 27:53
Self-documenting code through extraction status not stated, demoed 28:32
CWE 783 mixed boolean operators status not stated, demoed 32:20
Error info pattern status not stated, demoed 37:55
Error info with custom dimensions status not stated 40:13
Error info with navigate actions status not stated, demoed 39:15
Unchecked return value detection status not stated, demoed 40:59
Find set without filters warning status not stated, demoed 45:57
Delete all without is empty check warning status not stated, demoed 47:16
Read isolation and table locking interaction status not stated, demoed 49:21
Lock release on variable scope status not stated 53:31
Record isolation level on record instances status not stated, demoed 54:38
Case statement completeness checking status not stated, demoed 57:20
Explicit HTTP client timeout setting status not stated, demoed 59:54
ISO 5055 code quality assessment status not stated, demoed 59:04
ISO 5055 Quality Scoring System status not stated, demoed 1:05:10
Quality Assessment Report Service status not stated 1:08:20

AL objects mentioned

As heard in the captions. A name that matches one object page by exact type and name links to it; the others stay as named.

  • other “Review Analyzer” at 10:03
  • codeunit “ISO store manager” at 23:02
  • other “error info” at 39:15
  • other “codeunit run” at 41:40
  • other “extension license” at 46:34
  • other “update lock” at 50:06
  • other “delete all” at 52:21
  • other “lock table” at 54:53
  • other “JSON get” at 56:53

Not found in BC28-30: codeunit “ISO store manager”.

Quotes

  • 3:38 “this review that I do runs against. And it basically contains two different uh areas. one is uh basically derived from ISO 5055 which”
  • 4:19 “and this has 119 rules. Now this is annoying. Um I have evaluated all of them in detail and not all of them are”
  • 9:51 “So, what I’ve built is a proprietary analyzer. I won’t share the source code of, but I can show you a little bit of”
  • 11:37 “So if we what was it 732 we go onto this one second incorrect permission assignment permission sets grant brower access then intended expose”
  • 13:11 “missing expl explicit read isolation on record read. So read reads without explicit read isolation defaults to escalate update locks invisibly causing concurrency degradation”

Disclaimers in the video

  • 13:38 subject-to-change: this rule is also under review. I think I will update this and remove this because it doesn’t make that much sense.
  • 14:33 subject-to-change: That’s why this rule is uh also under review. I think I will update this and remove this because it …
  • 21:21 subject-to-change: telemetry here needs an update because I’ve uh I’ve changed the rule a little bit recently
  • 24:12 coming-later: Once we would get an event like this, I would probably add this uh this coverage to this rule
  • 1:04:54 subject-to-change: This is a living project. Um the automatic review obviously doesn’t surface what are false positives

Presenters (as heard): Jeremy, Hayden.