diff --git a/AGENTS.md b/AGENTS.md index 6230839..f95e2c8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -174,7 +174,7 @@ carries the `SMPS` token and is the only rule `check-app-rules` excludes from the comparison. It sits last in the file behind a marker that says so; everything above that marker must match the source. -All 201 rules abaplint ships are named: 180 on, 21 off, each with its reason +All 212 rules abaplint ships are named: 190 on, 22 off, each with its reason in a comment. **A rule is never left out of the file** — when an upgrade adds one, add the key to `app-rules.json` and copy the block into all three consumers: on if all three corpora pass, off with the reason if they do not. diff --git a/abaplint.jsonc b/abaplint.jsonc index 476a070..6130349 100644 --- a/abaplint.jsonc +++ b/abaplint.jsonc @@ -57,7 +57,7 @@ // thing above the line that may differ. Everything else - what is checked, // what is not, and why - is a joint decision of the three corpora. // - // Every rule abaplint ships is listed: all 201. 180 are on, 21 are off and + // Every rule abaplint ships is listed: all 212. 190 are on, 22 are off and // each says why. A rule is NEVER left out of the file. When an abaplint // upgrade adds one, add the key: on if all three corpora pass, off with the // reason if they do not. An unlisted rule reads as "nobody decided" rather @@ -113,6 +113,11 @@ // (DATA temp9, DATA comps LIKE temp9) that cannot be inlined at all. "prefer_inline": false, "no_inline_in_optional_branches": false, + // The cast of the previous app into a variable of its own type, read on + // the next line (DATA(app) = CAST ...( client->get_app_prev( ) ).) - + // the rule wants one chained expression instead: 2 / 0 / 0 findings on + // 2.120.75. The sample names the app it reads back on purpose. + "prefer_inline_cast": false, // --- off: the proposed rewrite does not activate ------------------ // The MOVE-CORRESPONDING statements left in the tree copy between two // generic "TYPE any" field symbols. CORRESPONDING #( ) derives its type @@ -423,6 +428,9 @@ "abstractEntity": "Z2UI5_" }, // --- on, as shipped ----------------------------------------------- + "abapdoc_html_tag": true, + "abapdoc_leading_at": true, + "abapdoc_parameter_names": true, "add_test_attributes": true, "aff_and_xml": true, "align_pseudo_comments": true, @@ -441,6 +449,7 @@ "cds_parser_error": true, "chain_mainly_declarations": true, "change_if_to_case": true, + "changing_sorted_line": true, "check_comments": true, "check_ddic": true, "check_include": true, @@ -458,6 +467,7 @@ "cyclomatic_complexity": true, "db_operation_in_loop": true, "definitions_top": true, + "delete_index_in_loop": true, "description_empty": true, "downport": true, "dynpro_checks": true, @@ -468,6 +478,7 @@ "exit_or_check": true, "expand_macros": true, "exporting": true, + "final_newline": true, "fm_global_parameters_obsolete": true, "forbidden_identifier": true, "forbidden_pseudo_and_pragma": true, @@ -487,6 +498,7 @@ "implicit_start_of_selection": true, "index_completely_contained": true, "inline_data_old_versions": true, + "inline_packed_computation": true, "intf_referencing_clas": true, "invalid_table_index": true, "line_break_style": true, @@ -538,6 +550,7 @@ "preferred_compare_operator": true, "preferred_parameter_ignored": true, "prefix_is_current_class": true, + "range_row_values": true, "reduce_procedural_code": true, "reduce_string_templates": true, "redundant_conversion": true, @@ -551,6 +564,7 @@ "short_case": true, "sicf_consistency": true, "slow_parameter_passing": true, + "sort_empty_key": true, "space_before_colon": true, "space_before_dot": true, "sql_escape_host_variables": true, @@ -558,6 +572,7 @@ "start_at_tab": true, "static_call_via_instance": true, "strict_sql": true, + "subrc_after_assign": true, "superfluous_value": true, "sy_modification": true, "sy_read_restriction": true, diff --git a/package-lock.json b/package-lock.json index 2b45bf2..65dded5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "devDependencies": { "@abap2ui5/linter": "^0.8.5", "@abap2ui5/linter-render": "^0.8.5", - "@abaplint/cli": "^2.120.73" + "@abaplint/cli": "^2.120.75" }, "engines": { "node": ">=22" @@ -216,9 +216,9 @@ } }, "node_modules/@abaplint/cli": { - "version": "2.120.73", - "resolved": "https://registry.npmjs.org/@abaplint/cli/-/cli-2.120.73.tgz", - "integrity": "sha512-/CxPAfc3noOvPiJX+GB99st8aN/TB5KmMVfrFDrPKrMuIlzRTv1+Yxs0QIgTj8taUNTZGdyBPriR3mHATZmlpQ==", + "version": "2.120.75", + "resolved": "https://registry.npmjs.org/@abaplint/cli/-/cli-2.120.75.tgz", + "integrity": "sha512-Rf0mQ8PPXsWW3E+Jibu9QcgeWs9zp7k32Lp9/5oxe0Mt/yNAH7iHACyKmfaUVytlGtbaIeioCAjlz8NNgukYMQ==", "dev": true, "license": "MIT", "bin": { diff --git a/package.json b/package.json index 81a8091..f4011cb 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "devDependencies": { "@abap2ui5/linter": "^0.8.5", "@abap2ui5/linter-render": "^0.8.5", - "@abaplint/cli": "^2.120.73" + "@abaplint/cli": "^2.120.75" }, "engines": { "node": ">=22" diff --git a/scripts/check-app-rules.mjs b/scripts/check-app-rules.mjs index f8d0961..e19f542 100644 --- a/scripts/check-app-rules.mjs +++ b/scripts/check-app-rules.mjs @@ -3,7 +3,7 @@ * check-app-rules — this repository's abaplint rules match the shared set. * * The shared set is `abap2UI5/abap2UI5`'s `.github/abaplint/app-rules.json`: - * 200 rules, everything except `object_naming`, which every repository sets + * 211 rules, everything except `object_naming`, which every repository sets * for its own object prefixes. abap2UI5 is the SOURCE — it is where the rest * of "how to write an abap2UI5 app" already lives (the build-an-app and * view-chain-layout skills, docs/agents/building-apps.md, abap-check,