Refactor: Decouple code inspection from factory (#7180)
Some checks are pending
main-build / build-merged (push) Waiting to run
main-build / auto-tag (push) Waiting to run
main-build / auto-tag-artifact (push) Blocked by required conditions
main-build / coverage (push) Waiting to run

Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
Marc Bernard 2025-03-31 10:43:06 +02:00 committed by GitHub
parent bc104e396e
commit a0e7a47f7a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 70 additions and 76 deletions

View File

@ -13,6 +13,19 @@ CLASS zcl_abapgit_code_inspector DEFINITION
RAISING
zcx_abapgit_exception .
CLASS-METHODS get_code_inspector
IMPORTING
!iv_package TYPE devclass
RETURNING
VALUE(ri_code_inspector) TYPE REF TO zif_abapgit_code_inspector
RAISING
zcx_abapgit_exception.
CLASS-METHODS set_code_inspector
IMPORTING
!iv_package TYPE devclass
!ii_code_inspector TYPE REF TO zif_abapgit_code_inspector.
PROTECTED SECTION.
DATA mv_package TYPE devclass .
@ -35,6 +48,15 @@ CLASS zcl_abapgit_code_inspector DEFINITION
VALUE(rv_skip) TYPE abap_bool.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_code_inspector_pack,
package TYPE devclass,
instance TYPE REF TO zif_abapgit_code_inspector,
END OF ty_code_inspector_pack,
ty_code_inspector_packs TYPE HASHED TABLE OF ty_code_inspector_pack WITH UNIQUE KEY package.
CLASS-DATA gt_code_inspector TYPE ty_code_inspector_packs.
DATA mv_success TYPE abap_bool .
DATA mv_summary TYPE string.
@ -266,6 +288,28 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
ENDMETHOD.
METHOD get_code_inspector.
DATA ls_code_inspector LIKE LINE OF gt_code_inspector.
FIELD-SYMBOLS <ls_code_inspector> TYPE ty_code_inspector_pack.
READ TABLE gt_code_inspector ASSIGNING <ls_code_inspector> WITH TABLE KEY package = iv_package.
IF sy-subrc <> 0.
ls_code_inspector-package = iv_package.
CREATE OBJECT ls_code_inspector-instance TYPE zcl_abapgit_code_inspector
EXPORTING
iv_package = iv_package.
INSERT ls_code_inspector INTO TABLE gt_code_inspector ASSIGNING <ls_code_inspector>.
ENDIF.
ri_code_inspector = <ls_code_inspector>-instance.
ENDMETHOD.
METHOD run_inspection.
io_inspection->run(
@ -290,6 +334,24 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
ENDMETHOD.
METHOD set_code_inspector.
DATA ls_code_inspector LIKE LINE OF gt_code_inspector.
FIELD-SYMBOLS <ls_code_inspector> LIKE LINE OF gt_code_inspector.
READ TABLE gt_code_inspector ASSIGNING <ls_code_inspector> WITH TABLE KEY package = iv_package.
IF sy-subrc <> 0.
ls_code_inspector-package = iv_package.
INSERT ls_code_inspector INTO TABLE gt_code_inspector ASSIGNING <ls_code_inspector>.
ENDIF.
<ls_code_inspector>-instance = ii_code_inspector.
ENDMETHOD.
METHOD skip_object.
DATA ls_program_type TYPE subc.

View File

@ -273,7 +273,7 @@ CLASS zcl_abapgit_repo_online IMPLEMENTATION.
ENDIF.
IF ms_data-local_settings-block_commit = abap_true
AND zcl_abapgit_factory=>get_code_inspector( get_package( )
AND zcl_abapgit_code_inspector=>get_code_inspector( get_package( )
)->is_successful( ) = abap_false.
zcx_abapgit_exception=>raise( |A successful code inspection is required| ).
ENDIF.

View File

@ -70,7 +70,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION.
METHOD ask_user_for_check_variant.
@ -151,7 +151,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
DATA li_code_inspector TYPE REF TO zif_abapgit_code_inspector.
li_code_inspector = zcl_abapgit_factory=>get_code_inspector( mo_repo->get_package( ) ).
li_code_inspector = zcl_abapgit_code_inspector=>get_code_inspector( mo_repo->get_package( ) ).
mt_result = li_code_inspector->run(
iv_variant = |{ mv_check_variant }|

View File

@ -41,7 +41,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE_SYNTAX IMPLEMENTATION.
CLASS zcl_abapgit_gui_page_syntax IMPLEMENTATION.
METHOD constructor.
@ -68,7 +68,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SYNTAX IMPLEMENTATION.
DATA: li_syntax_check TYPE REF TO zif_abapgit_code_inspector.
li_syntax_check = zcl_abapgit_factory=>get_code_inspector( mo_repo->get_package( ) ).
li_syntax_check = zcl_abapgit_code_inspector=>get_code_inspector( mo_repo->get_package( ) ).
TRY.
mt_result = li_syntax_check->run( c_variant ).

View File

@ -104,7 +104,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_LOCL IMPLEMENTATION.
CLASS zcl_abapgit_gui_page_sett_locl IMPLEMENTATION.
METHOD choose_check_variant.
@ -471,7 +471,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_LOCL IMPLEMENTATION.
lv_check_variant = to_upper( io_form_data->get( c_id-code_inspector_check_variant ) ).
IF lv_check_variant IS NOT INITIAL.
TRY.
zcl_abapgit_factory=>get_code_inspector( mo_repo->get_package( )
zcl_abapgit_code_inspector=>get_code_inspector( mo_repo->get_package( )
)->validate_check_variant( lv_check_variant ).
CATCH zcx_abapgit_exception INTO lx_error.
ro_validation_log->set(

View File

@ -34,7 +34,7 @@ CLASS zcl_abapgit_popup_code_insp IMPLEMENTATION.
METHOD fetch_list.
rt_list = zcl_abapgit_factory=>get_code_inspector( '$TMP' )->list_global_variants( ).
rt_list = zcl_abapgit_code_inspector=>get_code_inspector( '$TMP' )->list_global_variants( ).
ENDMETHOD.

View File

@ -13,13 +13,6 @@ CLASS zcl_abapgit_factory DEFINITION
!iv_package TYPE devclass
RETURNING
VALUE(ri_sap_package) TYPE REF TO zif_abapgit_sap_package .
CLASS-METHODS get_code_inspector
IMPORTING
!iv_package TYPE devclass
RETURNING
VALUE(ri_code_inspector) TYPE REF TO zif_abapgit_code_inspector
RAISING
zcx_abapgit_exception .
CLASS-METHODS get_cts_api
RETURNING
VALUE(ri_cts_api) TYPE REF TO zif_abapgit_cts_api .
@ -60,18 +53,9 @@ CLASS zcl_abapgit_factory DEFINITION
TYPES:
ty_sap_packages TYPE HASHED TABLE OF ty_sap_package
WITH UNIQUE KEY package .
TYPES:
BEGIN OF ty_code_inspector_pack,
package TYPE devclass,
instance TYPE REF TO zif_abapgit_code_inspector,
END OF ty_code_inspector_pack .
TYPES:
ty_code_inspector_packs TYPE HASHED TABLE OF ty_code_inspector_pack
WITH UNIQUE KEY package .
CLASS-DATA gi_tadir TYPE REF TO zif_abapgit_tadir .
CLASS-DATA gt_sap_package TYPE ty_sap_packages .
CLASS-DATA gt_code_inspector TYPE ty_code_inspector_packs .
CLASS-DATA gi_cts_api TYPE REF TO zif_abapgit_cts_api .
CLASS-DATA gi_environment TYPE REF TO zif_abapgit_environment .
CLASS-DATA gi_longtext TYPE REF TO zif_abapgit_longtexts .
@ -88,31 +72,6 @@ ENDCLASS.
CLASS zcl_abapgit_factory IMPLEMENTATION.
METHOD get_code_inspector.
DATA: ls_code_inspector LIKE LINE OF gt_code_inspector.
FIELD-SYMBOLS: <ls_code_inspector> TYPE ty_code_inspector_pack.
READ TABLE gt_code_inspector ASSIGNING <ls_code_inspector>
WITH TABLE KEY package = iv_package.
IF sy-subrc <> 0.
ls_code_inspector-package = iv_package.
CREATE OBJECT ls_code_inspector-instance TYPE zcl_abapgit_code_inspector
EXPORTING
iv_package = iv_package.
INSERT ls_code_inspector
INTO TABLE gt_code_inspector
ASSIGNING <ls_code_inspector>.
ENDIF.
ri_code_inspector = <ls_code_inspector>-instance.
ENDMETHOD.
METHOD get_cts_api.
IF gi_cts_api IS NOT BOUND.
CREATE OBJECT gi_cts_api TYPE zcl_abapgit_cts_api.

View File

@ -12,10 +12,6 @@ CLASS zcl_abapgit_injector DEFINITION
IMPORTING
!iv_package TYPE devclass
!ii_sap_package TYPE REF TO zif_abapgit_sap_package .
CLASS-METHODS set_code_inspector
IMPORTING
!iv_package TYPE devclass
!ii_code_inspector TYPE REF TO zif_abapgit_code_inspector .
CLASS-METHODS set_cts_api
IMPORTING
!ii_cts_api TYPE REF TO zif_abapgit_cts_api .
@ -52,29 +48,6 @@ ENDCLASS.
CLASS zcl_abapgit_injector IMPLEMENTATION.
METHOD set_code_inspector.
DATA: ls_code_inspector LIKE LINE OF zcl_abapgit_factory=>gt_code_inspector.
FIELD-SYMBOLS: <ls_code_inspector> LIKE LINE OF zcl_abapgit_factory=>gt_code_inspector.
READ TABLE zcl_abapgit_factory=>gt_code_inspector
ASSIGNING <ls_code_inspector>
WITH TABLE KEY package = iv_package.
IF sy-subrc <> 0.
ls_code_inspector-package = iv_package.
INSERT ls_code_inspector
INTO TABLE zcl_abapgit_factory=>gt_code_inspector
ASSIGNING <ls_code_inspector>.
ENDIF.
<ls_code_inspector>-instance = ii_code_inspector.
ENDMETHOD.
METHOD set_cts_api.
zcl_abapgit_factory=>gi_cts_api = ii_cts_api.
ENDMETHOD.