Re-enable AA0194 analyzer and obsolete unused DE/IT VAT return actions - #10075
Open
Onat Buyukakkus (onbuyuka) wants to merge 4 commits into
Open
Re-enable AA0194 analyzer and obsolete unused DE/IT VAT return actions#10075Onat Buyukakkus (onbuyuka) wants to merge 4 commits into
Onat Buyukakkus (onbuyuka) wants to merge 4 commits into
Conversation
The AA0194 analyzer (an action must define an OnAction trigger or a RunObject) was downgraded from Error to Warning in base.ruleset.json. Because every project compiles against base.ruleset.json under workspace compilation, this disabled the rule repo-wide and allowed a trigger-less action to ship, crashing the web client on the Purchase Orders page. Remove the AA0194 downgrade so it inherits Error from CodeCop.ruleset.json, and clean up the only resulting violations: the unused, hidden VAT return actions in the DE and IT localizations of the VAT Return Period Card and List pages. These actions carry no OnAction trigger, so they are marked ObsoleteState = Pending and guarded with #if not CLEAN29 for removal, with their promoted actionrefs guarded to match. Fixes AB#645060 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2f773223-c7cb-4f70-8287-c3353c65cbf9
Onat Buyukakkus (onbuyuka)
temporarily deployed
to
triage
August 10, 2026 07:59 — with
GitHub Actions
Inactive
Onat Buyukakkus (onbuyuka)
enabled auto-merge
August 10, 2026 08:02
CI surfaced additional AA0194 violations after the rule was re-enabled as Error. These actions do have an OnAction trigger, but their bodies contain only comments, which the analyzer treats the same as a missing trigger. Suppress the rule around them with #pragma warning disable AA0194, matching the existing pattern in Companies.Page.al: - System PageDesigner PageFields "View" action (intentionally empty body to override default row behavior). - DE ECSLReport hidden Log Entries/Release/Reopen placeholder actions. - RU PostedFAWriteoffAct visible Dimensions/Comments actions whose bodies are commented out; suppression preserves their existing behavior. Fixes AB#645060 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2f773223-c7cb-4f70-8287-c3353c65cbf9
The Log Entries/Release/Reopen actions on the DE EC Sales List report are Visible = false with commented-out OnAction bodies, and their promoted actionrefs inherit that hidden state - they are fully inert, exactly like the DE/IT VAT return actions obsoleted earlier in this PR. For consistency, treat them the same way: mark them ObsoleteState = Pending (ObsoleteTag '29.0') and guard them and their promoted actionrefs with #if not CLEAN29, rather than only suppressing AA0194. The pragma remains inside the guard because the empty OnAction body still triggers the rule until the actions are removed in CLEAN29. Visible actions with inert bodies (System PageFields View, RU PostedFAWriteoffAct Dimensions/Comments) are intentionally left as pragma suppressions, since removing a visible control would be a UI change. Fixes AB#645060 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2f773223-c7cb-4f70-8287-c3353c65cbf9
Guarding the promoted actionrefs with #if not CLEAN29 alone caused AS0031: in the CLEAN-symbols breaking-change build the actionrefs disappear versus the baseline, which is treated as an unsanctioned removal of a control that dependent extensions may reference. Give each guarded actionref (and the ECSLReport Category_Release promoted group that is fully removed) its own ObsoleteState = Pending / ObsoleteReason / ObsoleteTag = '29.0' markers, matching the base actions and the existing pattern in pages such as VATStatement and FixedAssetCard. Obsoleting the parent action is not enough on its own. Fixes AB#645060 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2f773223-c7cb-4f70-8287-c3353c65cbf9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
The
AA0194analyzer (an action must define anOnActiontrigger or aRunObjectproperty) was downgraded from Error to Warning insrc/rulesets/base.ruleset.json. Under workspace compilation every project compiles againstbase.ruleset.json, so this override disabled the rule repo-wide. As a result a trigger-less action was able to ship and crash the web client when navigating to the Purchase Orders page.This PR:
AA0194downgrade frombase.ruleset.json, so it inherits Error fromCodeCop.ruleset.jsonagain (matching the convention that this file only lists deviations).ECSLReportLog Entries/Release/Reopenplaceholders. All areVisible = falsewith no realOnActionbody and hidden promotedactionrefs, so they are markedObsoleteState = Pending(reason +ObsoleteTag = '29.0') and guarded with#if not CLEAN29, with their promotedactionrefs guarded to match. (For the ECSLReport actions the empty-body#pragma warning disable AA0194is kept inside the guard, since the emptyOnActionstill trips the rule until they are removed in CLEAN29.)#pragma warning disable AA0194only on visible actions whoseOnActionbody is intentionally empty — removing a visible control would be a UI/compat change beyond this bug's scope: SystemPageDesignerPageFieldsView(functional; the empty body overrides default row behavior) and RUPostedFAWriteoffActDimensions/Comments(visible but with commented-out bodies — suppression preserves their existing behavior). This matches the existing pattern inCompanies.Page.al.Linked work
Fixes AB#645060
How I validated this
What I tested and the outcome
.alfiles insrcfor actions that trigger AA0194 — both those lackingOnAction/RunObjectand those whoseOnActionbody is empty (comments only, which the analyzer also flags). This surfaced 20 actions total: 15 hidden/inert actions now obsoleted (12 DE/IT VAT + 3 DE ECSLReport), 3 visible actions pragma-suppressed here (PageFieldsView, RUDimensions/Comments), and 2 already suppressed in the repo. After the change the scan reports 0 unsuppressed AA0194 violations repo-wide.base.ruleset.jsonstill parses as valid JSON and that every edited page has balanced#if not CLEAN29/#endifand matching#pragma warning disable/restore AA0194pairs.app.json; they are merged into the base app per country by the build pipeline, so they are not exercised by a single-project local build. Full per-country compilation with the re-enabled rule is validated by CI on this PR.Risk & compatibility
AA0194becomes a build Error again for all apps. The full-repo scan confirms the only current violations are the ones fixed here, so this should not break the build; any future trigger-less action will now fail fast (the intended safety net).Visible = false) and inert, so obsoleting them has no functional or UI impact. Removal is deferred to CLEAN29;AL0432(obsolete-pending usage) isNonein the ruleset, so the guardedactionrefs produce no diagnostic.PageFields.Viewis functional; the RUDimensions/Commentsactions remain visible and inert as before (a pre-existing state) — this PR only silences the analyzer, it does not restore or remove them.