From 4c87a72fd7be367db28cb538561e5fafdcf0584a Mon Sep 17 00:00:00 2001 From: Alexandr Zhuravlev Date: Thu, 7 Dec 2023 13:48:48 +0300 Subject: [PATCH 1/7] fix(): Allow 'old' syntax for default value in select-option definition. Also fix patterns to allow multiple spaces around option --- src/checks/zcl_aoc_check_08.clas.abap | 111 ++++++++++-------- .../zcl_aoc_check_08.clas.testclasses.abap | 11 ++ 2 files changed, 74 insertions(+), 48 deletions(-) diff --git a/src/checks/zcl_aoc_check_08.clas.abap b/src/checks/zcl_aoc_check_08.clas.abap index 42857935..85ac7695 100644 --- a/src/checks/zcl_aoc_check_08.clas.abap +++ b/src/checks/zcl_aoc_check_08.clas.abap @@ -18,36 +18,39 @@ CLASS zcl_aoc_check_08 DEFINITION PROTECTED SECTION. - DATA mv_001 TYPE flag . - DATA mv_002 TYPE flag . - DATA mv_003 TYPE flag . - DATA mv_004 TYPE flag . - DATA mv_005 TYPE flag . - DATA mv_006 TYPE flag . - DATA mv_007 TYPE flag . - DATA mv_008 TYPE flag . - DATA mv_009 TYPE flag . - DATA mv_010 TYPE flag . - DATA mv_011 TYPE flag . - DATA mv_012 TYPE flag . - DATA mv_013 TYPE flag . - DATA mv_014 TYPE flag . - DATA mv_015 TYPE flag . - DATA mv_016 TYPE flag . - DATA mv_017 TYPE flag . - DATA mv_018 TYPE flag . - DATA mv_019 TYPE flag . - DATA mv_020 TYPE flag . - DATA mv_021 TYPE flag . - DATA mv_022 TYPE flag . - DATA mv_023 TYPE flag . - DATA mv_024 TYPE flag . + DATA mv_001 TYPE flag. + DATA mv_002 TYPE flag. + DATA mv_003 TYPE flag. + DATA mv_004 TYPE flag. + DATA mv_005 TYPE flag. + DATA mv_006 TYPE flag. + DATA mv_007 TYPE flag. + DATA mv_008 TYPE flag. + DATA mv_009 TYPE flag. + DATA mv_010 TYPE flag. + DATA mv_011 TYPE flag. + DATA mv_012 TYPE flag. + DATA mv_013 TYPE flag. + DATA mv_014 TYPE flag. + DATA mv_015 TYPE flag. + DATA mv_016 TYPE flag. + DATA mv_017 TYPE flag. + DATA mv_018 TYPE flag. + DATA mv_019 TYPE flag. + DATA mv_020 TYPE flag. + DATA mv_021 TYPE flag. + DATA mv_022 TYPE flag. + DATA mv_023 TYPE flag. + DATA mv_024 TYPE flag. + + DATA mt_old_option TYPE STANDARD TABLE OF char2 WITH DEFAULT KEY. METHODS is_old IMPORTING !iv_statement TYPE string RETURNING - VALUE(rv_old) TYPE abap_bool . + VALUE(rv_old) TYPE abap_bool. + METHODS _fill_old_options. PRIVATE SECTION. ENDCLASS. @@ -281,6 +284,8 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. mv_023 = abap_true. mv_024 = abap_true. + _fill_old_options( ). + ENDMETHOD. @@ -356,29 +361,29 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. rv_old = abap_false. - IF iv_statement CP '* EQ *' AND NOT iv_statement CP '* EQ TYPE *'. - rv_old = abap_true. - ENDIF. - - IF iv_statement CP '* NE *' AND NOT iv_statement CP '* NE TYPE *'. - rv_old = abap_true. - ENDIF. - - IF iv_statement CP '* LT *' AND NOT iv_statement CP '* LT TYPE *'. - rv_old = abap_true. - ENDIF. - - IF iv_statement CP '* GT *' AND NOT iv_statement CP '* GT TYPE *'. - rv_old = abap_true. - ENDIF. - - IF iv_statement CP '* LE *' AND NOT iv_statement CP '* LE TYPE *'. - rv_old = abap_true. - ENDIF. - - IF iv_statement CP '* GE *' AND NOT iv_statement CP '* GE TYPE *'. - rv_old = abap_true. - ENDIF. + LOOP AT mt_old_option INTO DATA(lv_option). + DATA(lv_include) = |\\s+{ lv_option }\\s+|. + DATA(lv_exclude) = |(\\s+{ lv_option }\\s+TYPE\\s+)\|(\\s+OPTION\\s+{ lv_option }\\s+)|. + TRY. + DATA(lo_regex) = cl_regex_cache=>get_singleton( )->get_regex( + pattern = lv_include + ignore_case = abap_true + ). + DATA(lo_match) = lo_regex->create_matcher( text = iv_statement ). + IF lo_match->find_next( ). + lo_regex = cl_regex_cache=>get_singleton( )->get_regex( + pattern = lv_exclude + ignore_case = abap_true + ). + lo_match = lo_regex->create_matcher( text = iv_statement ). + IF NOT lo_match->find_next( ). + rv_old = abap_true. + RETURN. + ENDIF. + ENDIF. + CATCH cx_sy_regex cx_sy_matcher INTO DATA(lx_ignore). + ENDTRY. + ENDLOOP. ENDMETHOD. @@ -415,4 +420,14 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. ASSERT sy-subrc = 0. ENDMETHOD. + + + METHOD _fill_old_options. + APPEND 'EQ' TO mt_old_option. + APPEND 'NE' TO mt_old_option. + APPEND 'LT' TO mt_old_option. + APPEND 'GT' TO mt_old_option. + APPEND 'LE' TO mt_old_option. + APPEND 'GE' TO mt_old_option. + ENDMETHOD. ENDCLASS. diff --git a/src/checks/zcl_aoc_check_08.clas.testclasses.abap b/src/checks/zcl_aoc_check_08.clas.testclasses.abap index 84515406..94cf673c 100644 --- a/src/checks/zcl_aoc_check_08.clas.testclasses.abap +++ b/src/checks/zcl_aoc_check_08.clas.testclasses.abap @@ -30,6 +30,7 @@ CLASS ltcl_test DEFINITION FOR TESTING test007_02 FOR TESTING, test007_03 FOR TESTING, test007_04 FOR TESTING, + test007_05 FOR TESTING, test008_01 FOR TESTING, test009_01 FOR TESTING, test010_01 FOR TESTING, @@ -260,7 +261,17 @@ CLASS ltcl_test IMPLEMENTATION. cl_abap_unit_assert=>assert_initial( ms_result ). ENDMETHOD. + + METHOD test007_05. + _code 'SELECT-OPTIONS s_date FOR d DEFAULT ''20231207'' SIGN I OPTION GE MODIF ID mr.'. + + ms_result = zcl_aoc_unit_test=>check( mt_code ). + + cl_abap_unit_assert=>assert_initial( ms_result ). + + ENDMETHOD. + METHOD test008_01. _code 'DEMAND something.'. From f4f049686f5985ff2bb02943511315d1e93e85f2 Mon Sep 17 00:00:00 2001 From: Alexandr Zhuravlev Date: Thu, 7 Dec 2023 14:34:46 +0300 Subject: [PATCH 2/7] fix(): Fix checks when option is last word in statement --- src/checks/zcl_aoc_check_08.clas.abap | 4 ++-- .../zcl_aoc_check_08.clas.testclasses.abap | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/checks/zcl_aoc_check_08.clas.abap b/src/checks/zcl_aoc_check_08.clas.abap index 85ac7695..b23e2d19 100644 --- a/src/checks/zcl_aoc_check_08.clas.abap +++ b/src/checks/zcl_aoc_check_08.clas.abap @@ -362,8 +362,8 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. rv_old = abap_false. LOOP AT mt_old_option INTO DATA(lv_option). - DATA(lv_include) = |\\s+{ lv_option }\\s+|. - DATA(lv_exclude) = |(\\s+{ lv_option }\\s+TYPE\\s+)\|(\\s+OPTION\\s+{ lv_option }\\s+)|. + DATA(lv_include) = |\\s{ lv_option }\\s|. + DATA(lv_exclude) = |(\\s{ lv_option }\\s+TYPE\\b)\|(\\sOPTION\\s+{ lv_option }\\b)|. TRY. DATA(lo_regex) = cl_regex_cache=>get_singleton( )->get_regex( pattern = lv_include diff --git a/src/checks/zcl_aoc_check_08.clas.testclasses.abap b/src/checks/zcl_aoc_check_08.clas.testclasses.abap index 94cf673c..6b907482 100644 --- a/src/checks/zcl_aoc_check_08.clas.testclasses.abap +++ b/src/checks/zcl_aoc_check_08.clas.testclasses.abap @@ -31,6 +31,8 @@ CLASS ltcl_test DEFINITION FOR TESTING test007_03 FOR TESTING, test007_04 FOR TESTING, test007_05 FOR TESTING, + test007_06 FOR TESTING, + test007_07 FOR TESTING, test008_01 FOR TESTING, test009_01 FOR TESTING, test010_01 FOR TESTING, @@ -272,6 +274,27 @@ CLASS ltcl_test IMPLEMENTATION. ENDMETHOD. + METHOD test007_06. + + _code 'SELECT-OPTIONS s_date FOR d DEFAULT ''20231207'' SIGN I OPTION GE.'. + + ms_result = zcl_aoc_unit_test=>check( mt_code ). + + cl_abap_unit_assert=>assert_initial( ms_result ). + + ENDMETHOD. + + METHOD test007_07. + + _code 'SELECT-OPTIONS s_date FOR d DEFAULT ''20231207'' SIGN I OPTION GE'. + _code 'MODIF ID mr.'. + + ms_result = zcl_aoc_unit_test=>check( mt_code ). + + cl_abap_unit_assert=>assert_initial( ms_result ). + + ENDMETHOD. + METHOD test008_01. _code 'DEMAND something.'. From d4c3935819b5fcb47e42d378bbf4337d5db3dbbf Mon Sep 17 00:00:00 2001 From: Alexandr Zhuravlev Date: Thu, 7 Dec 2023 14:53:27 +0300 Subject: [PATCH 3/7] Remove whitespace at end of line in src/checks/zcl_aoc_check_08.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- src/checks/zcl_aoc_check_08.clas.abap | 1 - 1 file changed, 1 deletion(-) diff --git a/src/checks/zcl_aoc_check_08.clas.abap b/src/checks/zcl_aoc_check_08.clas.abap index b23e2d19..ec7745ea 100644 --- a/src/checks/zcl_aoc_check_08.clas.abap +++ b/src/checks/zcl_aoc_check_08.clas.abap @@ -421,7 +421,6 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. ENDMETHOD. - METHOD _fill_old_options. APPEND 'EQ' TO mt_old_option. APPEND 'NE' TO mt_old_option. From 8925dba478a1ef37961a9e25add2685d2c92d46f Mon Sep 17 00:00:00 2001 From: Alexandr Zhuravlev Date: Thu, 7 Dec 2023 15:00:04 +0300 Subject: [PATCH 4/7] refactor(): Fix abaplint problems --- src/checks/zcl_aoc_check_08.clas.abap | 5 ++--- src/checks/zcl_aoc_check_08.clas.testclasses.abap | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/checks/zcl_aoc_check_08.clas.abap b/src/checks/zcl_aoc_check_08.clas.abap index b23e2d19..4ed785fd 100644 --- a/src/checks/zcl_aoc_check_08.clas.abap +++ b/src/checks/zcl_aoc_check_08.clas.abap @@ -370,13 +370,13 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. ignore_case = abap_true ). DATA(lo_match) = lo_regex->create_matcher( text = iv_statement ). - IF lo_match->find_next( ). + IF lo_match->find_next( ) = abap_true. lo_regex = cl_regex_cache=>get_singleton( )->get_regex( pattern = lv_exclude ignore_case = abap_true ). lo_match = lo_regex->create_matcher( text = iv_statement ). - IF NOT lo_match->find_next( ). + IF lo_match->find_next( ) = abap_false. rv_old = abap_true. RETURN. ENDIF. @@ -421,7 +421,6 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. ENDMETHOD. - METHOD _fill_old_options. APPEND 'EQ' TO mt_old_option. APPEND 'NE' TO mt_old_option. diff --git a/src/checks/zcl_aoc_check_08.clas.testclasses.abap b/src/checks/zcl_aoc_check_08.clas.testclasses.abap index 6b907482..2f060e5e 100644 --- a/src/checks/zcl_aoc_check_08.clas.testclasses.abap +++ b/src/checks/zcl_aoc_check_08.clas.testclasses.abap @@ -263,7 +263,7 @@ CLASS ltcl_test IMPLEMENTATION. cl_abap_unit_assert=>assert_initial( ms_result ). ENDMETHOD. - + METHOD test007_05. _code 'SELECT-OPTIONS s_date FOR d DEFAULT ''20231207'' SIGN I OPTION GE MODIF ID mr.'. @@ -273,7 +273,7 @@ CLASS ltcl_test IMPLEMENTATION. cl_abap_unit_assert=>assert_initial( ms_result ). ENDMETHOD. - + METHOD test007_06. _code 'SELECT-OPTIONS s_date FOR d DEFAULT ''20231207'' SIGN I OPTION GE.'. @@ -294,7 +294,7 @@ CLASS ltcl_test IMPLEMENTATION. cl_abap_unit_assert=>assert_initial( ms_result ). ENDMETHOD. - + METHOD test008_01. _code 'DEMAND something.'. From 9613d02d714aec0b4381873170984ceb816155da Mon Sep 17 00:00:00 2001 From: Alexandr Zhuravlev Date: Thu, 7 Dec 2023 15:02:19 +0300 Subject: [PATCH 5/7] Fix in-statement indentation in src/checks/zcl_aoc_check_08.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- src/checks/zcl_aoc_check_08.clas.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/checks/zcl_aoc_check_08.clas.abap b/src/checks/zcl_aoc_check_08.clas.abap index 4ed785fd..d9a1c788 100644 --- a/src/checks/zcl_aoc_check_08.clas.abap +++ b/src/checks/zcl_aoc_check_08.clas.abap @@ -368,7 +368,7 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. DATA(lo_regex) = cl_regex_cache=>get_singleton( )->get_regex( pattern = lv_include ignore_case = abap_true - ). + ). DATA(lo_match) = lo_regex->create_matcher( text = iv_statement ). IF lo_match->find_next( ) = abap_true. lo_regex = cl_regex_cache=>get_singleton( )->get_regex( From 0190d88819a598fa55dcba0f685596c382b14c65 Mon Sep 17 00:00:00 2001 From: Alexandr Zhuravlev Date: Thu, 7 Dec 2023 15:05:10 +0300 Subject: [PATCH 6/7] refactor(): Fix abaplint problems --- src/checks/zcl_aoc_check_08.clas.abap | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/checks/zcl_aoc_check_08.clas.abap b/src/checks/zcl_aoc_check_08.clas.abap index d9a1c788..5e15955f 100644 --- a/src/checks/zcl_aoc_check_08.clas.abap +++ b/src/checks/zcl_aoc_check_08.clas.abap @@ -367,14 +367,12 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. TRY. DATA(lo_regex) = cl_regex_cache=>get_singleton( )->get_regex( pattern = lv_include - ignore_case = abap_true - ). + ignore_case = abap_true ). DATA(lo_match) = lo_regex->create_matcher( text = iv_statement ). IF lo_match->find_next( ) = abap_true. lo_regex = cl_regex_cache=>get_singleton( )->get_regex( pattern = lv_exclude - ignore_case = abap_true - ). + ignore_case = abap_true ). lo_match = lo_regex->create_matcher( text = iv_statement ). IF lo_match->find_next( ) = abap_false. rv_old = abap_true. @@ -420,7 +418,7 @@ CLASS zcl_aoc_check_08 IMPLEMENTATION. ASSERT sy-subrc = 0. ENDMETHOD. - + METHOD _fill_old_options. APPEND 'EQ' TO mt_old_option. APPEND 'NE' TO mt_old_option. From 5f6a9a4d23e5fa18154b912cc235f3bc5beafcd7 Mon Sep 17 00:00:00 2001 From: Alexandr Zhuravlev Date: Thu, 7 Dec 2023 15:06:21 +0300 Subject: [PATCH 7/7] Remove whitespace at end of line in src/checks/zcl_aoc_check_08.clas.testclasses.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- src/checks/zcl_aoc_check_08.clas.testclasses.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/checks/zcl_aoc_check_08.clas.testclasses.abap b/src/checks/zcl_aoc_check_08.clas.testclasses.abap index 2f060e5e..f5e10327 100644 --- a/src/checks/zcl_aoc_check_08.clas.testclasses.abap +++ b/src/checks/zcl_aoc_check_08.clas.testclasses.abap @@ -293,7 +293,7 @@ CLASS ltcl_test IMPLEMENTATION. cl_abap_unit_assert=>assert_initial( ms_result ). - ENDMETHOD. + ENDMETHOD. METHOD test008_01.