@abaplint/core 2.94.10 → 2.94.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/adhoc/lexer_performance.ts +15 -15
- package/adhoc/parser_performance.ts +18 -18
- package/build/src/abap/flow/flow_graph.js +7 -7
- package/build/src/lsp/help.js +7 -7
- package/build/src/registry.js +1 -1
- package/build/src/rules/7bit_ascii.js +2 -2
- package/build/src/rules/abapdoc.js +3 -3
- package/build/src/rules/align_parameters.js +39 -39
- package/build/src/rules/ambiguous_statement.js +5 -5
- package/build/src/rules/avoid_use.js +8 -8
- package/build/src/rules/begin_end_names.js +4 -4
- package/build/src/rules/begin_single_include.js +12 -12
- package/build/src/rules/call_transaction_authority_check.js +3 -3
- package/build/src/rules/cds_comment_style.js +4 -4
- package/build/src/rules/cds_legacy_view.js +4 -4
- package/build/src/rules/chain_mainly_declarations.js +4 -4
- package/build/src/rules/change_if_to_case.js +8 -8
- package/build/src/rules/check_abstract.js +2 -2
- package/build/src/rules/check_comments.js +4 -4
- package/build/src/rules/check_include.js +3 -3
- package/build/src/rules/check_subrc.js +8 -8
- package/build/src/rules/classic_exceptions_overlap.js +8 -8
- package/build/src/rules/commented_code.js +1 -1
- package/build/src/rules/constructor_visibility_public.js +4 -4
- package/build/src/rules/contains_tab.js +2 -2
- package/build/src/rules/cyclic_oo.js +13 -3
- package/build/src/rules/dangerous_statement.js +1 -1
- package/build/src/rules/definitions_top.js +2 -2
- package/build/src/rules/downport.js +83 -83
- package/build/src/rules/exit_or_check.js +3 -3
- package/build/src/rules/exporting.js +1 -1
- package/build/src/rules/forbidden_identifier.js +1 -1
- package/build/src/rules/forbidden_void_type.js +2 -2
- package/build/src/rules/functional_writing.js +17 -17
- package/build/src/rules/global_class.js +8 -8
- package/build/src/rules/identical_conditions.js +2 -2
- package/build/src/rules/identical_contents.js +14 -14
- package/build/src/rules/identical_descriptions.js +6 -6
- package/build/src/rules/if_in_if.js +26 -26
- package/build/src/rules/implement_methods.js +3 -3
- package/build/src/rules/in_statement_indentation.js +11 -11
- package/build/src/rules/intf_referencing_clas.js +3 -3
- package/build/src/rules/line_break_style.js +2 -2
- package/build/src/rules/line_length.js +1 -1
- package/build/src/rules/line_only_punc.js +1 -1
- package/build/src/rules/local_variable_names.js +2 -2
- package/build/src/rules/main_file_contents.js +4 -4
- package/build/src/rules/many_parentheses.js +10 -10
- package/build/src/rules/max_one_method_parameter_per_line.js +7 -7
- package/build/src/rules/max_one_statement.js +5 -5
- package/build/src/rules/method_overwrites_builtin.js +2 -2
- package/build/src/rules/nesting.js +1 -1
- package/build/src/rules/no_chained_assignment.js +1 -1
- package/build/src/rules/no_external_form_calls.js +2 -2
- package/build/src/rules/no_inline_in_optional_branches.js +11 -11
- package/build/src/rules/no_public_attributes.js +1 -1
- package/build/src/rules/no_yoda_conditions.js +4 -4
- package/build/src/rules/nrob_consistency.js +2 -2
- package/build/src/rules/obsolete_statement.js +42 -42
- package/build/src/rules/omit_parameter_name.js +3 -3
- package/build/src/rules/omit_receiving.js +13 -13
- package/build/src/rules/parser_702_chaining.js +2 -2
- package/build/src/rules/parser_error.js +2 -2
- package/build/src/rules/parser_missing_space.js +1 -1
- package/build/src/rules/prefer_inline.js +16 -16
- package/build/src/rules/prefer_is_not.js +7 -7
- package/build/src/rules/prefer_raise_exception_new.js +3 -3
- package/build/src/rules/prefer_returning_to_exporting.js +1 -1
- package/build/src/rules/prefer_xsdbool.js +2 -2
- package/build/src/rules/remove_descriptions.js +4 -4
- package/build/src/rules/rfc_error_handling.js +9 -9
- package/build/src/rules/select_add_order_by.js +5 -5
- package/build/src/rules/select_performance.js +5 -5
- package/build/src/rules/sicf_consistency.js +2 -2
- package/build/src/rules/space_before_dot.js +2 -2
- package/build/src/rules/start_at_tab.js +1 -1
- package/build/src/rules/sy_modification.js +4 -4
- package/build/src/rules/tabl_enhancement_category.js +2 -2
- package/build/src/rules/unnecessary_pragma.js +22 -22
- package/build/src/rules/unnecessary_return.js +5 -5
- package/build/src/rules/unused_methods.js +9 -9
- package/build/src/rules/unused_variables.js +4 -4
- package/build/src/rules/use_bool_expression.js +8 -8
- package/build/src/rules/use_line_exists.js +6 -6
- package/build/src/rules/use_new.js +4 -4
- package/build/src/rules/when_others_last.js +6 -6
- package/package.json +67 -67
|
@@ -22,10 +22,10 @@ class MainFileContents {
|
|
|
22
22
|
key: "main_file_contents",
|
|
23
23
|
title: "Main file contents",
|
|
24
24
|
shortDescription: `Checks related to report declarations.`,
|
|
25
|
-
extendedInformation: `Does not run if the target version is Cloud
|
|
26
|
-
|
|
27
|
-
* PROGs must begin with "REPORT <name>." or "PROGRAM <name>.
|
|
28
|
-
* TYPEs must begin with "TYPE-POOL <name>."
|
|
25
|
+
extendedInformation: `Does not run if the target version is Cloud
|
|
26
|
+
|
|
27
|
+
* PROGs must begin with "REPORT <name>." or "PROGRAM <name>.
|
|
28
|
+
* TYPEs must begin with "TYPE-POOL <name>."
|
|
29
29
|
`,
|
|
30
30
|
};
|
|
31
31
|
}
|
|
@@ -23,17 +23,17 @@ class ManyParentheses extends _abap_rule_1.ABAPRule {
|
|
|
23
23
|
title: "Too many parentheses",
|
|
24
24
|
shortDescription: `Searches for expressions where extra parentheses can safely be removed`,
|
|
25
25
|
tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],
|
|
26
|
-
badExample: `
|
|
27
|
-
IF ( destination IS INITIAL ).
|
|
28
|
-
ENDIF.
|
|
29
|
-
IF foo = boo AND ( bar = lar AND moo = loo ).
|
|
30
|
-
ENDIF.
|
|
26
|
+
badExample: `
|
|
27
|
+
IF ( destination IS INITIAL ).
|
|
28
|
+
ENDIF.
|
|
29
|
+
IF foo = boo AND ( bar = lar AND moo = loo ).
|
|
30
|
+
ENDIF.
|
|
31
31
|
`,
|
|
32
|
-
goodExample: `
|
|
33
|
-
IF destination IS INITIAL.
|
|
34
|
-
ENDIF.
|
|
35
|
-
IF foo = boo AND bar = lar AND moo = loo.
|
|
36
|
-
ENDIF.
|
|
32
|
+
goodExample: `
|
|
33
|
+
IF destination IS INITIAL.
|
|
34
|
+
ENDIF.
|
|
35
|
+
IF foo = boo AND bar = lar AND moo = loo.
|
|
36
|
+
ENDIF.
|
|
37
37
|
`,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
@@ -21,14 +21,14 @@ class MaxOneMethodParameterPerLine extends _abap_rule_1.ABAPRule {
|
|
|
21
21
|
title: "Max one method parameter definition per line",
|
|
22
22
|
shortDescription: `Keep max one method parameter description per line`,
|
|
23
23
|
tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Whitespace],
|
|
24
|
-
badExample: `
|
|
25
|
-
METHODS apps_scope_token
|
|
26
|
-
IMPORTING
|
|
24
|
+
badExample: `
|
|
25
|
+
METHODS apps_scope_token
|
|
26
|
+
IMPORTING
|
|
27
27
|
body TYPE bodyapps_scope_token client_id TYPE str.`,
|
|
28
|
-
goodExample: `
|
|
29
|
-
METHODS apps_scope_token
|
|
30
|
-
IMPORTING
|
|
31
|
-
body TYPE bodyapps_scope_token
|
|
28
|
+
goodExample: `
|
|
29
|
+
METHODS apps_scope_token
|
|
30
|
+
IMPORTING
|
|
31
|
+
body TYPE bodyapps_scope_token
|
|
32
32
|
client_id TYPE str.`,
|
|
33
33
|
};
|
|
34
34
|
}
|
|
@@ -21,11 +21,11 @@ class MaxOneStatement extends _abap_rule_1.ABAPRule {
|
|
|
21
21
|
key: "max_one_statement",
|
|
22
22
|
title: "Max one statement per line",
|
|
23
23
|
shortDescription: `Checks that each line contains only a single statement.`,
|
|
24
|
-
extendedInformation: `Does not report empty statements, use rule empty_statement for detecting empty statements.
|
|
25
|
-
|
|
26
|
-
Does not report anything for chained statements.
|
|
27
|
-
|
|
28
|
-
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#no-more-than-one-statement-per-line
|
|
24
|
+
extendedInformation: `Does not report empty statements, use rule empty_statement for detecting empty statements.
|
|
25
|
+
|
|
26
|
+
Does not report anything for chained statements.
|
|
27
|
+
|
|
28
|
+
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#no-more-than-one-statement-per-line
|
|
29
29
|
https://docs.abapopenchecks.org/checks/11/`,
|
|
30
30
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],
|
|
31
31
|
badExample: `WRITE foo. WRITE bar.`,
|
|
@@ -19,8 +19,8 @@ class MethodOverwritesBuiltIn extends _abap_rule_1.ABAPRule {
|
|
|
19
19
|
key: "method_overwrites_builtin",
|
|
20
20
|
title: "Method name overwrites builtin function",
|
|
21
21
|
shortDescription: `Checks Method names that overwrite builtin SAP functions`,
|
|
22
|
-
extendedInformation: `https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abenbuilt_in_functions_overview.htm
|
|
23
|
-
|
|
22
|
+
extendedInformation: `https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abenbuilt_in_functions_overview.htm
|
|
23
|
+
|
|
24
24
|
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#avoid-obscuring-built-in-functions`,
|
|
25
25
|
tags: [_irule_1.RuleTag.Naming, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],
|
|
26
26
|
};
|
|
@@ -24,7 +24,7 @@ class Nesting extends _abap_rule_1.ABAPRule {
|
|
|
24
24
|
key: "nesting",
|
|
25
25
|
title: "Check nesting depth",
|
|
26
26
|
shortDescription: `Checks for methods exceeding a maximum nesting depth`,
|
|
27
|
-
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#keep-the-nesting-depth-low
|
|
27
|
+
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#keep-the-nesting-depth-low
|
|
28
28
|
https://docs.abapopenchecks.org/checks/74/`,
|
|
29
29
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
|
|
30
30
|
};
|
|
@@ -23,7 +23,7 @@ class NoChainedAssignment extends _abap_rule_1.ABAPRule {
|
|
|
23
23
|
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-chain-assignments`,
|
|
24
24
|
tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],
|
|
25
25
|
badExample: `var1 = var2 = var3.`,
|
|
26
|
-
goodExample: `var2 = var3.
|
|
26
|
+
goodExample: `var2 = var3.
|
|
27
27
|
var1 = var2.`,
|
|
28
28
|
};
|
|
29
29
|
}
|
|
@@ -20,8 +20,8 @@ class NoExternalFormCalls extends _abap_rule_1.ABAPRule {
|
|
|
20
20
|
key: "no_external_form_calls",
|
|
21
21
|
title: "No external FORM calls",
|
|
22
22
|
shortDescription: `Detect external form calls`,
|
|
23
|
-
badExample: `PERFORM foo IN PROGRAM bar.
|
|
24
|
-
|
|
23
|
+
badExample: `PERFORM foo IN PROGRAM bar.
|
|
24
|
+
|
|
25
25
|
PERFORM foo(bar).`,
|
|
26
26
|
tags: [_irule_1.RuleTag.SingleFile],
|
|
27
27
|
};
|
|
@@ -21,17 +21,17 @@ class NoInlineInOptionalBranches extends _abap_rule_1.ABAPRule {
|
|
|
21
21
|
key: "no_inline_in_optional_branches",
|
|
22
22
|
title: "Don't declare inline in optional branches",
|
|
23
23
|
shortDescription: `Don't declare inline in optional branches`,
|
|
24
|
-
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-declare-inline-in-optional-branches
|
|
25
|
-
|
|
26
|
-
Considered optional branches:
|
|
27
|
-
* inside IF/ELSEIF/ELSE
|
|
28
|
-
* inside LOOP
|
|
29
|
-
* inside WHILE
|
|
30
|
-
* inside CASE/WHEN, CASE TYPE OF
|
|
31
|
-
* inside DO
|
|
32
|
-
* inside SELECT loops
|
|
33
|
-
|
|
34
|
-
Not considered optional branches:
|
|
24
|
+
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-declare-inline-in-optional-branches
|
|
25
|
+
|
|
26
|
+
Considered optional branches:
|
|
27
|
+
* inside IF/ELSEIF/ELSE
|
|
28
|
+
* inside LOOP
|
|
29
|
+
* inside WHILE
|
|
30
|
+
* inside CASE/WHEN, CASE TYPE OF
|
|
31
|
+
* inside DO
|
|
32
|
+
* inside SELECT loops
|
|
33
|
+
|
|
34
|
+
Not considered optional branches:
|
|
35
35
|
* TRY/CATCH/CLEANUP`,
|
|
36
36
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
|
|
37
37
|
};
|
|
@@ -27,7 +27,7 @@ class NoPublicAttributes extends _abap_rule_1.ABAPRule {
|
|
|
27
27
|
return {
|
|
28
28
|
key: "no_public_attributes",
|
|
29
29
|
title: "No public attributes",
|
|
30
|
-
shortDescription: `Checks that classes and interfaces don't contain any public attributes.
|
|
30
|
+
shortDescription: `Checks that classes and interfaces don't contain any public attributes.
|
|
31
31
|
Exceptions are excluded from this rule.`,
|
|
32
32
|
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#members-private-by-default-protected-only-if-needed`,
|
|
33
33
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
|
|
@@ -24,13 +24,13 @@ class NoYodaConditions extends _abap_rule_1.ABAPRule {
|
|
|
24
24
|
key: "no_yoda_conditions",
|
|
25
25
|
title: "No Yoda conditions",
|
|
26
26
|
shortDescription: `Finds Yoda conditions and reports issues`,
|
|
27
|
-
extendedInformation: `https://en.wikipedia.org/wiki/Yoda_conditions
|
|
28
|
-
|
|
27
|
+
extendedInformation: `https://en.wikipedia.org/wiki/Yoda_conditions
|
|
28
|
+
|
|
29
29
|
Conditions with operators CP, NP, CS, NS, CA, NA, CO, CN are ignored`,
|
|
30
30
|
tags: [_irule_1.RuleTag.SingleFile],
|
|
31
|
-
badExample: `IF 0 <> sy-subrc.
|
|
31
|
+
badExample: `IF 0 <> sy-subrc.
|
|
32
32
|
ENDIF.`,
|
|
33
|
-
goodExample: `IF sy-subrc <> 0.
|
|
33
|
+
goodExample: `IF sy-subrc <> 0.
|
|
34
34
|
ENDIF.`,
|
|
35
35
|
};
|
|
36
36
|
}
|
|
@@ -17,8 +17,8 @@ class NROBConsistency {
|
|
|
17
17
|
key: "nrob_consistency",
|
|
18
18
|
title: "Number range consistency",
|
|
19
19
|
shortDescription: `Consistency checks for number ranges`,
|
|
20
|
-
extendedInformation: `Issue reported if percentage warning is over 50%
|
|
21
|
-
|
|
20
|
+
extendedInformation: `Issue reported if percentage warning is over 50%
|
|
21
|
+
|
|
22
22
|
Issue reported if the referenced domain is not found(taking error namespace into account)`,
|
|
23
23
|
tags: [_irule_1.RuleTag.SingleFile],
|
|
24
24
|
};
|
|
@@ -85,48 +85,48 @@ class ObsoleteStatement extends _abap_rule_1.ABAPRule {
|
|
|
85
85
|
title: "Obsolete statements",
|
|
86
86
|
shortDescription: `Checks for usages of certain obsolete statements`,
|
|
87
87
|
tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix],
|
|
88
|
-
extendedInformation: `
|
|
89
|
-
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-functional-to-procedural-language-constructs
|
|
90
|
-
|
|
91
|
-
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#avoid-obsolete-language-elements
|
|
92
|
-
|
|
93
|
-
SET EXTENDED CHECK: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapset_extended_check.htm
|
|
94
|
-
|
|
95
|
-
IS REQUESTED: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenlogexp_requested.htm
|
|
96
|
-
|
|
97
|
-
WITH HEADER LINE: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abapdata_header_line.htm
|
|
98
|
-
|
|
99
|
-
FIELD-SYMBOLS STRUCTURE: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapfield-symbols_obsolete_typing.htm
|
|
100
|
-
|
|
101
|
-
TYPE-POOLS: from 702, https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-71-program_load.htm
|
|
102
|
-
|
|
103
|
-
LOAD addition: from 702, https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-71-program_load.htm
|
|
104
|
-
|
|
105
|
-
COMMUICATION: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapcommunication.htm
|
|
106
|
-
|
|
107
|
-
OCCURS: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapdata_occurs.htm
|
|
108
|
-
|
|
109
|
-
PARAMETER: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapparameter.htm
|
|
110
|
-
|
|
111
|
-
RANGES: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapranges.htm
|
|
112
|
-
|
|
113
|
-
PACK: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abappack.htm
|
|
114
|
-
|
|
115
|
-
MOVE: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapmove_obs.htm
|
|
116
|
-
|
|
117
|
-
SELECT without INTO: https://help.sap.com/doc/abapdocu_731_index_htm/7.31/en-US/abapselect_obsolete.htm
|
|
118
|
-
SELECT COUNT(*) is considered okay
|
|
119
|
-
|
|
120
|
-
FREE MEMORY: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abapfree_mem_id_obsolete.htm
|
|
121
|
-
|
|
122
|
-
SORT BY FS: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapsort_itab_obsolete.htm
|
|
123
|
-
|
|
124
|
-
CALL TRANSFORMATION OBJECTS: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapcall_transformation_objects.htm
|
|
125
|
-
|
|
126
|
-
POSIX REGEX: https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm
|
|
127
|
-
|
|
128
|
-
OCCURENCES: check for OCCURENCES vs OCCURRENCES
|
|
129
|
-
|
|
88
|
+
extendedInformation: `
|
|
89
|
+
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-functional-to-procedural-language-constructs
|
|
90
|
+
|
|
91
|
+
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#avoid-obsolete-language-elements
|
|
92
|
+
|
|
93
|
+
SET EXTENDED CHECK: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapset_extended_check.htm
|
|
94
|
+
|
|
95
|
+
IS REQUESTED: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenlogexp_requested.htm
|
|
96
|
+
|
|
97
|
+
WITH HEADER LINE: https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abapdata_header_line.htm
|
|
98
|
+
|
|
99
|
+
FIELD-SYMBOLS STRUCTURE: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapfield-symbols_obsolete_typing.htm
|
|
100
|
+
|
|
101
|
+
TYPE-POOLS: from 702, https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-71-program_load.htm
|
|
102
|
+
|
|
103
|
+
LOAD addition: from 702, https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abennews-71-program_load.htm
|
|
104
|
+
|
|
105
|
+
COMMUICATION: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapcommunication.htm
|
|
106
|
+
|
|
107
|
+
OCCURS: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapdata_occurs.htm
|
|
108
|
+
|
|
109
|
+
PARAMETER: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abapparameter.htm
|
|
110
|
+
|
|
111
|
+
RANGES: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapranges.htm
|
|
112
|
+
|
|
113
|
+
PACK: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abappack.htm
|
|
114
|
+
|
|
115
|
+
MOVE: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapmove_obs.htm
|
|
116
|
+
|
|
117
|
+
SELECT without INTO: https://help.sap.com/doc/abapdocu_731_index_htm/7.31/en-US/abapselect_obsolete.htm
|
|
118
|
+
SELECT COUNT(*) is considered okay
|
|
119
|
+
|
|
120
|
+
FREE MEMORY: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abapfree_mem_id_obsolete.htm
|
|
121
|
+
|
|
122
|
+
SORT BY FS: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapsort_itab_obsolete.htm
|
|
123
|
+
|
|
124
|
+
CALL TRANSFORMATION OBJECTS: https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapcall_transformation_objects.htm
|
|
125
|
+
|
|
126
|
+
POSIX REGEX: https://help.sap.com/doc/abapdocu_755_index_htm/7.55/en-US/index.htm
|
|
127
|
+
|
|
128
|
+
OCCURENCES: check for OCCURENCES vs OCCURRENCES
|
|
129
|
+
|
|
130
130
|
CLIENT SPECIFIED, from 754: https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abapselect_client_obsolete.htm`,
|
|
131
131
|
};
|
|
132
132
|
}
|
|
@@ -23,9 +23,9 @@ class OmitParameterName {
|
|
|
23
23
|
key: "omit_parameter_name",
|
|
24
24
|
title: "Omit parameter name",
|
|
25
25
|
shortDescription: `Omit the parameter name in single parameter calls`,
|
|
26
|
-
extendedInformation: `
|
|
27
|
-
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#omit-the-parameter-name-in-single-parameter-calls
|
|
28
|
-
|
|
26
|
+
extendedInformation: `
|
|
27
|
+
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#omit-the-parameter-name-in-single-parameter-calls
|
|
28
|
+
|
|
29
29
|
EXPORTING must already be omitted for this rule to take effect, https://rules.abaplint.org/exporting/`,
|
|
30
30
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix],
|
|
31
31
|
badExample: `method( param = 2 ).`,
|
|
@@ -21,20 +21,20 @@ class OmitReceiving extends _abap_rule_1.ABAPRule {
|
|
|
21
21
|
shortDescription: `Omit RECEIVING`,
|
|
22
22
|
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#omit-receiving`,
|
|
23
23
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
|
|
24
|
-
badExample: `
|
|
25
|
-
upload_pack(
|
|
26
|
-
EXPORTING
|
|
27
|
-
io_client = lo_client
|
|
28
|
-
iv_url = iv_url
|
|
29
|
-
iv_deepen_level = iv_deepen_level
|
|
30
|
-
it_hashes = lt_hashes
|
|
31
|
-
RECEIVING
|
|
24
|
+
badExample: `
|
|
25
|
+
upload_pack(
|
|
26
|
+
EXPORTING
|
|
27
|
+
io_client = lo_client
|
|
28
|
+
iv_url = iv_url
|
|
29
|
+
iv_deepen_level = iv_deepen_level
|
|
30
|
+
it_hashes = lt_hashes
|
|
31
|
+
RECEIVING
|
|
32
32
|
rt_objects = et_objects ).`,
|
|
33
|
-
goodExample: `
|
|
34
|
-
et_objects = upload_pack(
|
|
35
|
-
io_client = lo_client
|
|
36
|
-
iv_url = iv_url
|
|
37
|
-
iv_deepen_level = iv_deepen_level
|
|
33
|
+
goodExample: `
|
|
34
|
+
et_objects = upload_pack(
|
|
35
|
+
io_client = lo_client
|
|
36
|
+
iv_url = iv_url
|
|
37
|
+
iv_deepen_level = iv_deepen_level
|
|
38
38
|
it_hashes = lt_hashes ).`,
|
|
39
39
|
};
|
|
40
40
|
}
|
|
@@ -19,8 +19,8 @@ class Parser702Chaining extends _abap_rule_1.ABAPRule {
|
|
|
19
19
|
return {
|
|
20
20
|
key: "parser_702_chaining",
|
|
21
21
|
title: "Parser Error, bad chanining on 702",
|
|
22
|
-
shortDescription: `ABAP on 702 does not allow for method chaining with IMPORTING/EXPORTING/CHANGING keywords,
|
|
23
|
-
this rule finds these and reports errors.
|
|
22
|
+
shortDescription: `ABAP on 702 does not allow for method chaining with IMPORTING/EXPORTING/CHANGING keywords,
|
|
23
|
+
this rule finds these and reports errors.
|
|
24
24
|
Only active on target version 702 and below.`,
|
|
25
25
|
tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.SingleFile],
|
|
26
26
|
};
|
|
@@ -19,8 +19,8 @@ class ParserError {
|
|
|
19
19
|
return {
|
|
20
20
|
key: "parser_error",
|
|
21
21
|
title: "Parser error",
|
|
22
|
-
shortDescription: `Checks for syntax not recognized by abaplint.
|
|
23
|
-
|
|
22
|
+
shortDescription: `Checks for syntax not recognized by abaplint.
|
|
23
|
+
|
|
24
24
|
See recognized syntax at https://syntax.abaplint.org`,
|
|
25
25
|
tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.SingleFile],
|
|
26
26
|
};
|
|
@@ -21,7 +21,7 @@ class ParserMissingSpace extends _abap_rule_1.ABAPRule {
|
|
|
21
21
|
return {
|
|
22
22
|
key: "parser_missing_space",
|
|
23
23
|
title: "Parser Error, missing space",
|
|
24
|
-
shortDescription: `In special cases the ABAP language allows for not having spaces before or after string literals.
|
|
24
|
+
shortDescription: `In special cases the ABAP language allows for not having spaces before or after string literals.
|
|
25
25
|
This rule makes sure the spaces are consistently required across the language.`,
|
|
26
26
|
tags: [_irule_1.RuleTag.Syntax, _irule_1.RuleTag.Whitespace, _irule_1.RuleTag.SingleFile],
|
|
27
27
|
badExample: `IF ( foo = 'bar').`,
|
|
@@ -23,25 +23,25 @@ class PreferInline {
|
|
|
23
23
|
key: "prefer_inline",
|
|
24
24
|
title: "Prefer Inline Declarations",
|
|
25
25
|
shortDescription: `Prefer inline to up-front declarations.`,
|
|
26
|
-
extendedInformation: `EXPERIMENTAL
|
|
27
|
-
|
|
28
|
-
Activates if language version is v740sp02 or above.
|
|
29
|
-
|
|
30
|
-
Variables must be local(METHOD or FORM).
|
|
31
|
-
|
|
32
|
-
No generic or void typed variables. No syntax errors.
|
|
33
|
-
|
|
34
|
-
First position used must be a full/pure write.
|
|
35
|
-
|
|
36
|
-
Move statment is not a cast(?=)
|
|
37
|
-
|
|
26
|
+
extendedInformation: `EXPERIMENTAL
|
|
27
|
+
|
|
28
|
+
Activates if language version is v740sp02 or above.
|
|
29
|
+
|
|
30
|
+
Variables must be local(METHOD or FORM).
|
|
31
|
+
|
|
32
|
+
No generic or void typed variables. No syntax errors.
|
|
33
|
+
|
|
34
|
+
First position used must be a full/pure write.
|
|
35
|
+
|
|
36
|
+
Move statment is not a cast(?=)
|
|
37
|
+
|
|
38
38
|
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-inline-to-up-front-declarations`,
|
|
39
39
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Upport, _irule_1.RuleTag.Experimental, _irule_1.RuleTag.Quickfix],
|
|
40
|
-
badExample: `DATA foo TYPE i.
|
|
41
|
-
foo = 2.
|
|
42
|
-
DATA percentage TYPE decfloat34.
|
|
40
|
+
badExample: `DATA foo TYPE i.
|
|
41
|
+
foo = 2.
|
|
42
|
+
DATA percentage TYPE decfloat34.
|
|
43
43
|
percentage = ( comment_number / abs_statement_number ) * 100.`,
|
|
44
|
-
goodExample: `DATA(foo) = 2.
|
|
44
|
+
goodExample: `DATA(foo) = 2.
|
|
45
45
|
DATA(percentage) = CONV decfloat34( comment_number / abs_statement_number ) * 100.`,
|
|
46
46
|
};
|
|
47
47
|
}
|
|
@@ -21,16 +21,16 @@ class PreferIsNot extends _abap_rule_1.ABAPRule {
|
|
|
21
21
|
key: "prefer_is_not",
|
|
22
22
|
title: "Prefer IS NOT to NOT IS",
|
|
23
23
|
shortDescription: `Prefer IS NOT to NOT IS`,
|
|
24
|
-
extendedInformation: `
|
|
25
|
-
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-is-not-to-not-is
|
|
26
|
-
|
|
24
|
+
extendedInformation: `
|
|
25
|
+
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-is-not-to-not-is
|
|
26
|
+
|
|
27
27
|
"if not is_valid( )." examples are skipped`,
|
|
28
28
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],
|
|
29
|
-
goodExample: `IF variable IS NOT INITIAL.
|
|
30
|
-
IF variable NP 'TODO*'.
|
|
29
|
+
goodExample: `IF variable IS NOT INITIAL.
|
|
30
|
+
IF variable NP 'TODO*'.
|
|
31
31
|
IF variable <> 42.`,
|
|
32
|
-
badExample: `IF NOT variable IS INITIAL.
|
|
33
|
-
IF NOT variable CP 'TODO*'.
|
|
32
|
+
badExample: `IF NOT variable IS INITIAL.
|
|
33
|
+
IF NOT variable CP 'TODO*'.
|
|
34
34
|
IF NOT variable = 42.`,
|
|
35
35
|
};
|
|
36
36
|
}
|
|
@@ -20,12 +20,12 @@ class PreferRaiseExceptionNew extends _abap_rule_1.ABAPRule {
|
|
|
20
20
|
key: "prefer_raise_exception_new",
|
|
21
21
|
title: "Prefer RAISE EXCEPTION NEW to RAISE EXCEPTION TYPE",
|
|
22
22
|
shortDescription: `Prefer RAISE EXCEPTION NEW to RAISE EXCEPTION TYPE`,
|
|
23
|
-
extendedInformation: `
|
|
23
|
+
extendedInformation: `
|
|
24
24
|
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-raise-exception-new-to-raise-exception-type`,
|
|
25
25
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],
|
|
26
26
|
goodExample: `RAISE EXCEPTION NEW cx_generation_error( previous = exception ).`,
|
|
27
|
-
badExample: `RAISE EXCEPTION TYPE cx_generation_error
|
|
28
|
-
EXPORTING
|
|
27
|
+
badExample: `RAISE EXCEPTION TYPE cx_generation_error
|
|
28
|
+
EXPORTING
|
|
29
29
|
previous = exception.`,
|
|
30
30
|
};
|
|
31
31
|
}
|
|
@@ -20,7 +20,7 @@ class PreferReturningToExporting extends _abap_rule_1.ABAPRule {
|
|
|
20
20
|
key: "prefer_returning_to_exporting",
|
|
21
21
|
title: "Prefer RETURNING to EXPORTING",
|
|
22
22
|
shortDescription: `Prefer RETURNING to EXPORTING. Generic types cannot be RETURNING.`,
|
|
23
|
-
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-returning-to-exporting
|
|
23
|
+
extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-returning-to-exporting
|
|
24
24
|
https://docs.abapopenchecks.org/checks/44/`,
|
|
25
25
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
|
|
26
26
|
};
|
|
@@ -21,8 +21,8 @@ class PreferXsdbool extends _abap_rule_1.ABAPRule {
|
|
|
21
21
|
key: "prefer_xsdbool",
|
|
22
22
|
title: "Prefer xsdbool over boolc",
|
|
23
23
|
shortDescription: `Prefer xsdbool over boolc`,
|
|
24
|
-
extendedInformation: `Activates if language version is v740sp08 or above.
|
|
25
|
-
|
|
24
|
+
extendedInformation: `Activates if language version is v740sp08 or above.
|
|
25
|
+
|
|
26
26
|
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#use-xsdbool-to-set-boolean-variables`,
|
|
27
27
|
tags: [_irule_1.RuleTag.Styleguide, _irule_1.RuleTag.Upport, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.SingleFile],
|
|
28
28
|
badExample: `DATA(sdf) = boolc( 1 = 2 ).`,
|
|
@@ -26,10 +26,10 @@ class RemoveDescriptions {
|
|
|
26
26
|
return {
|
|
27
27
|
key: "remove_descriptions",
|
|
28
28
|
title: "Remove descriptions",
|
|
29
|
-
shortDescription: `Ensures you have no descriptions in metadata of methods, parameters, etc.
|
|
30
|
-
|
|
31
|
-
Class descriptions are required, see rule description_empty.
|
|
32
|
-
|
|
29
|
+
shortDescription: `Ensures you have no descriptions in metadata of methods, parameters, etc.
|
|
30
|
+
|
|
31
|
+
Class descriptions are required, see rule description_empty.
|
|
32
|
+
|
|
33
33
|
Consider using ABAP Doc for documentation.`,
|
|
34
34
|
tags: [],
|
|
35
35
|
};
|
|
@@ -22,16 +22,16 @@ class RFCErrorHandling extends _abap_rule_1.ABAPRule {
|
|
|
22
22
|
tags: [_irule_1.RuleTag.SingleFile],
|
|
23
23
|
shortDescription: `Checks that exceptions 'system_failure' and 'communication_failure' are handled in RFC calls`,
|
|
24
24
|
extendedInformation: `https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenrfc_exception.htm`,
|
|
25
|
-
badExample: `
|
|
26
|
-
CALL FUNCTION 'ZRFC'
|
|
25
|
+
badExample: `
|
|
26
|
+
CALL FUNCTION 'ZRFC'
|
|
27
27
|
DESTINATION lv_rfc.`,
|
|
28
|
-
goodExample: `
|
|
29
|
-
CALL FUNCTION 'ZRFC'
|
|
30
|
-
DESTINATION lv_rfc
|
|
31
|
-
EXCEPTIONS
|
|
32
|
-
system_failure = 1 MESSAGE msg
|
|
33
|
-
communication_failure = 2 MESSAGE msg
|
|
34
|
-
resource_failure = 3
|
|
28
|
+
goodExample: `
|
|
29
|
+
CALL FUNCTION 'ZRFC'
|
|
30
|
+
DESTINATION lv_rfc
|
|
31
|
+
EXCEPTIONS
|
|
32
|
+
system_failure = 1 MESSAGE msg
|
|
33
|
+
communication_failure = 2 MESSAGE msg
|
|
34
|
+
resource_failure = 3
|
|
35
35
|
OTHERS = 4.`,
|
|
36
36
|
};
|
|
37
37
|
}
|
|
@@ -21,11 +21,11 @@ class SelectAddOrderBy {
|
|
|
21
21
|
key: "select_add_order_by",
|
|
22
22
|
title: "SELECT add ORDER BY",
|
|
23
23
|
shortDescription: `SELECTs add ORDER BY clause`,
|
|
24
|
-
extendedInformation: `
|
|
25
|
-
This will make sure that the SELECT statement returns results in the same sequence on different databases
|
|
26
|
-
|
|
27
|
-
add ORDER BY PRIMARY KEY if in doubt
|
|
28
|
-
|
|
24
|
+
extendedInformation: `
|
|
25
|
+
This will make sure that the SELECT statement returns results in the same sequence on different databases
|
|
26
|
+
|
|
27
|
+
add ORDER BY PRIMARY KEY if in doubt
|
|
28
|
+
|
|
29
29
|
If the target is a sorted/hashed table, no issue is reported`,
|
|
30
30
|
tags: [_irule_1.RuleTag.SingleFile],
|
|
31
31
|
};
|
|
@@ -32,14 +32,14 @@ class SelectPerformance {
|
|
|
32
32
|
key: "select_performance",
|
|
33
33
|
title: "SELECT performance",
|
|
34
34
|
shortDescription: `Various checks regarding SELECT performance.`,
|
|
35
|
-
extendedInformation: `ENDSELECT: not reported when the corresponding SELECT has PACKAGE SIZE
|
|
36
|
-
|
|
35
|
+
extendedInformation: `ENDSELECT: not reported when the corresponding SELECT has PACKAGE SIZE
|
|
36
|
+
|
|
37
37
|
SELECT *: not reported if using INTO/APPENDING CORRESPONDING FIELDS OF`,
|
|
38
38
|
tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Performance],
|
|
39
|
-
badExample: `SELECT field1, field2 FROM table
|
|
40
|
-
INTO @DATA(structure) UP TO 1 ROWS ORDER BY field3 DESCENDING.
|
|
39
|
+
badExample: `SELECT field1, field2 FROM table
|
|
40
|
+
INTO @DATA(structure) UP TO 1 ROWS ORDER BY field3 DESCENDING.
|
|
41
41
|
ENDSELECT.`,
|
|
42
|
-
goodExample: `SELECT field1, field2 FROM table UP TO 1 ROWS
|
|
42
|
+
goodExample: `SELECT field1, field2 FROM table UP TO 1 ROWS
|
|
43
43
|
INTO TABLE @DATA(table) ORDER BY field3 DESCENDING`,
|
|
44
44
|
};
|
|
45
45
|
}
|
|
@@ -24,8 +24,8 @@ class SICFConsistency {
|
|
|
24
24
|
key: "sicf_consistency",
|
|
25
25
|
title: "SICF consistency",
|
|
26
26
|
shortDescription: `Checks the validity of ICF services`,
|
|
27
|
-
extendedInformation: `* Class defined in handler must exist
|
|
28
|
-
* Class must not have any syntax errors
|
|
27
|
+
extendedInformation: `* Class defined in handler must exist
|
|
28
|
+
* Class must not have any syntax errors
|
|
29
29
|
* Class must implement interface IF_HTTP_EXTENSION`,
|
|
30
30
|
};
|
|
31
31
|
}
|
|
@@ -29,8 +29,8 @@ class SpaceBeforeDot extends _abap_rule_1.ABAPRule {
|
|
|
29
29
|
key: "space_before_dot",
|
|
30
30
|
title: "Space before dot",
|
|
31
31
|
shortDescription: `Checks for extra spaces before dots at the ends of statements`,
|
|
32
|
-
extendedInformation: `
|
|
33
|
-
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#be-consistent
|
|
32
|
+
extendedInformation: `
|
|
33
|
+
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#be-consistent
|
|
34
34
|
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#condense-your-code`,
|
|
35
35
|
tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Quickfix, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
|
|
36
36
|
badExample: `WRITE bar .`,
|
|
@@ -20,7 +20,7 @@ class StartAtTab extends _abap_rule_1.ABAPRule {
|
|
|
20
20
|
key: "start_at_tab",
|
|
21
21
|
title: "Start at tab",
|
|
22
22
|
shortDescription: `Checks that statements start at tabstops.`,
|
|
23
|
-
extendedInformation: `Reports max 100 issues per file
|
|
23
|
+
extendedInformation: `Reports max 100 issues per file
|
|
24
24
|
https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#indent-and-snap-to-tab`,
|
|
25
25
|
tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
|
|
26
26
|
badExample: ` WRITE a.`,
|
|
@@ -19,12 +19,12 @@ class SyModification extends _abap_rule_1.ABAPRule {
|
|
|
19
19
|
key: "sy_modification",
|
|
20
20
|
title: "Modification of SY fields",
|
|
21
21
|
shortDescription: `Finds modification of sy fields`,
|
|
22
|
-
extendedInformation: `https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abensystem_fields.htm
|
|
23
|
-
|
|
22
|
+
extendedInformation: `https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abensystem_fields.htm
|
|
23
|
+
|
|
24
24
|
Changes to SY-TVAR* fields are not reported`,
|
|
25
25
|
tags: [_irule_1.RuleTag.SingleFile],
|
|
26
|
-
badExample: `
|
|
27
|
-
sy-uname = 2.
|
|
26
|
+
badExample: `
|
|
27
|
+
sy-uname = 2.
|
|
28
28
|
sy = sy.`,
|
|
29
29
|
};
|
|
30
30
|
}
|
|
@@ -17,8 +17,8 @@ class TABLEnhancementCategory {
|
|
|
17
17
|
key: "tabl_enhancement_category",
|
|
18
18
|
title: "TABL enhancement category must be set",
|
|
19
19
|
shortDescription: `Checks that tables do not have the enhancement category 'not classified'.`,
|
|
20
|
-
extendedInformation: `SAP note 3063227 changes the default to 'Cannot be enhanced'.
|
|
21
|
-
|
|
20
|
+
extendedInformation: `SAP note 3063227 changes the default to 'Cannot be enhanced'.
|
|
21
|
+
|
|
22
22
|
You may use standard report RS_DDIC_CLASSIFICATION_FINAL for adjustment.`,
|
|
23
23
|
tags: [],
|
|
24
24
|
};
|