From 83d91dc55b5029c034b9a7874797d7d58d2d2c9b Mon Sep 17 00:00:00 2001 From: Lucas Borin <5233413+lucasborin@users.noreply.github.com> Date: Fri, 27 Aug 2021 14:43:44 +0000 Subject: [PATCH 1/2] BAdI example class vs Percentage Comment resolve #443 --- src/checks/y_check_comment_usage.clas.abap | 25 ++++++++++++++++ src/checks/y_check_unit_test_assert.clas.abap | 18 ++++++++++- ...eck_unit_test_assert.clas.testclasses.abap | 30 +++++++++++++++++++ 3 files changed, 72 insertions(+), 1 deletion(-) diff --git a/src/checks/y_check_comment_usage.clas.abap b/src/checks/y_check_comment_usage.clas.abap index 0f27a8d0..efc18dec 100644 --- a/src/checks/y_check_comment_usage.clas.abap +++ b/src/checks/y_check_comment_usage.clas.abap @@ -3,6 +3,7 @@ CLASS y_check_comment_usage DEFINITION PUBLIC INHERITING FROM y_check_base CREAT METHODS constructor. PROTECTED SECTION. + METHODS execute_check REDEFINITION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. @@ -26,6 +27,8 @@ CLASS y_check_comment_usage DEFINITION PUBLIC INHERITING FROM y_check_base CREAT start_with TYPE string RETURNING VALUE(result) TYPE abap_bool RAISING cx_sy_range_out_of_bounds. + + METHODS is_badi_example_class RETURNING VALUE(result) TYPE abap_bool. ENDCLASS. @@ -51,6 +54,12 @@ CLASS y_check_comment_usage IMPLEMENTATION. ENDMETHOD. + METHOD execute_check. + CHECK is_badi_example_class( ) = abap_false. + super->execute_check( ). + ENDMETHOD. + + METHOD inspect_statements. abs_statement_number = 0. comment_number = 0. @@ -165,4 +174,20 @@ CLASS y_check_comment_usage IMPLEMENTATION. result = xsdbool( is_function_module = abap_false ). ENDMETHOD. + + + METHOD is_badi_example_class. + CHECK object_type = 'CLAS'. + + SELECT SINGLE enhspot + FROM enhspotobj + INTO @DATA(enhancement) + WHERE obj_type = @object_type + AND obj_name = @object_name + AND VERSION = 'A'. + + result = xsdbool( enhancement IS NOT INITIAL ). + ENDMETHOD. + + ENDCLASS. diff --git a/src/checks/y_check_unit_test_assert.clas.abap b/src/checks/y_check_unit_test_assert.clas.abap index 96aa8951..9647bced 100644 --- a/src/checks/y_check_unit_test_assert.clas.abap +++ b/src/checks/y_check_unit_test_assert.clas.abap @@ -14,6 +14,9 @@ CLASS y_check_unit_test_assert DEFINITION PUBLIC INHERITING FROM y_check_base CR METHODS is_variable IMPORTING token TYPE stokesx RETURNING VALUE(result) TYPE abap_bool. + METHODS is_internal_table IMPORTING position TYPE i + RETURNING VALUE(result) TYPE abap_bool. + ENDCLASS. @@ -126,7 +129,8 @@ CLASS y_check_unit_test_assert IMPLEMENTATION. ENDIF. ENDIF. - IF is_variable( token ) = abap_false. + IF is_variable( token ) = abap_false + AND is_internal_table( position ) = abap_false. token-str = '*'. ENDIF. @@ -144,4 +148,16 @@ CLASS y_check_unit_test_assert IMPLEMENTATION. ENDMETHOD. + METHOD is_internal_table. + TRY. + DATA(previous_token) = ref_scan_manager->tokens[ position - 1 ]. + DATA(next_token) = ref_scan_manager->tokens[ position + 1 ]. + result = xsdbool( previous_token-str CP '*[' AND next_token-str CP ']*'). + CATCH cx_sy_itab_line_not_found. + result = abap_false. + RETURN. + ENDTRY. + ENDMETHOD. + + ENDCLASS. diff --git a/src/checks/y_check_unit_test_assert.clas.testclasses.abap b/src/checks/y_check_unit_test_assert.clas.testclasses.abap index b3f372b6..701c34d4 100644 --- a/src/checks/y_check_unit_test_assert.clas.testclasses.abap +++ b/src/checks/y_check_unit_test_assert.clas.testclasses.abap @@ -588,3 +588,33 @@ CLASS ltc_assert_empty IMPLEMENTATION. ENDMETHOD. ENDCLASS. + + + +CLASS ltc_internal_table DEFINITION INHERITING FROM ltc_hardcoded_string FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. + PROTECTED SECTION. + METHODS get_code_without_issue REDEFINITION. +ENDCLASS. + +CLASS ltc_internal_table IMPLEMENTATION. + + METHOD get_code_without_issue. + result = VALUE #( + ( ' REPORT y_example. ' ) + + ( ' CLASS y_example DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. ' ) + ( ' PUBLIC SECTION. ' ) + ( ' METHODS example FOR TESTING. ' ) + ( ' ENDCLASS. ' ) + + ( ' CLASS y_example IMPLEMENTATION. ' ) + ( ' METHOD example. ' ) + ( ' DATA itab TYPE TABLE OF tadir. ' ) + ( ' cl_abap_unit_assert=>assert_equals( exp = itab[ 5 ]-devclass act = itab[ 6 ]-devclass ). ' ) + ( ' cl_abap_unit_assert=>assert_equals( exp = itab[ 7 ]-devclass act = itab[ 8 ]-devclass ). ' ) + ( ' ENDMETHOD. ' ) + ( ' ENDCLASS. ' ) + ). + ENDMETHOD. + +ENDCLASS. From 4d1e14007ebccd10cc1184e49dfbc0ac2c4bfa44 Mon Sep 17 00:00:00 2001 From: Lucas Borin <5233413+lucasborin@users.noreply.github.com> Date: Fri, 27 Aug 2021 11:50:08 -0300 Subject: [PATCH 2/2] changelog --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 71c9d8a0..3803e8e7 100644 --- a/changelog.txt +++ b/changelog.txt @@ -14,6 +14,7 @@ Whenever you upgrade code pal for ABAP, it is highly recommended to execute the 2021-08-XX v.1.16.0 ------------------ +* BAdI example class vs Percentage Comment (#443) + Prefer Pragmas to Pseudo Comments (#421) + COLLECT restriction (#441) * RAP needs CREATE OBJECT ... FOR TESTING (#444)