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.
This commit is contained in:
Christian Guenter 2018-07-24 11:57:27 +00:00 committed by Lars Hvam
parent e132c17205
commit 5d439e3699
3 changed files with 47 additions and 38 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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.