Code Inspector: Fix background processing

This commit enables the code inspector for background processing.
Before this commit is applied code inspection in background resulted in lock errors.
This commit is contained in:
Christian Guenter 2018-11-03 11:25:13 +01:00 committed by Lars Hvam
parent 8b1cbd4b89
commit 06c3d69b64
2 changed files with 81 additions and 32 deletions

View File

@ -44,10 +44,21 @@ CLASS zcl_abapgit_code_inspector DEFINITION
zcx_abapgit_exception. zcx_abapgit_exception.
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS:
BEGIN OF co_run_mode,
run_with_popup TYPE sychar01 VALUE 'P',
run_after_popup TYPE sychar01 VALUE 'A',
run_via_rfc TYPE sychar01 VALUE 'R',
run_in_batch TYPE sychar01 VALUE 'B',
run_loc_parallel TYPE sychar01 VALUE 'L',
run_direct TYPE sychar01 VALUE 'L',
END OF co_run_mode.
DATA: DATA:
mo_inspection TYPE REF TO cl_ci_inspection, mo_inspection TYPE REF TO cl_ci_inspection,
mv_objectset_name TYPE sci_objs, mv_objectset_name TYPE sci_objs,
mv_inspection_name TYPE sci_insp. mv_inspection_name TYPE sci_insp,
mv_run_mode TYPE sychar01.
METHODS: METHODS:
find_all_subpackages find_all_subpackages
@ -64,7 +75,9 @@ CLASS zcl_abapgit_code_inspector DEFINITION
IMPORTING IMPORTING
io_inspection TYPE REF TO cl_ci_inspection io_inspection TYPE REF TO cl_ci_inspection
RETURNING RETURNING
VALUE(rt_list) TYPE scit_alvlist, VALUE(rt_list) TYPE scit_alvlist
RAISING
zcx_abapgit_exception,
create_inspection create_inspection
IMPORTING IMPORTING
@ -84,6 +97,8 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
METHOD cleanup. METHOD cleanup.
IF mo_inspection IS BOUND.
mo_inspection->delete( mo_inspection->delete(
EXCEPTIONS EXCEPTIONS
locked = 1 locked = 1
@ -91,10 +106,13 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
not_authorized = 3 not_authorized = 3
exceptn_appl_exists = 4 exceptn_appl_exists = 4
OTHERS = 5 ). OTHERS = 5 ).
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Couldn't delete inspection. Subrc = { sy-subrc }| ). zcx_abapgit_exception=>raise( |Couldn't delete inspection. Subrc = { sy-subrc }| ).
ENDIF. ENDIF.
ENDIF.
io_set->delete( io_set->delete(
EXCEPTIONS EXCEPTIONS
exists_in_insp = 1 exists_in_insp = 1
@ -103,6 +121,7 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
not_authorized = 4 not_authorized = 4
exists_in_objs = 5 exists_in_objs = 5
OTHERS = 6 ). OTHERS = 6 ).
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Couldn't delete objectset. Subrc = { sy-subrc }| ). zcx_abapgit_exception=>raise( |Couldn't delete objectset. Subrc = { sy-subrc }| ).
ENDIF. ENDIF.
@ -120,6 +139,13 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
" Both are deleted afterwards. " Both are deleted afterwards.
mv_inspection_name = mv_objectset_name = |{ sy-uname }_{ sy-datum }_{ sy-uzeit }|. mv_inspection_name = mv_objectset_name = |{ sy-uname }_{ sy-datum }_{ sy-uzeit }|.
" We have to disable parallelization in batch because of lock errors.
IF sy-batch = abap_true.
mv_run_mode = co_run_mode-run_via_rfc.
ELSE.
mv_run_mode = co_run_mode-run_loc_parallel.
ENDIF.
ENDMETHOD. ENDMETHOD.
@ -136,7 +162,10 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
error_in_enqueue = 2 error_in_enqueue = 2
not_authorized = 3 not_authorized = 3
OTHERS = 4 ). OTHERS = 4 ).
ASSERT sy-subrc = 0.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Failed to create inspection. Subrc = { sy-subrc }| ).
ENDIF.
ro_inspection->set( ro_inspection->set(
p_chkv = io_variant p_chkv = io_variant
@ -236,11 +265,14 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
io_inspection->run( io_inspection->run(
EXPORTING EXPORTING
p_howtorun = 'L' p_howtorun = mv_run_mode
EXCEPTIONS EXCEPTIONS
invalid_check_version = 1 invalid_check_version = 1
OTHERS = 2 ). OTHERS = 2 ).
ASSERT sy-subrc = 0.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Code inspector run failed. Subrc = { sy-subrc }| ).
ENDIF.
io_inspection->plain_list( io_inspection->plain_list(
IMPORTING IMPORTING
@ -280,6 +312,12 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
TRY. TRY.
lo_set = create_objectset( ). lo_set = create_objectset( ).
IF lines( lo_set->iobjlst-objects ) = 0.
" no objects, nothing to check
RETURN.
ENDIF.
lo_variant = create_variant( ). lo_variant = create_variant( ).
mo_inspection = create_inspection( mo_inspection = create_inspection(
@ -294,13 +332,10 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
" ensure cleanup " ensure cleanup
cleanup( lo_set ). cleanup( lo_set ).
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
RAISE EXCEPTION TYPE zcx_abapgit_exception ix_previous = lx_error ).
EXPORTING
previous = lx_error.
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -61,7 +61,10 @@ CLASS zcl_abapgit_syntax_check IMPLEMENTATION.
error_in_enqueue = 3 error_in_enqueue = 3
not_authorized = 4 not_authorized = 4
OTHERS = 5 ). OTHERS = 5 ).
ASSERT sy-subrc = 0.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Couldn't create variant. Subrc = { sy-subrc }| ).
ENDIF.
ls_variant-testname = 'CL_CI_TEST_SYNTAX_CHECK'. ls_variant-testname = 'CL_CI_TEST_SYNTAX_CHECK'.
INSERT ls_variant INTO TABLE lt_variant. INSERT ls_variant INTO TABLE lt_variant.
@ -72,7 +75,10 @@ CLASS zcl_abapgit_syntax_check IMPLEMENTATION.
EXCEPTIONS EXCEPTIONS
not_enqueued = 1 not_enqueued = 1
OTHERS = 2 ). OTHERS = 2 ).
ASSERT sy-subrc = 0.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Couldn't set variant. Subrc = { sy-subrc }| ).
ENDIF.
mo_variant->save( mo_variant->save(
EXPORTING EXPORTING
@ -82,7 +88,10 @@ CLASS zcl_abapgit_syntax_check IMPLEMENTATION.
transport_error = 2 transport_error = 2
not_authorized = 3 not_authorized = 3
OTHERS = 4 ). OTHERS = 4 ).
ASSERT sy-subrc = 0.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Couldn't save variant. Subrc = { sy-subrc }| ).
ENDIF.
ro_variant = mo_variant. ro_variant = mo_variant.
@ -92,6 +101,8 @@ CLASS zcl_abapgit_syntax_check IMPLEMENTATION.
super->cleanup( io_set ). super->cleanup( io_set ).
IF mo_variant IS BOUND.
mo_variant->delete( mo_variant->delete(
EXCEPTIONS EXCEPTIONS
exists_in_insp = 1 exists_in_insp = 1
@ -100,10 +111,13 @@ CLASS zcl_abapgit_syntax_check IMPLEMENTATION.
not_authorized = 4 not_authorized = 4
transport_error = 5 transport_error = 5
OTHERS = 6 ). OTHERS = 6 ).
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Couldn't delete variant. Subrc = { sy-subrc }| ). zcx_abapgit_exception=>raise( |Couldn't delete variant. Subrc = { sy-subrc }| ).
ENDIF. ENDIF.
ENDIF.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.