AdHoc code inspection: ask user for check variant

This commit is contained in:
Christian Guenter 2019-01-13 10:01:20 +01:00 committed by Lars Hvam
parent de12ff23e2
commit 1913b7eaeb
4 changed files with 88 additions and 26 deletions

View File

@ -30,8 +30,10 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC
commit TYPE string VALUE 'commit' ##NO_TEXT,
rerun TYPE string VALUE 'rerun' ##NO_TEXT,
END OF c_actions.
DATA:
mo_stage TYPE REF TO zcl_abapgit_stage.
mo_stage TYPE REF TO zcl_abapgit_stage,
mv_check_variant TYPE sci_chkv.
METHODS:
build_menu
@ -50,7 +52,17 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC
is_stage_allowed
RETURNING
VALUE(rv_is_stage_allowed) TYPE abap_bool.
VALUE(rv_is_stage_allowed) TYPE abap_bool,
ask_user_for_check_variant
RETURNING
VALUE(rv_check_variant) TYPE sci_chkv
RAISING
zcx_abapgit_exception,
determine_check_variant
RAISING
zcx_abapgit_exception.
ENDCLASS.
@ -104,6 +116,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
mo_repo ?= io_repo.
mo_stage = io_stage.
ms_control-page_title = 'Code Inspector'.
determine_check_variant( ).
run_code_inspector( ).
ENDMETHOD.
@ -127,23 +140,19 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
METHOD render_content.
DATA: lv_check_variant TYPE sci_chkv.
FIELD-SYMBOLS: <ls_result> TYPE scir_alvlist.
CREATE OBJECT ro_html.
lv_check_variant = mo_repo->get_local_settings( )-code_inspector_check_variant.
IF lv_check_variant IS INITIAL.
ro_html->add( |No check variant maintained in repo settings.| ).
IF mv_check_variant IS INITIAL.
ro_html->add( |No check variant supplied.| ).
RETURN.
ENDIF.
ro_html->add( '<div class="toc"><br/>' ).
ro_html->add( |Code inspector check variant: {
mo_repo->get_local_settings( )-code_inspector_check_variant
mv_check_variant
}<br/>| ).
IF lines( mt_result ) = 0.
@ -164,7 +173,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
METHOD run_code_inspector.
mt_result = mo_repo->run_code_inspector( ).
mt_result = mo_repo->run_code_inspector( |{ mv_check_variant }| ).
ENDMETHOD.
@ -257,4 +266,49 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION.
ro_html = super->zif_abapgit_gui_page~render( ).
ENDMETHOD.
METHOD ask_user_for_check_variant.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval.
FIELD-SYMBOLS: <ls_return> LIKE LINE OF lt_return.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'SCI_DYNP'
fieldname = 'CHKV'
TABLES
return_tab = lt_return
EXCEPTIONS
field_not_found = 1
no_help_for_field = 2
inconsistent_help = 3
no_values_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
READ TABLE lt_return ASSIGNING <ls_return>
WITH KEY retfield = 'SCI_DYNP-CHKV'.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Please select a check variant.| ).
ENDIF.
rv_check_variant = <ls_return>-fieldval.
ENDMETHOD.
METHOD determine_check_variant.
mv_check_variant = mo_repo->get_local_settings( )-code_inspector_check_variant.
IF mv_check_variant IS INITIAL.
mv_check_variant = ask_user_for_check_variant( ).
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -131,7 +131,16 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
METHOD constructor.
IF iv_package IS INITIAL.
zcx_abapgit_exception=>raise( |Please supply package| ).
ENDIF.
mv_package = iv_package.
IF iv_check_variant_name IS INITIAL.
zcx_abapgit_exception=>raise( |Please supply check variant| ).
ENDIF.
mv_check_variant_name = iv_check_variant_name.
" We create the inspection and objectset with dummy names.

View File

@ -100,6 +100,8 @@ CLASS zcl_abapgit_repo DEFINITION
RAISING
zcx_abapgit_exception .
METHODS run_code_inspector
IMPORTING
iv_check_variant TYPE string
RETURNING
VALUE(rt_list) TYPE scit_alvlist
RAISING
@ -611,18 +613,11 @@ 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.
DATA: li_code_inspector TYPE REF TO zif_abapgit_code_inspector.
li_code_inspector = zcl_abapgit_factory=>get_code_inspector(
iv_package = get_package( )
iv_check_variant_name = |{ lv_check_variant }| ).
iv_check_variant_name = |{ iv_check_variant }| ).
rt_list = li_code_inspector->run( ).

View File

@ -8,8 +8,10 @@ CLASS ltcl_code_inspector DEFINITION FOR TESTING.
constructor
IMPORTING
iv_package TYPE devclass.
PRIVATE SECTION.
DATA mv_package TYPE devclass.
DATA:
mv_package TYPE devclass.
ENDCLASS.
@ -49,7 +51,8 @@ CLASS ltcl_run_code_inspection DEFINITION FINAL FOR TESTING
DATA:
mo_repo_online TYPE REF TO zcl_abapgit_repo_online,
mv_error_text TYPE string,
mt_act_list TYPE scit_alvlist.
mt_act_list TYPE scit_alvlist,
mv_check_variant TYPE string.
METHODS:
exception_when_no_check_var FOR TESTING RAISING cx_static_check,
@ -99,7 +102,7 @@ CLASS ltcl_run_code_inspection IMPLEMENTATION.
given_online_repo( iv_package = '$DUMMY' ).
given_check_variant( || ).
when_run_code_inspector( ).
then_exception_text_is( |No check variant maintained in repo settings.| ).
then_exception_text_is( |Please supply check variant| ).
ENDMETHOD.
@ -143,6 +146,7 @@ CLASS ltcl_run_code_inspection IMPLEMENTATION.
METHOD given_check_variant.
mv_check_variant = iv_check_variant.
mo_repo_online->ms_data-local_settings-code_inspector_check_variant = iv_check_variant.
ENDMETHOD.
@ -213,7 +217,7 @@ CLASS ltcl_run_code_inspection IMPLEMENTATION.
DATA: lx_error TYPE REF TO zcx_abapgit_exception.
TRY.
mt_act_list = mo_repo_online->run_code_inspector( ).
mt_act_list = mo_repo_online->run_code_inspector( |{ mv_check_variant }| ).
CATCH zcx_abapgit_exception INTO lx_error.
mv_error_text = lx_error->get_text( ).
ENDTRY.