From 5d439e369964c93dbe2103d5212f1a8a0c9450ec Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Tue, 24 Jul 2018 11:57:27 +0000 Subject: [PATCH] Code inspector for offline repositories Before this commit it wasn't possible to run code inspection for offline repos. A dump occured. With this commit it is possible to run code inspections for offline repos, too. --- .../zcl_abapgit_gui_page_code_insp.clas.abap | 19 ++++++++--- src/zcl_abapgit_repo.clas.abap | 32 +++++++++++++++++ src/zcl_abapgit_repo_online.clas.abap | 34 +------------------ 3 files changed, 47 insertions(+), 38 deletions(-) diff --git a/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap b/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap index b6750eb1b..5c2e891f9 100644 --- a/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap @@ -18,7 +18,7 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC PROTECTED SECTION. - DATA: mo_repo TYPE REF TO zcl_abapgit_repo_online. + DATA: mo_repo TYPE REF TO zcl_abapgit_repo. METHODS: render_content REDEFINITION. @@ -38,7 +38,9 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC METHODS: build_menu RETURNING - VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar, + VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar + RAISING + zcx_abapgit_exception, run_code_inspector RAISING @@ -61,7 +63,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. +CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION. METHOD build_menu. @@ -78,6 +80,10 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. lv_opt = zif_abapgit_definitions=>gc_html_opt-crossout. ENDIF. + IF mo_repo->is_offline( ) = abap_true. + RETURN. + ENDIF. + IF mo_stage IS BOUND. " Staging info already available, we can directly @@ -233,11 +239,12 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online, ls_item TYPE zif_abapgit_definitions=>ty_item. - lo_repo_online ?= mo_repo. CASE iv_action. WHEN c_actions-stage. + lo_repo_online ?= mo_repo. + IF is_stage_allowed( ) = abap_true. " we need to refresh as the source might have changed lo_repo_online->refresh( ). @@ -256,11 +263,13 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. WHEN c_actions-commit. + lo_repo_online ?= mo_repo. + IF is_stage_allowed( ) = abap_true. CREATE OBJECT ei_page TYPE zcl_abapgit_gui_page_commit EXPORTING - io_repo = mo_repo + io_repo = lo_repo_online io_stage = mo_stage. ev_state = zif_abapgit_definitions=>gc_event_state-new_page. diff --git a/src/zcl_abapgit_repo.clas.abap b/src/zcl_abapgit_repo.clas.abap index 38e4dd234..2cfbfe4f9 100644 --- a/src/zcl_abapgit_repo.clas.abap +++ b/src/zcl_abapgit_repo.clas.abap @@ -102,6 +102,11 @@ CLASS zcl_abapgit_repo DEFINITION is_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings RAISING zcx_abapgit_exception . + METHODS run_code_inspector + RETURNING + value(rt_list) TYPE scit_alvlist + RAISING + zcx_abapgit_exception . PROTECTED SECTION. @@ -111,6 +116,7 @@ CLASS zcl_abapgit_repo DEFINITION DATA mv_do_local_refresh TYPE abap_bool . DATA mv_last_serialization TYPE timestamp . DATA ms_data TYPE zif_abapgit_persistence=>ty_repo . + DATA mv_code_inspector_successful TYPE abap_bool . METHODS set IMPORTING @@ -130,6 +136,32 @@ ENDCLASS. CLASS zcl_abapgit_repo IMPLEMENTATION. + METHOD run_code_inspector. + + DATA: li_code_inspector TYPE REF TO zif_abapgit_code_inspector, + lv_check_variant TYPE string. + + lv_check_variant = get_local_settings( )-code_inspector_check_variant. + + IF lv_check_variant IS INITIAL. + zcx_abapgit_exception=>raise( |No check variant maintained in repo settings.| ). + ENDIF. + + li_code_inspector = zcl_abapgit_factory=>get_code_inspector( + iv_package = get_package( ) + iv_check_variant_name = |{ lv_check_variant }| ). + + rt_list = li_code_inspector->run( ). + + DELETE rt_list WHERE kind = 'N'. + + READ TABLE rt_list TRANSPORTING NO FIELDS + WITH KEY kind = 'E'. + + mv_code_inspector_successful = boolc( sy-subrc <> 0 ). + + ENDMETHOD. + METHOD constructor. diff --git a/src/zcl_abapgit_repo_online.clas.abap b/src/zcl_abapgit_repo_online.clas.abap index 6f1967f29..da833f775 100644 --- a/src/zcl_abapgit_repo_online.clas.abap +++ b/src/zcl_abapgit_repo_online.clas.abap @@ -73,11 +73,7 @@ CLASS zcl_abapgit_repo_online DEFINITION VALUE(rt_unnecessary_local_objects) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . - METHODS run_code_inspector - RETURNING - VALUE(rt_list) TYPE scit_alvlist - RAISING - zcx_abapgit_exception . + METHODS deserialize REDEFINITION . METHODS get_files_remote @@ -92,7 +88,6 @@ CLASS zcl_abapgit_repo_online DEFINITION DATA mv_branch TYPE zif_abapgit_definitions=>ty_sha1 . DATA mv_initialized TYPE abap_bool . DATA mt_status TYPE zif_abapgit_definitions=>ty_results_tt . - DATA mv_code_inspector_successful TYPE abap_bool . METHODS handle_stage_ignore IMPORTING @@ -398,33 +393,6 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION. ENDMETHOD. " reset_status. - METHOD run_code_inspector. - - DATA: li_code_inspector TYPE REF TO zif_abapgit_code_inspector, - lv_check_variant TYPE string. - - lv_check_variant = get_local_settings( )-code_inspector_check_variant. - - IF lv_check_variant IS INITIAL. - zcx_abapgit_exception=>raise( |No check variant maintained in repo settings.| ). - ENDIF. - - li_code_inspector = zcl_abapgit_factory=>get_code_inspector( - iv_package = get_package( ) - iv_check_variant_name = |{ lv_check_variant }| ). - - rt_list = li_code_inspector->run( ). - - DELETE rt_list WHERE kind = 'N'. - - READ TABLE rt_list TRANSPORTING NO FIELDS - WITH KEY kind = 'E'. - - mv_code_inspector_successful = boolc( sy-subrc <> 0 ). - - ENDMETHOD. - - METHOD set_branch_name. IF ms_data-local_settings-write_protected = abap_true.