From 879b1c18ee7a2a0878be1099d6de0fb919e418a0 Mon Sep 17 00:00:00 2001 From: Lucas Borin <5233413+lucasborin@users.noreply.github.com> Date: Mon, 1 Nov 2021 10:09:16 -0300 Subject: [PATCH 01/10] new version --- src/y_code_pal_version.intf.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/y_code_pal_version.intf.abap b/src/y_code_pal_version.intf.abap index 06d1d8a7..4d2cc45a 100644 --- a/src/y_code_pal_version.intf.abap +++ b/src/y_code_pal_version.intf.abap @@ -1,3 +1,3 @@ INTERFACE y_code_pal_version PUBLIC. "#EC CONS_INTF - CONSTANTS abap TYPE string VALUE '1.16.0' ##NO_TEXT. + CONSTANTS abap TYPE string VALUE '1.17.0' ##NO_TEXT. ENDINTERFACE. From 015dc724d036b758780f4054e4b3b627beadbbfe Mon Sep 17 00:00:00 2001 From: Lucas Borin <5233413+lucasborin@users.noreply.github.com> Date: Tue, 2 Nov 2021 04:43:25 -0300 Subject: [PATCH 02/10] Quickfix: Pseudo Comment (#509) * adding quickfixes * Less than 3 newlines and at least a single newline are required in between metho * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> --- changelog.txt | 4 +++ src/foundation/y_check_base.clas.abap | 29 +++++++++++++++++++-- src/foundation/y_code_pal_messages.msag.xml | 20 ++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 src/foundation/y_code_pal_messages.msag.xml diff --git a/changelog.txt b/changelog.txt index 01d0c8f4..846e116a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -16,6 +16,10 @@ Legend + : added - : removed +2021-XX-XX v.1.17.0 +------------------ ++ Quickfix: Pseudo Comment (#509) + 2021-11-01 v.1.16.0 ------------------ * Prefer New: Dynamic Call with Parameters (#502) diff --git a/src/foundation/y_check_base.clas.abap b/src/foundation/y_check_base.clas.abap index 372a1448..9e6b127a 100644 --- a/src/foundation/y_check_base.clas.abap +++ b/src/foundation/y_check_base.clas.abap @@ -95,7 +95,6 @@ CLASS y_check_base DEFINITION PUBLIC ABSTRACT parameter_02 TYPE csequence OPTIONAL parameter_03 TYPE csequence OPTIONAL parameter_04 TYPE csequence OPTIONAL - additional_information TYPE xstring OPTIONAL check_configuration TYPE y_if_clean_code_manager=>check_configuration. "#EC OPTL_PARAM METHODS set_check_message IMPORTING message TYPE itex132. @@ -136,6 +135,9 @@ CLASS y_check_base DEFINITION PUBLIC ABSTRACT METHODS get_tadir_keys IMPORTING statement TYPE sstmnt RETURNING VALUE(result) TYPE tadir. + METHODS add_pseudo_comment_quickfix IMPORTING check_configuration TYPE y_if_clean_code_manager=>check_configuration + statement_index TYPE int4. + ENDCLASS. @@ -447,6 +449,8 @@ CLASS Y_CHECK_BASE IMPLEMENTATION. AND check_configurations[ 1 ]-object_creation_date IS INITIAL. CLEAR check_configurations. ENDIF. + + quickfix_factory = cl_ci_quickfix_creation=>create_quickfix_alternatives( ). ENDMETHOD. @@ -475,6 +479,9 @@ CLASS Y_CHECK_BASE IMPLEMENTATION. handle_ignore_pseudo_comments( check_configuration ). + add_pseudo_comment_quickfix( check_configuration = check_configuration + statement_index = statement_index ). + IF is_running_unit_test( ) = abap_true. handle_unit_test_statistics( statement_index = statement_index check_configuration = check_configuration ). @@ -492,7 +499,7 @@ CLASS Y_CHECK_BASE IMPLEMENTATION. p_param_2 = parameter_02 p_param_3 = parameter_03 p_param_4 = parameter_04 - p_detail = additional_information ). + p_detail = quickfix_factory->export_to_xstring( ) ). ENDIF. ENDMETHOD. @@ -686,4 +693,22 @@ CLASS Y_CHECK_BASE IMPLEMENTATION. ENDMETHOD. + METHOD add_pseudo_comment_quickfix. + CHECK settings-pseudo_comment IS NOT INITIAL. + CHECK check_configuration-ignore_pseudo_comments = abap_false. + + DATA(context) = cl_ci_quickfix_abap_context=>create_from_scan_stmt( p_ci_scan = ref_scan + p_stmt_idx = statement_index ). + + DATA(quickfix) = quickfix_factory->create_quickfix( ). + + quickfix->add_docu_from_msgclass( p_msg_class = 'Y_CODE_PAL_MESSAGES' + p_msg_number = '001' + p_msg_parameter1 = settings-pseudo_comment ). + + quickfix->if_ci_quickfix_abap_actions~insert_after( p_new_code = settings-pseudo_comment + p_context = context ). + ENDMETHOD. + + ENDCLASS. diff --git a/src/foundation/y_code_pal_messages.msag.xml b/src/foundation/y_code_pal_messages.msag.xml new file mode 100644 index 00000000..2e15cad7 --- /dev/null +++ b/src/foundation/y_code_pal_messages.msag.xml @@ -0,0 +1,20 @@ + + + + + + Y_CODE_PAL_MESSAGES + E + Messages + + + + E + Y_CODE_PAL_MESSAGES + 001 + Add Pseudo Comment (&1) + + + + + From dd4ca0ec20ea6d981753045792b732e09b8d83c8 Mon Sep 17 00:00:00 2001 From: Lucas Borin <5233413+lucasborin@users.noreply.github.com> Date: Wed, 3 Nov 2021 14:24:29 -0300 Subject: [PATCH 03/10] fixing (#515) Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> --- src/foundation/y_check_base.clas.abap | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/foundation/y_check_base.clas.abap b/src/foundation/y_check_base.clas.abap index 9e6b127a..017c1acb 100644 --- a/src/foundation/y_check_base.clas.abap +++ b/src/foundation/y_check_base.clas.abap @@ -697,8 +697,12 @@ CLASS Y_CHECK_BASE IMPLEMENTATION. CHECK settings-pseudo_comment IS NOT INITIAL. CHECK check_configuration-ignore_pseudo_comments = abap_false. - DATA(context) = cl_ci_quickfix_abap_context=>create_from_scan_stmt( p_ci_scan = ref_scan - p_stmt_idx = statement_index ). + TRY. + DATA(context) = cl_ci_quickfix_abap_context=>create_from_scan_stmt( p_ci_scan = ref_scan + p_stmt_idx = statement_index ). + CATCH cx_ci_quickfix_failed. + RETURN. + ENDTRY. DATA(quickfix) = quickfix_factory->create_quickfix( ). From 9000edf3e3390fc3ca1db3181ee314e63746a69f Mon Sep 17 00:00:00 2001 From: Lucas Borin <5233413+lucasborin@users.noreply.github.co> Date: Fri, 5 Nov 2021 14:26:43 +0000 Subject: [PATCH 04/10] abapgit 1.112.0 --- src/foundation/ycicc_message_kind.doma.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/foundation/ycicc_message_kind.doma.xml b/src/foundation/ycicc_message_kind.doma.xml index f259ed17..832c9587 100644 --- a/src/foundation/ycicc_message_kind.doma.xml +++ b/src/foundation/ycicc_message_kind.doma.xml @@ -13,21 +13,18 @@ - YCICC_MESSAGE_KIND 0001 E E Error - YCICC_MESSAGE_KIND 0002 E W Warning - YCICC_MESSAGE_KIND 0003 E N From 87087d1fdbdf67b5a4522575b9909c9436d6500d Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Mon, 8 Nov 2021 08:30:24 +0100 Subject: [PATCH 05/10] remove unused variable (#522) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Eugen Günther <64586309+eugen-guenther-sap@users.noreply.github.com> --- src/profiles/y_profile_admin_classes.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/profiles/y_profile_admin_classes.prog.abap b/src/profiles/y_profile_admin_classes.prog.abap index 9753806f..06ba80d0 100644 --- a/src/profiles/y_profile_admin_classes.prog.abap +++ b/src/profiles/y_profile_admin_classes.prog.abap @@ -1418,7 +1418,7 @@ CLASS lcl_util IMPLEMENTATION. ENDTRY. TRY. - DATA(checks) = profile_manager->select_checks( profile ). + profile_manager->select_checks( profile ). CATCH ycx_entry_not_found. RETURN. ENDTRY. From 828f2ae08fd889f56057597b55b774db98c51583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugen=20G=C3=BCnther?= <64586309+eugen-guenther-sap@users.noreply.github.com> Date: Wed, 17 Nov 2021 09:52:30 +0100 Subject: [PATCH 06/10] mass change of check data (#507) * 1.16.0 * enabling changelog * RAP needs CREATE OBJECT ... FOR TESTING (#448) * resolves #444 * changelog * COLLECT restrictions (#442) * new check * abapLint * supporting programs * closing gaps * adding documentation * Adding Changelog * exempt ddic typed table * supporting ddic table type * supporting header line * removing gap section * supporting class attributes * Use functional writing style for method calls * Adding example * Prefer Pragmas to Pseudo Comments (#446) * new check * new check * documentation * exempting SLIN * Adding example * Unit-Test Assert Validator (#450) * Unit-Test Assert Validator resolve #449 * changelog * BAdI example class vs Percentage Comment (#451) * BAdI example class vs Percentage Comment resolve #443 * changelog * Allow Exemptions (#453) * big refactoring * isolating unit tests * changelog * forcing commit * forcing commit * Handle functional operand in assert check (#462) * Functional operand check * Fix unit test and nesting syntax * Lint * Update exemption unit test * Fix unit test * Add functional operand fix #460 to changelog * removing static test, and adding more test cases Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.com> * Unit Test on 752 (#463) * fix #461 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Refactoring Code Pal (#457) * saving progress * saving progress * Update changelog.txt * global class vs local class * local vs global test class * Global Test Class fix * enabling unit test * refactoring y_check_function uts * abaplint feedback * abaplint feedback * removing unecessary fields and fixing checksum * fixing coverages (statement) * default noaunit for test * fixing bug in chain declaration * fixing unit test * Less than 3 newlines and at least a single newline are required in between metho * ref #461 * solving conflict * Update changelog.txt * Update src/foundation/y_code_pal_ref_scan_double.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * Update src/foundation/y_code_pal_ref_scan_double.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * fixing collect dump * fixing pseudo comment dump and performance issue * reusing refscan (performance) * Update src/checks/y_check_pseudo_comment_usage.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * Update src/checks/y_check_pseudo_comment_usage.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * Update src/checks/y_check_pseudo_comment_usage.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * Update src/checks/y_check_pseudo_comment_usage.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * pseudo comment refactoring (performance) * collect (performance) * Update changelog.txt * Reorder definitions to top of routine * pseudo_comment_usage ignore_pseudo * more performance improvements * removing deprecated methods * activating prefer_inline (#465) * activating prefer_inline * Prefer Inline Declarations, PERCENTAGE * Prefer Inline Declarations, RISK_LVL * Prefer Inline Declarations, HAS_REDIRECTION * Prefer Inline Declarations, TITLE * Prefer Inline Declarations, CLASS_SEARCH_STRING Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * performance improvement (check statement pos) * Prefer Inline Declarations, PROFILE_CONFIGURATIONS * Line break multiple parameters * Reorder definitions to top of routine * Update changelog.txt * magic number * adding pseudo comments * Adding pseudo comment * Fixing magic number * Use | to assemble text! * Use | to assemble text! * Prefer RETURNING to EXPORTING! * Prefer LINE_EXISTS or LINE_INDEX to READ TABLE or LOOP AT! * Prefer IS NOT to NOT IS! * replacing pseudo * removing unecessary pseudos * unecessary pseudo * clean coding f4call * new SAP note dependency Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * use native *_wa variables (#475) * resolves #474 * changelog * forcing commit * restore Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * disabling abaplint check_syntax * Magic Number: Table Index (#477) * resolves #474 * fix #475 * fixing case * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Prefer New to Create Object: Dynamic Type (#478) * Fixes #469 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Magic Number: Leading Zeros (#479) * fixing magic number for leading zeros * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Magic Number: CASE SY-TABIX and CO NUMBERS (#480) * case sy-tabix and Co numbers * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Y_CHECK_FORM: Screen Events (#482) * Fixes #454 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Empty Catch: Test Double Framework (#483) * Fixes #332 * Missing space between string or character literal and parentheses * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * line_exists does not support the operator IN (#485) * Fixes #484 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Alternative Pseudo Comment (#486) * saving progress * saving progress * saving progress * alternative pseudo * fixing 7.40 compatibility * 7.40 compatibility * revert checksum * adjusting pseudo comment usage * adding unit tests * Missing space between string or character literal and parentheses * new pseudo comment * changelog * alt_pcom in ut * Update empty_catch.md Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Chain Declaration for Complex Structures (#488) * new test scope * fixes #466 * cleaning self-reference * cleaning chain declaration * cleaning chain declaration * cleaning chain declaration * fixing syntax error * changelog * documentation Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * fixing syntax error * `Y_CHECK_MESSAGE_EASY_TO_FIND` dump (#492) * fixes #491 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * short review (#493) Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Prefer Pragmas to Pseudo Comments (#495) * fixes #489 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Pseudo Comment Usage: Multiple Inline Entries (#496) * fixes #494 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * Skip `Prefer RETURNING to EXPORTING` when both exist (#497) * fixes #490 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * DB Access in UT: Local Inheritance (#498) * partially solves #433 * changelog * renaming variable Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * DB Access in UT: Global Inheritance (#500) * fixes #433 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * fixing short dump (#501) Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * removing unecessary pseudo comment * Prefer New: Dynamic Call with Parameters (#503) * fixes #502 * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> * mass change of check data * Update changelog.txt * UI finetuning * minor change * abaplint compliance * abaplint picky compliance * UI Changes * Revert "UI Changes" This reverts commit cac373d71fdb981978bb8da84f986d0ad3dcbe64. * UI Changes * small UI adjustments * Update changelog.txt Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.com> Co-authored-by: Mike Pokraka Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> --- changelog.txt | 2 + src/profiles/y_if_profile_manager.intf.abap | 26 +- .../y_profile_admin_classes.prog.abap | 246 +++++---- src/profiles/y_profile_admin_data.prog.abap | 11 +- .../y_profile_administrator.prog.abap | 19 +- src/profiles/y_profile_administrator.prog.xml | 467 +++++++++++++++++- src/profiles/y_profile_manager.clas.abap | 68 ++- 7 files changed, 697 insertions(+), 142 deletions(-) diff --git a/changelog.txt b/changelog.txt index 407d3c1d..623a2ad7 100644 --- a/changelog.txt +++ b/changelog.txt @@ -19,6 +19,8 @@ Legend 2021-XX-XX v.1.17.0 ------------------ + Quickfix: Pseudo Comment (#509) ++ Check Button: Replicate Configuration +! Check Button: Edit 2021-11-11 v.1.16.3 ------------------ diff --git a/src/profiles/y_if_profile_manager.intf.abap b/src/profiles/y_if_profile_manager.intf.abap index 5945d5dd..6682513f 100644 --- a/src/profiles/y_if_profile_manager.intf.abap +++ b/src/profiles/y_if_profile_manager.intf.abap @@ -1,9 +1,9 @@ INTERFACE y_if_profile_manager PUBLIC. CONSTANTS: BEGIN OF types, - checks TYPE tabname VALUE 'YTAB_CHECKS', + checks TYPE tabname VALUE 'YTAB_CHECKS', delegates TYPE tabname VALUE 'YTAB_DELEGATES', - profiles TYPE tabname VALUE 'YTAB_PROFILES', + profiles TYPE tabname VALUE 'YTAB_PROFILES', END OF types. TYPES: @@ -14,9 +14,9 @@ INTERFACE y_if_profile_manager PUBLIC. check_assignments TYPE STANDARD TABLE OF ytab_checks WITH DEFAULT KEY . TYPES: BEGIN OF file, - profile TYPE ytab_profiles, - checks TYPE check_assignments, - delegates TYPE delegate_assigments, + profile TYPE ytab_profiles, + checks TYPE check_assignments, + delegates TYPE delegate_assigments, END OF file. TYPES: @@ -40,7 +40,7 @@ INTERFACE y_if_profile_manager PUBLIC. RETURNING VALUE(result) TYPE REF TO y_if_profile_manager. CLASS-METHODS get_checks_from_db - RETURNING value(result) TYPE tt_tadir. + RETURNING VALUE(result) TYPE tt_tadir. METHODS select_profiles IMPORTING @@ -151,8 +151,20 @@ INTERFACE y_if_profile_manager PUBLIC. profile TYPE ycicc_profile. METHODS profile_exists IMPORTING - name TYPE ytab_profiles-profile + name TYPE ytab_profiles-profile RETURNING VALUE(result) TYPE abap_bool. + METHODS mass_change + IMPORTING + name TYPE ytab_profiles-profile + config TYPE ytab_checks + change_validation_period TYPE abap_bool + change_created_since TYPE abap_bool + change_prio TYPE abap_bool + change_apply_prod_code TYPE abap_bool + change_apply_testcode TYPE abap_bool + change_allow_exemptios TYPE abap_bool + RAISING + cx_failed. ENDINTERFACE. diff --git a/src/profiles/y_profile_admin_classes.prog.abap b/src/profiles/y_profile_admin_classes.prog.abap index 06ba80d0..e6c065fb 100644 --- a/src/profiles/y_profile_admin_classes.prog.abap +++ b/src/profiles/y_profile_admin_classes.prog.abap @@ -18,8 +18,8 @@ CLASS lcl_file IMPLEMENTATION. CONCATENATE 'CODE_PAL_PROFILE-' sy-sysid sy-mandt '-' profile-profile INTO DATA(file_name). - DATA(structure) = NEW y_if_profile_manager=>file( profile = profile - checks = checks + DATA(structure) = NEW y_if_profile_manager=>file( profile = profile + checks = checks delegates = delegates ). APPEND /ui2/cl_json=>serialize( structure ) TO file_content. @@ -46,34 +46,34 @@ CLASS lcl_file IMPLEMENTATION. cl_gui_frontend_services=>gui_download( EXPORTING - filename = file_fullpath + filename = file_fullpath CHANGING - data_tab = file_content + data_tab = file_content EXCEPTIONS - file_write_error = 1 - no_batch = 2 - gui_refuse_filetransfer = 3 - invalid_type = 4 - no_authority = 5 - unknown_error = 6 - header_not_allowed = 7 - separator_not_allowed = 8 - filesize_not_allowed = 9 - header_too_long = 10 - dp_error_create = 11 - dp_error_send = 12 - dp_error_write = 13 - unknown_dp_error = 14 - access_denied = 15 - dp_out_of_memory = 16 - disk_full = 17 - dp_timeout = 18 - file_not_found = 19 - dataprovider_exception = 20 - control_flush_error = 21 - not_supported_by_gui = 22 - error_no_gui = 23 - OTHERS = 24 + file_write_error = 1 + no_batch = 2 + gui_refuse_filetransfer = 3 + invalid_type = 4 + no_authority = 5 + unknown_error = 6 + header_not_allowed = 7 + separator_not_allowed = 8 + filesize_not_allowed = 9 + header_too_long = 10 + dp_error_create = 11 + dp_error_send = 12 + dp_error_write = 13 + unknown_dp_error = 14 + access_denied = 15 + dp_out_of_memory = 16 + disk_full = 17 + dp_timeout = 18 + file_not_found = 19 + dataprovider_exception = 20 + control_flush_error = 21 + not_supported_by_gui = 22 + error_no_gui = 23 + OTHERS = 24 ). IF sy-subrc <> 0. @@ -144,7 +144,7 @@ CLASS lcl_file IMPLEMENTATION. ENDLOOP. /ui2/cl_json=>deserialize( EXPORTING json = json - CHANGING data = result ). + CHANGING data = result ). IF result IS INITIAL. RAISE EXCEPTION TYPE cx_abap_invalid_value. @@ -188,7 +188,7 @@ CLASS lcl_util DEFINITION. "#EC NUMBER_METHODS IMPORTING referenced_field_name TYPE dfies-fieldname window_title TYPE c value_table TYPE STANDARD TABLE - RETURNING VALUE(result) TYPE y_if_profile_manager=>value_help + RETURNING VALUE(result) TYPE y_if_profile_manager=>value_help RAISING cx_failed. CLASS-METHODS: @@ -197,19 +197,11 @@ CLASS lcl_util DEFINITION. "#EC NUMBER_METHODS check_f4help. CLASS-METHODS: - init_check_fields_active, + init_ui_400, get_check IMPORTING checkid TYPE vseoclass-clsname RETURNING VALUE(result) TYPE REF TO y_check_base RAISING cx_sy_create_object_error, - set_threshold_active - IMPORTING is_active TYPE abap_bool DEFAULT abap_true, - set_on_prodcode_active - IMPORTING is_active TYPE abap_bool DEFAULT abap_true, - set_on_testcode_active - IMPORTING is_active TYPE abap_bool DEFAULT abap_true, - set_allow_pcom_active - IMPORTING is_active TYPE abap_bool DEFAULT abap_true, set_dynpro_field_active IMPORTING fieldname TYPE string is_active TYPE abap_bool. @@ -251,6 +243,12 @@ CLASS lcl_util DEFINITION. "#EC NUMBER_METHODS check_selected_check_rights RETURNING VALUE(result) TYPE abap_bool. + CLASS-METHODS: + mass_change, + set_text_field_text + IMPORTING fieldname TYPE string + text TYPE string. + CLASS-METHODS: get_cursor_field RETURNING VALUE(result) TYPE char20, @@ -295,7 +293,7 @@ CLASS lcl_profile_events IMPLEMENTATION. lcl_util=>refresh_delegates( ). TRY. lcl_util=>switch_toolbar_activation( ). - CATCH cx_failed. "#EC EMPTY_CATCH + CATCH cx_failed. "#EC EMPTY_CATCH ENDTRY. ENDMETHOD. @@ -389,6 +387,9 @@ CLASS lcl_check_events IMPLEMENTATION. WHEN 'BTN_MISSING_CK'. lcl_util=>add_missing_checks( ). + WHEN 'BTN_MASS_CHANGE'. + lcl_util=>mass_change( ). + ENDCASE. lcl_util=>refresh_checks( ). @@ -503,6 +504,11 @@ CLASS lcl_util IMPLEMENTATION. butn_type = cntb_btype_button quickinfo = 'Edit'(026) ). + checks_tree->toolbar_control( )->add_button( fcode = 'BTN_MASS_CHANGE' + icon = '@EP@' + butn_type = cntb_btype_button + quickinfo = 'Replicate Configuration' ). + checks_tree->toolbar_control( )->add_button( fcode = 'BTN_REMOVE' icon = '@05@' butn_type = cntb_btype_button @@ -528,21 +534,21 @@ CLASS lcl_util IMPLEMENTATION. butn_type = cntb_btype_button quickinfo = 'Add Missing Checks'(000) ). - checks_tree->set_field_visibility( fieldname = 'START_DATE' + checks_tree->set_field_visibility( fieldname = 'START_DATE' is_visible = abap_true ). - checks_tree->set_field_visibility( fieldname = 'END_DATE' + checks_tree->set_field_visibility( fieldname = 'END_DATE' is_visible = abap_true ). - checks_tree->set_field_visibility( fieldname = 'OBJECTS_CREATED_ON' + checks_tree->set_field_visibility( fieldname = 'OBJECTS_CREATED_ON' is_visible = abap_true ). - checks_tree->set_field_visibility( fieldname = 'THRESHOLD' + checks_tree->set_field_visibility( fieldname = 'THRESHOLD' is_visible = abap_true ). - checks_tree->set_field_visibility( fieldname = 'PRIO' + checks_tree->set_field_visibility( fieldname = 'PRIO' is_visible = abap_true ). - checks_tree->set_field_visibility( fieldname = 'APPLY_ON_PRODUCTIVE_CODE' + checks_tree->set_field_visibility( fieldname = 'APPLY_ON_PRODUCTIVE_CODE' is_visible = abap_true ). - checks_tree->set_field_visibility( fieldname = 'APPLY_ON_TESTCODE' + checks_tree->set_field_visibility( fieldname = 'APPLY_ON_TESTCODE' is_visible = abap_true ). - checks_tree->set_field_visibility( fieldname = 'IGNORE_PSEUDO_COMMENTS' + checks_tree->set_field_visibility( fieldname = 'IGNORE_PSEUDO_COMMENTS' is_visible = abap_true ). checks_tree->set_field_header_text( fieldname = 'PROFILE' @@ -756,7 +762,7 @@ CLASS lcl_util IMPLEMENTATION. TRY. DATA(f4values) = call_f4help( referenced_field_name = 'PROFILE' window_title = 'Available Profiles'(009) - value_table = profile_manager->get_registered_profiles( ) ). + value_table = profile_manager->get_registered_profiles( ) ). IF f4values IS NOT INITIAL. io_profilename = f4values[ 1 ]-fieldval. @@ -777,7 +783,7 @@ CLASS lcl_util IMPLEMENTATION. TRY. DATA(f4values) = call_f4help( referenced_field_name = 'PROFILE' window_title = 'Available Profiles'(009) - value_table = profile_manager->get_registered_profiles( ) ). + value_table = profile_manager->get_registered_profiles( ) ). IF f4values IS NOT INITIAL. io_profilename = f4values[ 1 ]-fieldval. @@ -797,8 +803,8 @@ CLASS lcl_util IMPLEMENTATION. METHOD check_f4help. TRY. DATA(f4values) = call_f4help( referenced_field_name = 'CHECKID' - window_title = 'Available Checks'(019) - value_table = profile_manager->select_existing_checks( ) ). + window_title = 'Available Checks'(019) + value_table = profile_manager->select_existing_checks( ) ). IF f4values IS NOT INITIAL. io_check_id = f4values[ 1 ]-fieldval. @@ -819,35 +825,23 @@ CLASS lcl_util IMPLEMENTATION. ENDTRY. ENDMETHOD. - METHOD init_check_fields_active. + METHOD init_ui_400. TRY. DATA(obj) = get_check( io_check_id ). - IF obj->settings-disable_threshold_selection = abap_true. - set_threshold_active( abap_false ). - ELSE. - set_threshold_active( abap_true ). - ENDIF. + set_dynpro_field_active( fieldname = 'IO_THRESHOLD' + is_active = xsdbool( obj->settings-disable_threshold_selection = abap_false ) ). - IF obj->settings-disable_on_prodcode_selection = abap_true. - set_on_prodcode_active( abap_false ). - ELSE. - set_on_prodcode_active( abap_true ). - ENDIF. + set_dynpro_field_active( fieldname = 'CHBX_ON_PRODCODE' + is_active = xsdbool( obj->settings-disable_on_prodcode_selection = abap_false ) ). - IF obj->settings-disable_on_testcode_selection = abap_true. - set_on_testcode_active( abap_false ). - ELSE. - set_on_testcode_active( abap_true ). - ENDIF. + set_dynpro_field_active( fieldname = 'CHBX_ON_TESTCODE' + is_active = xsdbool( obj->settings-disable_on_testcode_selection = abap_false ) ). - IF obj->settings-pseudo_comment IS INITIAL. - set_allow_pcom_active( abap_false ). - ELSE. - set_allow_pcom_active( abap_true ). - ENDIF. + set_dynpro_field_active( fieldname = 'CHBX_ALLOW_PCOM' + is_active = xsdbool( obj->settings-pseudo_comment IS NOT INITIAL ) ). - lbl_pcom_name = obj->settings-pseudo_comment. + io_pcom_name = obj->settings-pseudo_comment. IF has_edit_mode_started = abap_true. io_threshold = obj->settings-threshold. @@ -856,7 +850,7 @@ CLASS lcl_util IMPLEMENTATION. chbx_on_prodcode = obj->settings-apply_on_productive_code. chbx_on_testcode = obj->settings-apply_on_test_code. chbx_allow_pcom = switch_bool( obj->settings-ignore_pseudo_comments ). - lbl_pcom_name = obj->settings-pseudo_comment. + io_pcom_name = obj->settings-pseudo_comment. has_edit_mode_started = abap_false. ENDIF. @@ -869,34 +863,6 @@ CLASS lcl_util IMPLEMENTATION. CREATE OBJECT result TYPE (checkid). ENDMETHOD. - METHOD set_on_prodcode_active. - set_dynpro_field_active( fieldname = 'LBL_ON_PRODCODE' - is_active = is_active ). - set_dynpro_field_active( fieldname = 'CHBX_ON_PRODCODE' - is_active = is_active ). - ENDMETHOD. - - METHOD set_on_testcode_active. - set_dynpro_field_active( fieldname = 'LBL_ON_TESTCODE' - is_active = is_active ). - set_dynpro_field_active( fieldname = 'CHBX_ON_TESTCODE' - is_active = is_active ). - ENDMETHOD. - - METHOD set_threshold_active. - set_dynpro_field_active( fieldname = 'LBL_TEXT_THRESHOLD' - is_active = is_active ). - set_dynpro_field_active( fieldname = 'IO_THRESHOLD' - is_active = is_active ). - ENDMETHOD. - - METHOD set_allow_pcom_active. - set_dynpro_field_active( fieldname = 'LBL_ALLOW_PCOM' - is_active = is_active ). - set_dynpro_field_active( fieldname = 'CHBX_ALLOW_PCOM' - is_active = is_active ). - ENDMETHOD. - METHOD set_dynpro_field_active. LOOP AT SCREEN INTO DATA(line). @@ -915,6 +881,16 @@ CLASS lcl_util IMPLEMENTATION. ENDLOOP. ENDMETHOD. + METHOD set_text_field_text. + LOOP AT SCREEN INTO DATA(line). + IF line-name = to_upper( fieldname ). + line-output = text. + MODIFY SCREEN FROM line. + EXIT. + ENDIF. + ENDLOOP. + ENDMETHOD. + METHOD assign_profile. CALL SCREEN 200 STARTING AT 10 10. @@ -1079,8 +1055,8 @@ CLASS lcl_util IMPLEMENTATION. ENDTRY. TRY. - lcl_file=>download( profile = profile - checks = checks + lcl_file=>download( profile = profile + checks = checks delegates = delegates ). CATCH ycx_object_not_processed. MESSAGE 'Failed to Export!'(053) TYPE 'E'. @@ -1191,6 +1167,60 @@ CLASS lcl_util IMPLEMENTATION. ENDTRY. ENDMETHOD. + METHOD mass_change. + chbx_change_vp = abap_false. + chbx_change_since = abap_false. + chbx_message_prio = abap_false. + chbx_select_prodcode = abap_false. + chbx_apply_testcode = abap_false. + chbx_apply_pcom = abap_false. + + TRY. + DATA(config) = get_selected_check( ). + + io_start_date = config-start_date. + io_end_date = config-end_date. + io_creation_date = config-objects_created_on. + chbx_on_prodcode = config-apply_on_productive_code. + chbx_on_testcode = config-apply_on_testcode. + chbx_allow_pcom = switch_bool( config-ignore_pseudo_comments ). + + CASE config-prio. + WHEN 'E'. + io_issue_prio = 'Error'. + WHEN 'W'. + io_issue_prio = 'Warning'. + WHEN 'N'. + io_issue_prio = 'Notification'. + ENDCASE. + + CATCH ycx_entry_not_found. + MESSAGE 'Please select a check!'(015) TYPE 'I'. + RETURN. + ENDTRY. + + CALL SCREEN 700 STARTING AT 10 10. + IF user_command <> 'ENTR_700'. + RETURN. + ENDIF. + + TRY. + profile_manager->mass_change( name = get_selected_profile( )-profile + config = config + change_validation_period = chbx_change_vp + change_created_since = chbx_change_since + change_prio = chbx_message_prio + change_apply_prod_code = chbx_select_prodcode + change_apply_testcode = chbx_apply_testcode + change_allow_exemptios = chbx_apply_pcom ). + + CATCH ycx_entry_not_found. + RETURN. + CATCH cx_failed. + MESSAGE 'The profile needs to have checks!' TYPE 'I'. + ENDTRY. + ENDMETHOD. + METHOD init_add_check. DATA obj TYPE REF TO y_check_base. @@ -1203,7 +1233,7 @@ CLASS lcl_util IMPLEMENTATION. chbx_on_prodcode = abap_true. chbx_on_testcode = abap_true. chbx_allow_pcom = abap_true. - lbl_pcom_name = space. + io_pcom_name = space. TRY. CREATE OBJECT obj TYPE (io_check_id). @@ -1213,7 +1243,7 @@ CLASS lcl_util IMPLEMENTATION. chbx_on_prodcode = obj->settings-apply_on_productive_code. chbx_on_testcode = obj->settings-apply_on_test_code. chbx_allow_pcom = switch_bool( obj->settings-ignore_pseudo_comments ). - lbl_pcom_name = obj->settings-pseudo_comment. + io_pcom_name = obj->settings-pseudo_comment. CATCH cx_sy_create_object_error. RETURN. ENDTRY. @@ -1286,7 +1316,7 @@ CLASS lcl_util IMPLEMENTATION. TRY. IF edit_mode = abap_true. - profile_manager->check_time_overlap( check = check + profile_manager->check_time_overlap( check = check selected_check = get_selected_check( ) ). profile_manager->delete_check( get_selected_check( ) ). diff --git a/src/profiles/y_profile_admin_data.prog.abap b/src/profiles/y_profile_admin_data.prog.abap index 960a50ff..513e1901 100644 --- a/src/profiles/y_profile_admin_data.prog.abap +++ b/src/profiles/y_profile_admin_data.prog.abap @@ -19,4 +19,13 @@ DATA io_prio TYPE ytab_checks-prio. DATA chbx_on_testcode TYPE abap_bool. DATA chbx_on_prodcode TYPE abap_bool. DATA chbx_allow_pcom TYPE abap_bool. -DATA lbl_pcom_name TYPE sci_pcom. +DATA io_pcom_name TYPE sci_pcom. + +DATA chbx_change_vp TYPE abap_bool. +DATA chbx_change_since TYPE abap_bool. +DATA chbx_message_prio TYPE abap_bool. +DATA chbx_select_prodcode TYPE abap_bool. +DATA chbx_apply_testcode TYPE abap_bool. +DATA chbx_apply_pcom TYPE abap_bool. + +DATA io_issue_prio TYPE char12. diff --git a/src/profiles/y_profile_administrator.prog.abap b/src/profiles/y_profile_administrator.prog.abap index b2282d5f..29f8849a 100644 --- a/src/profiles/y_profile_administrator.prog.abap +++ b/src/profiles/y_profile_administrator.prog.abap @@ -6,6 +6,7 @@ CONSTANTS assign_delegate_screen TYPE screen-group1 VALUE '300'. CONSTANTS check_customizing_screen TYPE screen-group1 VALUE '400'. CONSTANTS new_profile_template_screen TYPE screen-group1 VALUE '500'. CONSTANTS copy_profile_screen TYPE screen-group1 VALUE '600'. +CONSTANTS mass_update TYPE screen-group1 VALUE '700'. INCLUDE y_profile_admin_data. INCLUDE y_profile_admin_classes. @@ -38,7 +39,7 @@ ENDMODULE. MODULE status_0400 OUTPUT. SET PF-STATUS check_customizing_screen. SET TITLEBAR check_customizing_screen. - lcl_util=>init_check_fields_active( ). + lcl_util=>init_ui_400( ). ENDMODULE. MODULE status_0500 OUTPUT. @@ -51,16 +52,20 @@ MODULE status_0600 OUTPUT. SET TITLEBAR copy_profile_screen. ENDMODULE. +MODULE status_0700 OUTPUT. + SET PF-STATUS mass_update. + SET TITLEBAR mass_update. +ENDMODULE. + MODULE user_command INPUT. + IF user_command CP 'ENTR_*'. + LEAVE TO SCREEN 0. + ENDIF. + CASE user_command. WHEN 'BACK' OR 'EXIT' OR - 'ESC' OR - 'ENTR_200' OR - 'ENTR_300' OR - 'ENTR_400' OR - 'ENTR_500' OR - 'ENTR_600'. + 'ESC'. LEAVE TO SCREEN 0. WHEN 'PICK'. diff --git a/src/profiles/y_profile_administrator.prog.xml b/src/profiles/y_profile_administrator.prog.xml index e6b88976..680aeacc 100644 --- a/src/profiles/y_profile_administrator.prog.xml +++ b/src/profiles/y_profile_administrator.prog.xml @@ -230,7 +230,7 @@ N 0400 027 - 124 + 126 @@ -326,7 +326,7 @@ SCREEN TEXT LBL_TEXT_START_DATE - *Validity_Period___________FROM:_ + *Validity_Period_________________ 003 001 033 @@ -336,6 +336,20 @@ N X + + SCREEN + SCREEN + TEXT + LBL_TEXT_FROM_DATE + FROM: + 003 + 035 + 005 + 005 + 001 + CHAR + N + SCREEN SCREEN @@ -343,7 +357,7 @@ IO_START_DATE ?_________ 003 - 035 + 041 010 010 001 @@ -360,7 +374,7 @@ LBL_TEXT_END_DATE TO: 003 - 046 + 052 003 003 001 @@ -375,7 +389,7 @@ IO_END_DATE ?_________ 003 - 050 + 056 010 010 001 @@ -570,7 +584,7 @@ SCREEN SCREEN TEMPLATE - LBL_PCOM_NAME + IO_PCOM_NAME ____________________ 009 037 @@ -819,11 +833,374 @@ + +
+ Y_PROFILE_ADMINISTRATOR + 0700 + E + Mass Update of Checks + N + 0700 + 008 + 073 +
+ + + SCREEN + SCREEN + + + + + SCREEN + SCREEN + TEXT + LBL_INFO + Choose_the_relevant_fields_for_replication: + 001 + 001 + 043 + 043 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + CHBX_CHANGE_VP + 002 + 003 + 001 + 001 + 001 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + LBL_TEXT_START_DATE + Validity_Period:________________ + 002 + 007 + 032 + 032 + 001 + CHAR + N + + + SCREEN + SCREEN + TEXT + LBL_TEXT_FROM_DATE + FROM: + 002 + 040 + 005 + 005 + 001 + CHAR + N + + + SCREEN + SCREEN + TEMPLATE + IO_START_DATE + __________ + 002 + 046 + 010 + 010 + 001 + DATS + X + X + N + + + SCREEN + SCREEN + TEXT + LBL_TEXT_END_DATE + TO: + 002 + 057 + 003 + 003 + 001 + CHAR + N + + + SCREEN + SCREEN + TEMPLATE + IO_END_DATE + __________ + 002 + 061 + 010 + 010 + 001 + DATS + X + X + N + + + SCREEN + SCREEN + CHECK + CHBX_CHANGE_SINCE + 003 + 003 + 001 + 001 + 001 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + LBL_TEXT_CREATION_DATE + Apply_on_Objects_Created_Since:_ + 003 + 007 + 032 + 032 + 001 + CHAR + N + + + SCREEN + SCREEN + TEMPLATE + IO_CREATION_DATE + __________ + 003 + 040 + 010 + 010 + 001 + DATS + X + X + N + + + SCREEN + SCREEN + CHECK + CHBX_MESSAGE_PRIO + 004 + 003 + 001 + 001 + 001 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + LBL_TEXT_PRIO + Message_Priority:_______________ + 004 + 007 + 032 + 032 + 001 + CHAR + N + + + SCREEN + SCREEN + TEMPLATE + IO_ISSUE_PRIO + ____________ + 004 + 040 + 012 + 012 + 001 + CHAR + X + X + N + + + SCREEN + SCREEN + CHECK + CHBX_SELECT_PRODCODE + 005 + 003 + 001 + 001 + 001 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + LBL_ON_PRODCODE + Apply_on_Productive_Code:_ + 005 + 007 + 026 + 032 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + CHBX_ON_PRODCODE + 005 + 040 + 001 + 001 + 001 + CHAR + X + N + + + SCREEN + SCREEN + CHECK + CHBX_APPLY_TESTCODE + 006 + 003 + 001 + 001 + 001 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + LBL_ON_TESTCODE + Apply_on_Testcode:______________ + 006 + 007 + 032 + 032 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + CHBX_ON_TESTCODE + 006 + 040 + 001 + 001 + 001 + CHAR + X + N + + + SCREEN + SCREEN + CHECK + CHBX_APPLY_PCOM + 007 + 003 + 001 + 001 + 001 + CHAR + X + X + + + SCREEN + SCREEN + TEXT + LBL_ALLOW_PCOM + Allow_Exemptions:_______________ + 007 + 007 + 032 + 032 + 001 + CHAR + N + + + SCREEN + SCREEN + CHECK + CHBX_ALLOW_PCOM + 007 + 040 + 001 + 001 + 001 + CHAR + X + N + + + SCREEN + SCREEN + OKCODE + USER_COMMAND + ____________________ + 020 + 020 + 001 + CHAR + X + + + + + PROCESS BEFORE OUTPUT. + + + MODULE status_0700. + + + + PROCESS AFTER INPUT. + + + MODULE user_command. + + +
000001 - 000006 + 000007 @@ -869,6 +1246,13 @@ 0001 Status 600 + + 700 + P + 000007 + 0001 + Status 700 + @@ -907,6 +1291,12 @@ S Ok + + ENTR_700 + 001 + S + Ok + ESC 001 @@ -988,6 +1378,18 @@ 02 12 + + 000007 + 0001 + 01 + 00 + + + 000007 + 0001 + 02 + 12 + @@ -1044,12 +1446,6 @@ ENTR_400 001 - - 000004 - 02 - PICK - 001 - 000004 12 @@ -1086,6 +1482,18 @@ ESC 001 + + 000007 + 00 + ENTR_700 + 001 + + + 000007 + 12 + ESC + 001 + @@ -1128,10 +1536,6 @@ 400 ESC - - 400 - PICK - 500 ENTR_500 @@ -1152,6 +1556,18 @@ 600 PICK + + 700 + ENTR_600 + + + 700 + ENTR_700 + + + 700 + ESC + @@ -1238,6 +1654,19 @@ P Status 600 + + P + 000007 + P + Status 700 + + + B + 000007 + 0001 + P + Status 700 + @@ -1264,6 +1693,10 @@ 600 Create a Copy of an existing Profile + + 700 + Replicate Configuration + diff --git a/src/profiles/y_profile_manager.clas.abap b/src/profiles/y_profile_manager.clas.abap index 54f58bb7..f3b6b2f8 100644 --- a/src/profiles/y_profile_manager.clas.abap +++ b/src/profiles/y_profile_manager.clas.abap @@ -4,6 +4,7 @@ CLASS y_profile_manager DEFINITION PUBLIC CREATE PUBLIC . ALIASES create FOR y_if_profile_manager~create. ALIASES get_checks_from_db FOR y_if_profile_manager~get_checks_from_db. ALIASES types FOR y_if_profile_manager~types. + ALIASES mass_change FOR y_if_profile_manager~mass_change. PROTECTED SECTION. METHODS has_time_collision @@ -28,7 +29,7 @@ ENDCLASS. -CLASS y_profile_manager IMPLEMENTATION. +CLASS Y_PROFILE_MANAGER IMPLEMENTATION. METHOD has_time_collision. @@ -409,7 +410,6 @@ CLASS y_profile_manager IMPLEMENTATION. METHOD y_if_profile_manager~profile_exists. TRY. - "Based on Delegates because the profile might be inactive result = xsdbool( y_if_profile_manager~select_delegates( name ) IS NOT INITIAL ). CATCH ycx_entry_not_found. result = abap_false. @@ -429,6 +429,7 @@ CLASS y_profile_manager IMPLEMENTATION. SELECT * FROM tadir WHERE devclass = @package + AND NOT obj_name = @package INTO TABLE @result. ENDMETHOD. @@ -444,4 +445,67 @@ CLASS y_profile_manager IMPLEMENTATION. METHOD y_if_profile_manager~create. result = NEW y_profile_manager( ). ENDMETHOD. + + + METHOD mass_change. + DATA check TYPE REF TO y_check_base. + TRY. + DATA(checks) = y_if_profile_manager~select_checks( name ). + + LOOP AT checks INTO DATA(temp_config). + TRY. + CREATE OBJECT check TYPE (temp_config-checkid). + CATCH cx_sy_create_object_error. + CONTINUE. + ENDTRY. + + DATA(temp_check) = temp_config. + + IF change_validation_period = abap_true. + temp_check-start_date = config-start_date. + temp_check-end_date = config-end_date. + ENDIF. + + IF change_created_since = abap_true. + temp_check-objects_created_on = config-objects_created_on. + ENDIF. + + IF change_prio = abap_true AND config-prio <> space. + temp_check-prio = config-prio. + ENDIF. + + IF change_apply_prod_code = abap_true AND check->settings-disable_on_prodcode_selection = abap_false. + temp_check-apply_on_productive_code = config-apply_on_productive_code. + ENDIF. + + IF change_apply_testcode = abap_true AND check->settings-disable_on_testcode_selection = abap_false. + temp_check-apply_on_testcode = config-apply_on_testcode. + ENDIF. + + IF change_allow_exemptios = abap_true AND check->settings-pseudo_comment <> space. + temp_check-ignore_pseudo_comments = config-ignore_pseudo_comments. + ENDIF. + + TRY. + y_if_profile_manager~delete_check( temp_config ). + y_if_profile_manager~insert_check( temp_check ). + + CATCH ycx_failed_to_remove_a_line. + + CATCH ycx_failed_to_add_a_line + ycx_time_overlap. + + TRY. + y_if_profile_manager~insert_check( temp_config ). + CATCH ycx_failed_to_add_a_line + ycx_time_overlap. + ENDTRY. + + ENDTRY. + ENDLOOP. + + CATCH ycx_entry_not_found. + RAISE EXCEPTION TYPE cx_failed. + ENDTRY. + ENDMETHOD. ENDCLASS. From 4e063f84bae7ba409c1447ba88991d08a5c5da69 Mon Sep 17 00:00:00 2001 From: Lucas Borin <5233413+lucasborin@users.noreply.github.com> Date: Wed, 17 Nov 2021 09:30:42 -0300 Subject: [PATCH 07/10] Refactoring Quick Fixes (#523) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * quickfixes are now mandatory * first check + message * no quickfix * wip * implementing abstract method * pseudo comments won't enable the quickfix * removing unnecessary : * removing duplicated quick fix * changelog Co-authored-by: Lucas Borin <5233413+lucasborin@users.noreply.github.co> Co-authored-by: Eugen Günther <64586309+eugen-guenther-sap@users.noreply.github.com> --- changelog.txt | 1 + .../y_category_code_pal.clas.locals_imp.abap | 11 +++++ .../y_check_boolean_input_param.clas.abap | 11 +++-- src/checks/y_check_branch_coverage.clas.abap | 8 ++++ .../y_check_call_method_usage.clas.abap | 30 ++++++++----- src/checks/y_check_chain_decl_usage.clas.abap | 5 +++ src/checks/y_check_check_in_loop.clas.abap | 5 +++ .../y_check_check_stmnt_position.clas.abap | 6 +++ src/checks/y_check_collect.clas.abap | 7 +++ src/checks/y_check_comment_position.clas.abap | 7 +++ src/checks/y_check_comment_type.clas.abap | 8 ++++ src/checks/y_check_comment_usage.clas.abap | 6 +++ .../y_check_constants_interface.clas.abap | 10 +++-- src/checks/y_check_cx_root_usage.clas.abap | 5 +++ .../y_check_cyclomatic_complexity.clas.abap | 7 +++ src/checks/y_check_db_access_in_ut.clas.abap | 5 +++ src/checks/y_check_default_key.clas.abap | 5 +++ .../y_check_deprecated_classes.clas.abap | 6 +++ .../y_check_deprecated_key_words.clas.abap | 10 ++++- src/checks/y_check_empty_catches.clas.abap | 5 +++ .../y_check_empty_if_branches.clas.abap | 7 +++ src/checks/y_check_empty_procedures.clas.abap | 7 +++ .../y_check_equals_sign_chaining.clas.abap | 7 +++ .../y_check_external_call_in_ut.clas.abap | 7 +++ src/checks/y_check_form.clas.abap | 5 +++ src/checks/y_check_function.clas.abap | 6 +++ .../y_check_is_interface_in_class.clas.abap | 5 +++ src/checks/y_check_magic_number.clas.abap | 5 +++ .../y_check_max_nesting_depth.clas.abap | 6 +++ .../y_check_message_easy_to_find.clas.abap | 5 +++ .../y_check_message_translation.clas.abap | 6 +++ .../y_check_method_output_param.clas.abap | 8 +++- .../y_check_method_return_bool.clas.abap | 7 +++ .../y_check_non_class_exception.clas.abap | 5 +++ .../y_check_num_exec_statements.clas.abap | 8 +++- .../y_check_num_output_parameter.clas.abap | 7 +++ .../y_check_num_public_attributes.clas.abap | 7 ++- .../y_check_number_attributes.clas.abap | 5 +++ src/checks/y_check_number_events.clas.abap | 5 +++ .../y_check_number_interfaces.clas.abap | 5 +++ src/checks/y_check_number_methods.clas.abap | 6 ++- .../y_check_omit_optional_exp.clas.abap | 43 +++++++++++-------- .../y_check_optional_parameters.clas.abap | 8 ++++ .../y_check_prefer_case_to_elseif.clas.abap | 5 +++ src/checks/y_check_prefer_is_not.clas.abap | 6 ++- .../y_check_prefer_line_exists.clas.abap | 5 +++ .../y_check_prefer_new_to_crt_obj.clas.abap | 5 +++ src/checks/y_check_prefer_pragmas.clas.abap | 5 +++ src/checks/y_check_prefer_returning.clas.abap | 5 +++ .../y_check_procedure_coverage.clas.abap | 9 +++- src/checks/y_check_profile_message.clas.abap | 7 +++ .../y_check_pseudo_comment_usage.clas.abap | 5 +++ src/checks/y_check_receiving_usage.clas.abap | 11 ++++- src/checks/y_check_returning_name.clas.abap | 5 +++ .../y_check_scope_of_variable.clas.abap | 9 +++- src/checks/y_check_self_reference.clas.abap | 6 ++- .../y_check_statement_coverage.clas.abap | 9 +++- .../y_check_sub_assign_read_table.clas.abap | 8 +++- src/checks/y_check_test_seam_usage.clas.abap | 10 ++++- src/checks/y_check_text_assembly.clas.abap | 6 ++- src/checks/y_check_unit_test_assert.clas.abap | 6 ++- src/foundation/y_check_base.clas.abap | 31 +++++++++---- .../y_check_base.clas.locals_imp.abap | 6 ++- src/foundation/y_code_pal_messages.msag.xml | 2 +- 64 files changed, 435 insertions(+), 64 deletions(-) diff --git a/changelog.txt b/changelog.txt index 623a2ad7..0a536b4a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -18,6 +18,7 @@ Legend 2021-XX-XX v.1.17.0 ------------------ +* Refactoring Quick Fixes (#523) + Quickfix: Pseudo Comment (#509) + Check Button: Replicate Configuration ! Check Button: Edit diff --git a/src/categories/y_category_code_pal.clas.locals_imp.abap b/src/categories/y_category_code_pal.clas.locals_imp.abap index e1829175..e59ced72 100644 --- a/src/categories/y_category_code_pal.clas.locals_imp.abap +++ b/src/categories/y_category_code_pal.clas.locals_imp.abap @@ -4,10 +4,21 @@ CLASS lcl_check_base_mock DEFINITION INHERITING FROM y_check_base. PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. + ENDCLASS. + + CLASS lcl_check_base_mock IMPLEMENTATION. + METHOD inspect_tokens. RETURN. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_boolean_input_param.clas.abap b/src/checks/y_check_boolean_input_param.clas.abap index 4b3e60a7..06b2c04a 100644 --- a/src/checks/y_check_boolean_input_param.clas.abap +++ b/src/checks/y_check_boolean_input_param.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_boolean_input_param DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS is_setter_method IMPORTING statement TYPE sstmnt @@ -33,8 +34,7 @@ CLASS y_check_boolean_input_param IMPLEMENTATION. METHOD inspect_tokens. - - CHECK get_token_abs( statement-from ) = 'METHODS'. + CHECK keyword( ) = if_kaizen_keywords_c=>gc_methods. CHECK is_setter_method( statement ) = abap_false. CHECK has_boolean_input_param( statement ). @@ -44,12 +44,11 @@ CLASS y_check_boolean_input_param IMPLEMENTATION. statement_index = index statement_from = statement-from check_configuration = configuration ). - ENDMETHOD. METHOD is_setter_method. - DATA(method_name) = get_token_abs( statement-from + 1 ). + DATA(method_name) = next1( CONV #( if_kaizen_keywords_c=>gc_methods ) ). result = xsdbool( method_name CS 'SET_' ). ENDMETHOD. @@ -80,4 +79,8 @@ CLASS y_check_boolean_input_param IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_branch_coverage.clas.abap b/src/checks/y_check_branch_coverage.clas.abap index 48409e07..f653a31e 100644 --- a/src/checks/y_check_branch_coverage.clas.abap +++ b/src/checks/y_check_branch_coverage.clas.abap @@ -5,6 +5,8 @@ CLASS y_check_branch_coverage DEFINITION PUBLIC INHERITING FROM y_check_base CRE PROTECTED SECTION. METHODS execute_check REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. + ENDCLASS. @@ -64,4 +66,10 @@ CLASS y_check_branch_coverage IMPLEMENTATION. METHOD inspect_tokens. RETURN. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_call_method_usage.clas.abap b/src/checks/y_check_call_method_usage.clas.abap index d5bc6ae5..360cdf9d 100644 --- a/src/checks/y_check_call_method_usage.clas.abap +++ b/src/checks/y_check_call_method_usage.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_call_method_usage DEFINITION PUBLIC INHERITING FROM y_check_base C PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. ENDCLASS. @@ -25,26 +26,33 @@ CLASS y_check_call_method_usage IMPLEMENTATION. METHOD inspect_tokens. - DATA(has_keyword) = xsdbool( get_token_abs( statement-from ) = 'CALL' - AND get_token_abs( statement-from + 1 ) = 'METHOD' ). + CHECK next1( 'CALL' ) = 'METHOD'. + + DATA(token) = next2( p_word1 = 'CALL' + p_word2 = 'METHOD' ). - DATA(token) = get_token_abs( statement-from + 2 ). DATA(is_dynamic) = xsdbool( token CP '*->(*)*' OR token CP '*=>(*)*' OR token CP '*)=>(*)*' OR token CP '*)=>*' OR token CP '(*)' ). - IF has_keyword = abap_true - AND is_dynamic = abap_false. - DATA(check_configuration) = detect_check_configuration( statement ). - - raise_error( statement_level = statement-level - statement_index = index - statement_from = statement-from - check_configuration = check_configuration ). + IF is_dynamic = abap_true. + RETURN. ENDIF. + + DATA(check_configuration) = detect_check_configuration( statement ). + + raise_error( statement_level = statement-level + statement_index = index + statement_from = statement-from + check_configuration = check_configuration ). ENDMETHOD. + METHOD add_check_quickfix. + " There is a native feature to remove it + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_chain_decl_usage.clas.abap b/src/checks/y_check_chain_decl_usage.clas.abap index 77ce1cd5..915ecb8c 100644 --- a/src/checks/y_check_chain_decl_usage.clas.abap +++ b/src/checks/y_check_chain_decl_usage.clas.abap @@ -5,6 +5,7 @@ CLASS y_check_chain_decl_usage DEFINITION PUBLIC INHERITING FROM y_check_base CR PROTECTED SECTION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS get_chained_statements RETURNING VALUE(result) TYPE sstmnt_tab. @@ -125,4 +126,8 @@ CLASS y_check_chain_decl_usage IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_check_in_loop.clas.abap b/src/checks/y_check_check_in_loop.clas.abap index 38e39ab7..5a873b36 100644 --- a/src/checks/y_check_check_in_loop.clas.abap +++ b/src/checks/y_check_check_in_loop.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_check_in_loop DEFINITION PUBLIC INHERITING FROM y_check_base CREAT PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS get_back_statement IMPORTING structure TYPE sstruc @@ -54,4 +55,8 @@ CLASS y_check_check_in_loop IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_check_stmnt_position.clas.abap b/src/checks/y_check_check_stmnt_position.clas.abap index e4b502fd..308cdf07 100644 --- a/src/checks/y_check_check_stmnt_position.clas.abap +++ b/src/checks/y_check_check_stmnt_position.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_check_stmnt_position DEFINITION PUBLIC INHERITING FROM y_check_bas PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS is_not_relevant_token IMPORTING token TYPE string @@ -99,4 +100,9 @@ CLASS y_check_check_stmnt_position IMPLEMENTATION. ENDLOOP. ENDMETHOD. + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_collect.clas.abap b/src/checks/y_check_collect.clas.abap index bd977dff..fe7ab16c 100644 --- a/src/checks/y_check_collect.clas.abap +++ b/src/checks/y_check_collect.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_collect DEFINITION PUBLIC INHERITING FROM y_check_base CREATE PUBL PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS extract_itab_name IMPORTING statement TYPE sstmnt @@ -191,4 +192,10 @@ CLASS Y_CHECK_COLLECT IMPLEMENTATION. RETURN. ENDTRY. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_comment_position.clas.abap b/src/checks/y_check_comment_position.clas.abap index 21b19810..93ec9900 100644 --- a/src/checks/y_check_comment_position.clas.abap +++ b/src/checks/y_check_comment_position.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_comment_position DEFINITION PUBLIC INHERITING FROM y_check_base CR PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS: add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS has_wrong_position IMPORTING statement TYPE sstmnt @@ -130,4 +131,10 @@ CLASS y_check_comment_position IMPLEMENTATION. ENDTRY. ENDMETHOD. + + METHOD add_check_quickfix. + " Comments are not supported + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_comment_type.clas.abap b/src/checks/y_check_comment_type.clas.abap index 722b807a..8bf0628d 100644 --- a/src/checks/y_check_comment_type.clas.abap +++ b/src/checks/y_check_comment_type.clas.abap @@ -3,6 +3,7 @@ CLASS y_check_comment_type DEFINITION PUBLIC INHERITING FROM y_check_base CREATE METHODS constructor. PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS has_wrong_comment_type IMPORTING statement TYPE sstmnt RETURNING VALUE(result) TYPE abap_bool. METHODS get_first_character IMPORTING token TYPE stokesx RETURNING VALUE(result) TYPE char1. @@ -67,4 +68,11 @@ CLASS y_check_comment_type IMPLEMENTATION. result = ''. ENDTRY. ENDMETHOD. + + + METHOD add_check_quickfix. + " Comments are not supported + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_comment_usage.clas.abap b/src/checks/y_check_comment_usage.clas.abap index 12d5e020..6d492005 100644 --- a/src/checks/y_check_comment_usage.clas.abap +++ b/src/checks/y_check_comment_usage.clas.abap @@ -6,6 +6,7 @@ CLASS y_check_comment_usage DEFINITION PUBLIC INHERITING FROM y_check_base CREAT METHODS execute_check REDEFINITION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA abs_statement_number TYPE i VALUE 0. @@ -184,4 +185,9 @@ CLASS y_check_comment_usage IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + " Comments are not supported + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_constants_interface.clas.abap b/src/checks/y_check_constants_interface.clas.abap index 9e0ed763..49855918 100644 --- a/src/checks/y_check_constants_interface.clas.abap +++ b/src/checks/y_check_constants_interface.clas.abap @@ -1,10 +1,11 @@ CLASS y_check_constants_interface DEFINITION PUBLIC INHERITING FROM y_check_base CREATE PUBLIC . PUBLIC SECTION. - METHODS constructor . + METHODS constructor. PROTECTED SECTION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA has_something_else TYPE abap_bool VALUE abap_false. @@ -18,8 +19,7 @@ ENDCLASS. -CLASS Y_CHECK_CONSTANTS_INTERFACE IMPLEMENTATION. - +CLASS y_check_constants_interface IMPLEMENTATION. METHOD constructor. super->constructor( ). @@ -84,4 +84,8 @@ CLASS Y_CHECK_CONSTANTS_INTERFACE IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_cx_root_usage.clas.abap b/src/checks/y_check_cx_root_usage.clas.abap index 2d099925..9e9c68f8 100644 --- a/src/checks/y_check_cx_root_usage.clas.abap +++ b/src/checks/y_check_cx_root_usage.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_cx_root_usage DEFINITION PUBLIC INHERITING FROM y_check_base CREAT PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS has_cx_root IMPORTING statement TYPE sstmnt @@ -50,4 +51,8 @@ CLASS y_check_cx_root_usage IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_cyclomatic_complexity.clas.abap b/src/checks/y_check_cyclomatic_complexity.clas.abap index 5686dc8b..332ce987 100644 --- a/src/checks/y_check_cyclomatic_complexity.clas.abap +++ b/src/checks/y_check_cyclomatic_complexity.clas.abap @@ -6,6 +6,7 @@ CLASS y_check_cyclomatic_complexity DEFINITION PUBLIC INHERITING FROM y_check_ba PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA cyclo_comp TYPE i. @@ -95,4 +96,10 @@ CLASS Y_CHECK_CYCLOMATIC_COMPLEXITY IMPLEMENTATION. parameter_02 = |{ check_configuration-threshold }| ). ENDIF. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_db_access_in_ut.clas.abap b/src/checks/y_check_db_access_in_ut.clas.abap index f37ab4d0..dc4747a4 100644 --- a/src/checks/y_check_db_access_in_ut.clas.abap +++ b/src/checks/y_check_db_access_in_ut.clas.abap @@ -5,6 +5,7 @@ CLASS y_check_db_access_in_ut DEFINITION PUBLIC INHERITING FROM y_check_base CRE PROTECTED SECTION. METHODS inspect_structures REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. CONSTANTS: BEGIN OF risk_level, @@ -311,4 +312,8 @@ CLASS Y_CHECK_DB_ACCESS_IN_UT IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_default_key.clas.abap b/src/checks/y_check_default_key.clas.abap index 80d75a14..77040034 100644 --- a/src/checks/y_check_default_key.clas.abap +++ b/src/checks/y_check_default_key.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_default_key DEFINITION PUBLIC INHERITING FROM y_check_base CREATE PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. ENDCLASS. @@ -48,4 +49,8 @@ CLASS y_check_default_key IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_deprecated_classes.clas.abap b/src/checks/y_check_deprecated_classes.clas.abap index 63c1b841..4757f981 100644 --- a/src/checks/y_check_deprecated_classes.clas.abap +++ b/src/checks/y_check_deprecated_classes.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_deprecated_classes DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. TYPES: BEGIN OF deprecated_classes_type, @@ -84,4 +85,9 @@ CLASS y_check_deprecated_classes IMPLEMENTATION. ENDTRY. ENDMETHOD. + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_deprecated_key_words.clas.abap b/src/checks/y_check_deprecated_key_words.clas.abap index 9bdf5d0d..b156d721 100644 --- a/src/checks/y_check_deprecated_key_words.clas.abap +++ b/src/checks/y_check_deprecated_key_words.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_deprecated_key_words DEFINITION PUBLIC INHERITING FROM y_check_bas PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS check_if_error IMPORTING index TYPE i @@ -13,8 +14,7 @@ ENDCLASS. -CLASS Y_CHECK_DEPRECATED_KEY_WORDS IMPLEMENTATION. - +CLASS y_check_deprecated_key_words IMPLEMENTATION. METHOD constructor. super->constructor( ). @@ -48,4 +48,10 @@ CLASS Y_CHECK_DEPRECATED_KEY_WORDS IMPLEMENTATION. check_configuration = check_configuration parameter_01 = |{ keyword }| ). ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_empty_catches.clas.abap b/src/checks/y_check_empty_catches.clas.abap index 1aeb521a..302e5cb4 100644 --- a/src/checks/y_check_empty_catches.clas.abap +++ b/src/checks/y_check_empty_catches.clas.abap @@ -5,6 +5,7 @@ CLASS y_check_empty_catches DEFINITION PUBLIC INHERITING FROM y_check_base CREAT PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. METHODS get_token_abs REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS is_test_double_framework RETURNING VALUE(result) TYPE abap_bool. @@ -64,4 +65,8 @@ CLASS y_check_empty_catches IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_empty_if_branches.clas.abap b/src/checks/y_check_empty_if_branches.clas.abap index ecd5f986..65364a81 100644 --- a/src/checks/y_check_empty_if_branches.clas.abap +++ b/src/checks/y_check_empty_if_branches.clas.abap @@ -8,6 +8,7 @@ CLASS y_check_empty_if_branches DEFINITION PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA branch_counter TYPE i VALUE 0. @@ -132,4 +133,10 @@ CLASS y_check_empty_if_branches IMPLEMENTATION. found_statement = abap_true. ENDIF. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_empty_procedures.clas.abap b/src/checks/y_check_empty_procedures.clas.abap index ad91c83e..20ebe207 100644 --- a/src/checks/y_check_empty_procedures.clas.abap +++ b/src/checks/y_check_empty_procedures.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_empty_procedures DEFINITION PUBLIC INHERITING FROM y_check_base CR PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS get_next_token_from_index IMPORTING index TYPE i @@ -78,4 +79,10 @@ CLASS y_check_empty_procedures IMPLEMENTATION. result = abap_true. ENDCASE. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_equals_sign_chaining.clas.abap b/src/checks/y_check_equals_sign_chaining.clas.abap index 96faf172..4958e07d 100644 --- a/src/checks/y_check_equals_sign_chaining.clas.abap +++ b/src/checks/y_check_equals_sign_chaining.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_equals_sign_chaining DEFINITION PUBLIC INHERITING FROM y_check_bas PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS get_second_token IMPORTING statement TYPE sstmnt @@ -54,4 +55,10 @@ CLASS Y_CHECK_EQUALS_SIGN_CHAINING IMPLEMENTATION. CHECK statement-from + 1 < statement-to. result = get_token_abs( statement-from + 1 ). ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_external_call_in_ut.clas.abap b/src/checks/y_check_external_call_in_ut.clas.abap index fd4cf4ea..1863aca5 100644 --- a/src/checks/y_check_external_call_in_ut.clas.abap +++ b/src/checks/y_check_external_call_in_ut.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_external_call_in_ut DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS check_if_error IMPORTING index TYPE i @@ -86,4 +87,10 @@ CLASS y_check_external_call_in_ut IMPLEMENTATION. statement = statement ). ENDIF. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_form.clas.abap b/src/checks/y_check_form.clas.abap index cb5c4cb0..6352fae9 100644 --- a/src/checks/y_check_form.clas.abap +++ b/src/checks/y_check_form.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_form DEFINITION PUBLIC INHERITING FROM y_check_base CREATE PUBLIC. PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS is_screen_event RETURNING VALUE(result) TYPE abap_bool. @@ -66,4 +67,8 @@ CLASS Y_CHECK_FORM IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_function.clas.abap b/src/checks/y_check_function.clas.abap index 44206684..349f57b2 100644 --- a/src/checks/y_check_function.clas.abap +++ b/src/checks/y_check_function.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_function DEFINITION PUBLIC INHERITING FROM y_check_base CREATE PUB PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS is_normal_mode RETURNING VALUE(result) TYPE abap_bool. @@ -48,4 +49,9 @@ CLASS y_check_function IMPLEMENTATION. result = xsdbool( sy-subrc = 0 ). ENDMETHOD. + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_is_interface_in_class.clas.abap b/src/checks/y_check_is_interface_in_class.clas.abap index 8efff606..765febff 100644 --- a/src/checks/y_check_is_interface_in_class.clas.abap +++ b/src/checks/y_check_is_interface_in_class.clas.abap @@ -5,6 +5,7 @@ CLASS y_check_is_interface_in_class DEFINITION PUBLIC INHERITING FROM y_check_ba PROTECTED SECTION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA public_method_counter TYPE i VALUE 0. @@ -103,4 +104,8 @@ CLASS Y_CHECK_IS_INTERFACE_IN_CLASS IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_magic_number.clas.abap b/src/checks/y_check_magic_number.clas.abap index 11f4d710..c35c751e 100644 --- a/src/checks/y_check_magic_number.clas.abap +++ b/src/checks/y_check_magic_number.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_magic_number DEFINITION PUBLIC INHERITING FROM y_check_base CREATE PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS is_magic_number RETURNING VALUE(result) TYPE abap_bool. @@ -109,4 +110,8 @@ CLASS y_check_magic_number IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_max_nesting_depth.clas.abap b/src/checks/y_check_max_nesting_depth.clas.abap index 49ecfd5c..1504b75e 100644 --- a/src/checks/y_check_max_nesting_depth.clas.abap +++ b/src/checks/y_check_max_nesting_depth.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_max_nesting_depth DEFINITION PUBLIC INHERITING FROM y_check_base C PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA statement_for_message TYPE sstmnt. @@ -108,4 +109,9 @@ CLASS y_check_max_nesting_depth IMPLEMENTATION. result = xsdbool( token-row = 0 ). ENDMETHOD. + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_message_easy_to_find.clas.abap b/src/checks/y_check_message_easy_to_find.clas.abap index a7a9b099..d1a4e540 100644 --- a/src/checks/y_check_message_easy_to_find.clas.abap +++ b/src/checks/y_check_message_easy_to_find.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_message_easy_to_find DEFINITION PUBLIC INHERITING FROM y_check_bas PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. CLASS-DATA message_classes TYPE HASHED TABLE OF arbgb WITH UNIQUE KEY table_line. @@ -137,4 +138,8 @@ CLASS y_check_message_easy_to_find IMPLEMENTATION. OR token_wa-str CA '->' ). ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_message_translation.clas.abap b/src/checks/y_check_message_translation.clas.abap index ae39ab24..e70a0d31 100644 --- a/src/checks/y_check_message_translation.clas.abap +++ b/src/checks/y_check_message_translation.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_message_translation DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. ENDCLASS. @@ -35,4 +36,9 @@ CLASS y_check_message_translation IMPLEMENTATION. check_configuration = check_configuration ). ENDMETHOD. + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_method_output_param.clas.abap b/src/checks/y_check_method_output_param.clas.abap index 6263d2af..74ce0467 100644 --- a/src/checks/y_check_method_output_param.clas.abap +++ b/src/checks/y_check_method_output_param.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_method_output_param DEFINITION PUBLIC INHERITING FROM y_check_bas PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA has_exporting_parameter TYPE abap_bool. @@ -18,7 +19,6 @@ ENDCLASS. CLASS Y_CHECK_METHOD_OUTPUT_PARAM IMPLEMENTATION. - METHOD has_error. DATA(sum) = 0. IF has_exporting_parameter = abap_true. @@ -86,4 +86,10 @@ CLASS Y_CHECK_METHOD_OUTPUT_PARAM IMPLEMENTATION. statement_from = statement-from check_configuration = check_configuration ). ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_method_return_bool.clas.abap b/src/checks/y_check_method_return_bool.clas.abap index 23ed89fe..aba83ef0 100644 --- a/src/checks/y_check_method_return_bool.clas.abap +++ b/src/checks/y_check_method_return_bool.clas.abap @@ -6,6 +6,7 @@ CLASS y_check_method_return_bool DEFINITION PUBLIC INHERITING FROM y_check_base DATA method_name TYPE string. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA good_method_names_beginning TYPE TABLE OF string. @@ -105,4 +106,10 @@ CLASS Y_CHECK_METHOD_RETURN_BOOL IMPLEMENTATION. parameter_01 = |{ method_name }| ). ENDIF. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_non_class_exception.clas.abap b/src/checks/y_check_non_class_exception.clas.abap index ed61d527..cec01b12 100644 --- a/src/checks/y_check_non_class_exception.clas.abap +++ b/src/checks/y_check_non_class_exception.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_non_class_exception DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. METHODS inspect_message IMPORTING statement TYPE sstmnt index TYPE i. @@ -74,4 +75,8 @@ CLASS Y_CHECK_NON_CLASS_EXCEPTION IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_num_exec_statements.clas.abap b/src/checks/y_check_num_exec_statements.clas.abap index 2ca6c407..5ee116b9 100644 --- a/src/checks/y_check_num_exec_statements.clas.abap +++ b/src/checks/y_check_num_exec_statements.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_num_exec_statements DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA no_exec_statements TYPE i. @@ -26,7 +27,6 @@ ENDCLASS. CLASS Y_CHECK_NUM_EXEC_STATEMENTS IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -171,4 +171,10 @@ CLASS Y_CHECK_NUM_EXEC_STATEMENTS IMPLEMENTATION. result = abap_true. ENDIF. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_num_output_parameter.clas.abap b/src/checks/y_check_num_output_parameter.clas.abap index 94822247..92d8edd7 100644 --- a/src/checks/y_check_num_output_parameter.clas.abap +++ b/src/checks/y_check_num_output_parameter.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_num_output_parameter DEFINITION PUBLIC INHERITING FROM y_check_bas PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS count_outputs_of_statement IMPORTING statement TYPE sstmnt RETURNING VALUE(result) TYPE i. @@ -76,4 +77,10 @@ CLASS y_check_num_output_parameter IMPLEMENTATION. ENDLOOP. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_num_public_attributes.clas.abap b/src/checks/y_check_num_public_attributes.clas.abap index e7dd2cb2..5d32d169 100644 --- a/src/checks/y_check_num_public_attributes.clas.abap +++ b/src/checks/y_check_num_public_attributes.clas.abap @@ -1,10 +1,11 @@ CLASS y_check_num_public_attributes DEFINITION PUBLIC INHERITING FROM y_check_base CREATE PUBLIC. PUBLIC SECTION. - METHODS constructor . + METHODS constructor. PROTECTED SECTION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. CONSTANTS structure_depth_threshold TYPE i VALUE 0. @@ -99,4 +100,8 @@ CLASS y_check_num_public_attributes IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_number_attributes.clas.abap b/src/checks/y_check_number_attributes.clas.abap index e0846a64..19911063 100644 --- a/src/checks/y_check_number_attributes.clas.abap +++ b/src/checks/y_check_number_attributes.clas.abap @@ -5,6 +5,7 @@ CLASS y_check_number_attributes DEFINITION PUBLIC INHERITING FROM y_check_base C PROTECTED SECTION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. CONSTANTS structure_depth_threshold TYPE i VALUE 0. @@ -95,4 +96,8 @@ CLASS y_check_number_attributes IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_number_events.clas.abap b/src/checks/y_check_number_events.clas.abap index cee6b03a..720f52b3 100644 --- a/src/checks/y_check_number_events.clas.abap +++ b/src/checks/y_check_number_events.clas.abap @@ -5,6 +5,7 @@ CLASS y_check_number_events DEFINITION PUBLIC INHERITING FROM y_check_base CREA PROTECTED SECTION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA event_counter TYPE i VALUE 0. @@ -65,4 +66,8 @@ CLASS Y_CHECK_NUMBER_EVENTS IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_number_interfaces.clas.abap b/src/checks/y_check_number_interfaces.clas.abap index 30e3f491..f4cea61e 100644 --- a/src/checks/y_check_number_interfaces.clas.abap +++ b/src/checks/y_check_number_interfaces.clas.abap @@ -5,6 +5,7 @@ CLASS y_check_number_interfaces DEFINITION PUBLIC INHERITING FROM y_check_base C PROTECTED SECTION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA interface_counter TYPE i VALUE 0. @@ -65,4 +66,8 @@ CLASS y_check_number_interfaces IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_number_methods.clas.abap b/src/checks/y_check_number_methods.clas.abap index 680783eb..430e62aa 100644 --- a/src/checks/y_check_number_methods.clas.abap +++ b/src/checks/y_check_number_methods.clas.abap @@ -5,7 +5,7 @@ CLASS y_check_number_methods DEFINITION PUBLIC INHERITING FROM y_check_base CREA PROTECTED SECTION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. - + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. DATA method_counter TYPE i VALUE 0. @@ -68,4 +68,8 @@ CLASS Y_CHECK_NUMBER_METHODS IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_omit_optional_exp.clas.abap b/src/checks/y_check_omit_optional_exp.clas.abap index 08cc8235..abfe42e0 100644 --- a/src/checks/y_check_omit_optional_exp.clas.abap +++ b/src/checks/y_check_omit_optional_exp.clas.abap @@ -4,12 +4,15 @@ CLASS y_check_omit_optional_exp DEFINITION PUBLIC INHERITING FROM y_check_base C PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. - METHODS has_optional_exporting IMPORTING statement TYPE sstmnt - RETURNING VALUE(result) TYPE abap_bool. + METHODS has_optional_exporting RETURNING VALUE(result) TYPE abap_bool. + ENDCLASS. + + CLASS y_check_omit_optional_exp IMPLEMENTATION. METHOD constructor. @@ -23,12 +26,12 @@ CLASS y_check_omit_optional_exp IMPLEMENTATION. set_check_message( 'Omit the optional keyword EXPORTING!' ). ENDMETHOD. - METHOD inspect_tokens. - CHECK statement-type = 'A' - OR statement-type = 'C'. + METHOD inspect_tokens. + CHECK statement-type = scan_stmnt_type-method_direct + OR statement-type = scan_stmnt_type-compute_direct. - CHECK has_optional_exporting( statement ). + CHECK has_optional_exporting( ). DATA(check_configuration) = detect_check_configuration( statement ). @@ -36,22 +39,28 @@ CLASS y_check_omit_optional_exp IMPLEMENTATION. statement_index = index statement_from = statement-from check_configuration = check_configuration ). - ENDMETHOD. + METHOD has_optional_exporting. - LOOP AT ref_scan->tokens ASSIGNING FIELD-SYMBOL() - FROM statement-from TO statement-to. - IF -str = 'EXPORTING'. - result = abap_true. - ELSEIF -str = 'IMPORTING' - OR -str = 'CHANGING' - OR -str = 'RECEIVING' - OR -str = 'EXCEPTIONS'. - result = abap_false. - RETURN. + LOOP AT ref_scan->tokens INTO token_wa + FROM statement_wa-from TO statement_wa-to. + IF token_wa-str = 'EXPORTING'. + result = abap_true. + ELSEIF token_wa-str = 'IMPORTING' + OR token_wa-str = 'CHANGING' + OR token_wa-str = 'RECEIVING' + OR token_wa-str = 'EXCEPTIONS'. + result = abap_false. + RETURN. ENDIF. ENDLOOP. ENDMETHOD. + + METHOD add_check_quickfix. + " Already Exists + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_optional_parameters.clas.abap b/src/checks/y_check_optional_parameters.clas.abap index 1bf5e46b..53bc8f86 100644 --- a/src/checks/y_check_optional_parameters.clas.abap +++ b/src/checks/y_check_optional_parameters.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_optional_parameters DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS has_optional_parameter IMPORTING statement TYPE sstmnt @@ -12,6 +13,7 @@ CLASS y_check_optional_parameters DEFINITION PUBLIC INHERITING FROM y_check_base ENDCLASS. + CLASS Y_CHECK_OPTIONAL_PARAMETERS IMPLEMENTATION. METHOD constructor. @@ -41,6 +43,7 @@ CLASS Y_CHECK_OPTIONAL_PARAMETERS IMPLEMENTATION. check_configuration = check_configuration ). ENDMETHOD. + METHOD has_optional_parameter. LOOP AT ref_scan->tokens TRANSPORTING NO FIELDS FROM statement-from TO statement-to @@ -50,4 +53,9 @@ CLASS Y_CHECK_OPTIONAL_PARAMETERS IMPLEMENTATION. ENDLOOP. ENDMETHOD. + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_prefer_case_to_elseif.clas.abap b/src/checks/y_check_prefer_case_to_elseif.clas.abap index c25510ee..c7e6c1ca 100644 --- a/src/checks/y_check_prefer_case_to_elseif.clas.abap +++ b/src/checks/y_check_prefer_case_to_elseif.clas.abap @@ -6,6 +6,7 @@ CLASS y_check_prefer_case_to_elseif DEFINITION PUBLIC INHERITING FROM y_check_ba METHODS inspect_structures REDEFINITION. METHODS inspect_statements REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. TYPES: BEGIN OF ty_counter, @@ -114,4 +115,8 @@ CLASS y_check_prefer_case_to_elseif IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_prefer_is_not.clas.abap b/src/checks/y_check_prefer_is_not.clas.abap index 149f86aa..b272703c 100644 --- a/src/checks/y_check_prefer_is_not.clas.abap +++ b/src/checks/y_check_prefer_is_not.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_prefer_is_not DEFINITION PUBLIC INHERITING FROM y_check_base CREAT PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. METHODS is_standard_function IMPORTING token TYPE stokesx RETURNING VALUE(result) TYPE abap_bool. @@ -14,7 +15,6 @@ ENDCLASS. CLASS y_check_prefer_is_not IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -75,4 +75,8 @@ CLASS y_check_prefer_is_not IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_prefer_line_exists.clas.abap b/src/checks/y_check_prefer_line_exists.clas.abap index 0f74a08f..5708c6f6 100644 --- a/src/checks/y_check_prefer_line_exists.clas.abap +++ b/src/checks/y_check_prefer_line_exists.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_prefer_line_exists DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. ENDCLASS. @@ -57,4 +58,8 @@ CLASS y_check_prefer_line_exists IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_prefer_new_to_crt_obj.clas.abap b/src/checks/y_check_prefer_new_to_crt_obj.clas.abap index cd6e3aac..d9fed61e 100644 --- a/src/checks/y_check_prefer_new_to_crt_obj.clas.abap +++ b/src/checks/y_check_prefer_new_to_crt_obj.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_prefer_new_to_crt_obj DEFINITION PUBLIC INHERITING FROM y_check_ba PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. ENDCLASS. @@ -42,4 +43,8 @@ CLASS y_check_prefer_new_to_crt_obj IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_prefer_pragmas.clas.abap b/src/checks/y_check_prefer_pragmas.clas.abap index 8ee19847..1a602c8a 100644 --- a/src/checks/y_check_prefer_pragmas.clas.abap +++ b/src/checks/y_check_prefer_pragmas.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_prefer_pragmas DEFINITION PUBLIC INHERITING FROM y_check_base CREA PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. TYPES: BEGIN OF mapping, @@ -93,4 +94,8 @@ CLASS y_check_prefer_pragmas IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_prefer_returning.clas.abap b/src/checks/y_check_prefer_returning.clas.abap index 294f4210..8cac92a0 100644 --- a/src/checks/y_check_prefer_returning.clas.abap +++ b/src/checks/y_check_prefer_returning.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_prefer_returning DEFINITION PUBLIC INHERITING FROM y_check_base CR PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS has_only_one_exporting IMPORTING statement TYPE sstmnt @@ -98,4 +99,8 @@ CLASS y_check_prefer_returning IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_procedure_coverage.clas.abap b/src/checks/y_check_procedure_coverage.clas.abap index 04ac0d0f..4c8d85d2 100644 --- a/src/checks/y_check_procedure_coverage.clas.abap +++ b/src/checks/y_check_procedure_coverage.clas.abap @@ -5,13 +5,14 @@ CLASS y_check_procedure_coverage DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS execute_check REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. + ENDCLASS. CLASS y_check_procedure_coverage IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -65,4 +66,10 @@ CLASS y_check_procedure_coverage IMPLEMENTATION. METHOD inspect_tokens. RETURN. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_profile_message.clas.abap b/src/checks/y_check_profile_message.clas.abap index 0b18f983..f294d70c 100644 --- a/src/checks/y_check_profile_message.clas.abap +++ b/src/checks/y_check_profile_message.clas.abap @@ -6,6 +6,7 @@ CLASS y_check_profile_message DEFINITION PUBLIC INHERITING FROM y_check_base CRE METHODS execute_check REDEFINITION. METHODS inspect_tokens REDEFINITION. METHODS inform REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. CLASS-DATA ran TYPE abap_bool. @@ -97,4 +98,10 @@ CLASS y_check_profile_message IMPLEMENTATION. ELSE |{ result }, { -profile }| ). ENDLOOP. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_pseudo_comment_usage.clas.abap b/src/checks/y_check_pseudo_comment_usage.clas.abap index ceffce61..d9f306f7 100644 --- a/src/checks/y_check_pseudo_comment_usage.clas.abap +++ b/src/checks/y_check_pseudo_comment_usage.clas.abap @@ -5,6 +5,7 @@ CLASS y_check_pseudo_comment_usage DEFINITION PUBLIC INHERITING FROM y_check_bas PROTECTED SECTION. METHODS execute_check REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. TYPES ty_pseudo_comments LIKE SORTED TABLE OF settings-pseudo_comment WITH NON-UNIQUE KEY table_line. @@ -123,4 +124,8 @@ CLASS y_check_pseudo_comment_usage IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_receiving_usage.clas.abap b/src/checks/y_check_receiving_usage.clas.abap index 2acdf24e..c5037074 100644 --- a/src/checks/y_check_receiving_usage.clas.abap +++ b/src/checks/y_check_receiving_usage.clas.abap @@ -4,12 +4,13 @@ CLASS y_check_receiving_usage DEFINITION PUBLIC INHERITING FROM y_check_base CRE PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. -ENDCLASS. + METHODS add_check_quickfix REDEFINITION. +ENDCLASS. -CLASS Y_CHECK_RECEIVING_USAGE IMPLEMENTATION. +CLASS y_check_receiving_usage IMPLEMENTATION. METHOD constructor. super->constructor( ). @@ -56,4 +57,10 @@ CLASS Y_CHECK_RECEIVING_USAGE IMPLEMENTATION. check_configuration = check_configuration ). ENDIF. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_returning_name.clas.abap b/src/checks/y_check_returning_name.clas.abap index 40f46602..c5e38a08 100644 --- a/src/checks/y_check_returning_name.clas.abap +++ b/src/checks/y_check_returning_name.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_returning_name DEFINITION PUBLIC INHERITING FROM y_check_base CREA PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS has_returning_with_wrong_name IMPORTING statement TYPE sstmnt @@ -71,4 +72,8 @@ CLASS y_check_returning_name IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_scope_of_variable.clas.abap b/src/checks/y_check_scope_of_variable.clas.abap index bf76a393..c5e2f2ab 100644 --- a/src/checks/y_check_scope_of_variable.clas.abap +++ b/src/checks/y_check_scope_of_variable.clas.abap @@ -1,9 +1,10 @@ CLASS y_check_scope_of_variable DEFINITION PUBLIC INHERITING FROM y_check_base CREATE PUBLIC . PUBLIC SECTION. - METHODS constructor . + METHODS constructor. PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS is_isolated IMPORTING strucutre_row TYPE stmnt_stru @@ -21,7 +22,6 @@ ENDCLASS. CLASS y_check_scope_of_variable IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -112,4 +112,9 @@ CLASS y_check_scope_of_variable IMPLEMENTATION. ELSE get_scope_structure( structure-back ) ). ENDMETHOD. + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_self_reference.clas.abap b/src/checks/y_check_self_reference.clas.abap index 1635ecae..7c17da4b 100644 --- a/src/checks/y_check_self_reference.clas.abap +++ b/src/checks/y_check_self_reference.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_self_reference DEFINITION PUBLIC INHERITING FROM y_check_base CREA PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. CONSTANTS method_call TYPE string VALUE 'A' ##NO_TEXT. @@ -16,7 +17,6 @@ ENDCLASS. CLASS y_check_self_reference IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -54,4 +54,8 @@ CLASS y_check_self_reference IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_statement_coverage.clas.abap b/src/checks/y_check_statement_coverage.clas.abap index 95854022..7dbf6ac8 100644 --- a/src/checks/y_check_statement_coverage.clas.abap +++ b/src/checks/y_check_statement_coverage.clas.abap @@ -5,13 +5,14 @@ CLASS y_check_statement_coverage DEFINITION PUBLIC INHERITING FROM y_check_base PROTECTED SECTION. METHODS execute_check REDEFINITION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. + ENDCLASS. CLASS y_check_statement_coverage IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -64,4 +65,10 @@ CLASS y_check_statement_coverage IMPLEMENTATION. METHOD inspect_tokens. RETURN. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_sub_assign_read_table.clas.abap b/src/checks/y_check_sub_assign_read_table.clas.abap index 3881c6a0..950612b5 100644 --- a/src/checks/y_check_sub_assign_read_table.clas.abap +++ b/src/checks/y_check_sub_assign_read_table.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_sub_assign_read_table DEFINITION PUBLIC INHERITING FROM y_check_ba PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS is_read_table IMPORTING statement TYPE sstmnt @@ -21,7 +22,6 @@ ENDCLASS. CLASS y_check_sub_assign_read_table IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -106,4 +106,10 @@ CLASS y_check_sub_assign_read_table IMPLEMENTATION. ENDIF. ENDLOOP. ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_test_seam_usage.clas.abap b/src/checks/y_check_test_seam_usage.clas.abap index ab8c205d..eccad99d 100644 --- a/src/checks/y_check_test_seam_usage.clas.abap +++ b/src/checks/y_check_test_seam_usage.clas.abap @@ -4,13 +4,13 @@ CLASS y_check_test_seam_usage DEFINITION PUBLIC INHERITING FROM y_check_base CRE PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. ENDCLASS. -CLASS Y_CHECK_TEST_SEAM_USAGE IMPLEMENTATION. - +CLASS y_check_test_seam_usage IMPLEMENTATION. METHOD constructor. super->constructor( ). @@ -34,4 +34,10 @@ CLASS Y_CHECK_TEST_SEAM_USAGE IMPLEMENTATION. statement_from = statement-from check_configuration = check_configuration ). ENDMETHOD. + + + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/checks/y_check_text_assembly.clas.abap b/src/checks/y_check_text_assembly.clas.abap index e97a0059..ae759436 100644 --- a/src/checks/y_check_text_assembly.clas.abap +++ b/src/checks/y_check_text_assembly.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_text_assembly DEFINITION PUBLIC INHERITING FROM y_check_base CREAT PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. ENDCLASS. @@ -11,7 +12,6 @@ ENDCLASS. CLASS y_check_text_assembly IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -56,4 +56,8 @@ CLASS y_check_text_assembly IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + 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 edd5bb45..2612425c 100644 --- a/src/checks/y_check_unit_test_assert.clas.abap +++ b/src/checks/y_check_unit_test_assert.clas.abap @@ -4,6 +4,7 @@ CLASS y_check_unit_test_assert DEFINITION PUBLIC INHERITING FROM y_check_base CR PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. + METHODS add_check_quickfix REDEFINITION. PRIVATE SECTION. METHODS get_parameter_reference IMPORTING statement TYPE sstmnt @@ -25,7 +26,6 @@ ENDCLASS. CLASS y_check_unit_test_assert IMPLEMENTATION. - METHOD constructor. super->constructor( ). @@ -165,4 +165,8 @@ CLASS y_check_unit_test_assert IMPLEMENTATION. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/foundation/y_check_base.clas.abap b/src/foundation/y_check_base.clas.abap index 017c1acb..1387e13d 100644 --- a/src/foundation/y_check_base.clas.abap +++ b/src/foundation/y_check_base.clas.abap @@ -106,6 +106,11 @@ CLASS y_check_base DEFINITION PUBLIC ABSTRACT METHODS is_test_code IMPORTING statement TYPE sstmnt RETURNING VALUE(result) TYPE abap_bool. + METHODS add_check_quickfix ABSTRACT IMPORTING check_configuration TYPE y_if_clean_code_manager=>check_configuration + statement_index TYPE int4. + + METHODS new_quickfix RETURNING VALUE(result) TYPE REF TO if_ci_quickfix_abap_actions. + PRIVATE SECTION. METHODS do_attributes_exist RETURNING VALUE(result) TYPE abap_bool. @@ -136,7 +141,7 @@ CLASS y_check_base DEFINITION PUBLIC ABSTRACT RETURNING VALUE(result) TYPE tadir. METHODS add_pseudo_comment_quickfix IMPORTING check_configuration TYPE y_if_clean_code_manager=>check_configuration - statement_index TYPE int4. + statement_index TYPE int4. ENDCLASS. @@ -482,6 +487,9 @@ CLASS Y_CHECK_BASE IMPLEMENTATION. add_pseudo_comment_quickfix( check_configuration = check_configuration statement_index = statement_index ). + add_check_quickfix( check_configuration = check_configuration + statement_index = statement_index ). + IF is_running_unit_test( ) = abap_true. handle_unit_test_statistics( statement_index = statement_index check_configuration = check_configuration ). @@ -698,20 +706,27 @@ CLASS Y_CHECK_BASE IMPLEMENTATION. CHECK check_configuration-ignore_pseudo_comments = abap_false. TRY. - DATA(context) = cl_ci_quickfix_abap_context=>create_from_scan_stmt( p_ci_scan = ref_scan - p_stmt_idx = statement_index ). + DATA(quickfix) = CAST if_ci_quickfix_abap_actions( quickfix_factory->create_quickfix( ) ). + + quickfix->add_pseudo_comment( p_pseudo_comment = settings-pseudo_comment+5 + p_context = cl_ci_quickfix_abap_context=>create_from_scan_stmt( p_ci_scan = ref_scan + p_stmt_idx = statement_index ) ). CATCH cx_ci_quickfix_failed. RETURN. ENDTRY. + ENDMETHOD. + + METHOD new_quickfix. DATA(quickfix) = quickfix_factory->create_quickfix( ). - quickfix->add_docu_from_msgclass( p_msg_class = 'Y_CODE_PAL_MESSAGES' - p_msg_number = '001' - p_msg_parameter1 = settings-pseudo_comment ). + quickfix->add_docu_from_msgclass( p_msg_class = 'Y_CODE_PAL_MESSAGES' + p_msg_number = '001' + p_msg_parameter1 = description ). + + quickfix->enable_automatic_execution( ). - quickfix->if_ci_quickfix_abap_actions~insert_after( p_new_code = settings-pseudo_comment - p_context = context ). + result = CAST #( quickfix ). ENDMETHOD. diff --git a/src/foundation/y_check_base.clas.locals_imp.abap b/src/foundation/y_check_base.clas.locals_imp.abap index ac9b47d8..c8862085 100644 --- a/src/foundation/y_check_base.clas.locals_imp.abap +++ b/src/foundation/y_check_base.clas.locals_imp.abap @@ -29,7 +29,7 @@ CLASS ltd_check_base DEFINITION INHERITING FROM y_check_base. PROTECTED SECTION. METHODS inspect_tokens REDEFINITION. - + METHODS add_check_quickfix REDEFINITION. ENDCLASS. @@ -61,4 +61,8 @@ CLASS ltd_check_base IMPLEMENTATION. RETURN. ENDMETHOD. + METHOD add_check_quickfix. + RETURN. + ENDMETHOD. + ENDCLASS. diff --git a/src/foundation/y_code_pal_messages.msag.xml b/src/foundation/y_code_pal_messages.msag.xml index 2e15cad7..132caa77 100644 --- a/src/foundation/y_code_pal_messages.msag.xml +++ b/src/foundation/y_code_pal_messages.msag.xml @@ -12,7 +12,7 @@ E Y_CODE_PAL_MESSAGES 001 - Add Pseudo Comment (&1) + &1 From 947a8621671612151a87cb37d125996c135fa319 Mon Sep 17 00:00:00 2001 From: Michael Schneider Date: Wed, 26 Jan 2022 09:43:00 +0100 Subject: [PATCH 08/10] Replace class by interface in check documentation (#543) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update test-seam-usage.md * Update db-access-in-ut.md * Update external-call-in-ut.md * Update unit_test_assert.md * Replace class by interface In the check "Constants Interface Check", the documentation of the exception referred to class definition instead of interface definition. * Update db-access-in-ut.md * Update external-call-in-ut.md * Update test-seam-usage.md * Update test-seam-usage.md * Update unit_test_assert.md * Update unit_test_assert.md * Update unit_test_assert.md Co-authored-by: estevao-schultz-neto-SAP <63100656+estevao-schultz-neto-SAP@users.noreply.github.com> Co-authored-by: Eugen Günther <64586309+eugen-guenther-sap@users.noreply.github.com> --- docs/checks/constants-interface.md | 2 +- docs/checks/unit_test_assert.md | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/checks/constants-interface.md b/docs/checks/constants-interface.md index 9d1b489a..8f883e52 100644 --- a/docs/checks/constants-interface.md +++ b/docs/checks/constants-interface.md @@ -38,7 +38,7 @@ Use enumeration classes instead. ### What to do in case of exception? -In exceptional cases, you can suppress this finding by using the pseudo comment `"#EC CONS_INTF` which should be placed right after the class definition header: +In exceptional cases, you can suppress this finding by using the pseudo comment `"#EC CONS_INTF` which should be placed right after the interface definition: ### Example diff --git a/docs/checks/unit_test_assert.md b/docs/checks/unit_test_assert.md index 21924461..0b11127e 100644 --- a/docs/checks/unit_test_assert.md +++ b/docs/checks/unit_test_assert.md @@ -61,5 +61,3 @@ ENDMETHOD. ### Further Readings & Knowledge * [Clean ABAP: Don't obsess about coverage](https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#dont-obsess-about-coverage) - - From 51d7d7695d473c53c787bf8d0d43ac68ae7482e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugen=20G=C3=BCnther?= <64586309+eugen-guenther-sap@users.noreply.github.com> Date: Wed, 26 Jan 2022 09:45:04 +0100 Subject: [PATCH 09/10] Update changelog.txt --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 0a536b4a..e4930e33 100644 --- a/changelog.txt +++ b/changelog.txt @@ -18,6 +18,7 @@ Legend 2021-XX-XX v.1.17.0 ------------------ +* typo in constants-interface.md * Refactoring Quick Fixes (#523) + Quickfix: Pseudo Comment (#509) + Check Button: Replicate Configuration From 1a3e206eef46f6cc5713fadf695e9799b7fb286c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugen=20G=C3=BCnther?= <64586309+eugen-guenther-sap@users.noreply.github.com> Date: Wed, 26 Jan 2022 09:46:51 +0100 Subject: [PATCH 10/10] Update changelog.txt --- changelog.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.txt b/changelog.txt index e4930e33..dc4fa4d6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -16,7 +16,7 @@ Legend + : added - : removed -2021-XX-XX v.1.17.0 +2022-XX-XX v.1.17.0 ------------------ * typo in constants-interface.md * Refactoring Quick Fixes (#523)