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.
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:
mo_inspection TYPE REF TO cl_ci_inspection,
mv_objectset_name TYPE sci_objs,
mv_inspection_name TYPE sci_insp.
mv_inspection_name TYPE sci_insp,
mv_run_mode TYPE sychar01.
METHODS:
find_all_subpackages
@ -64,7 +75,9 @@ CLASS zcl_abapgit_code_inspector DEFINITION
IMPORTING
io_inspection TYPE REF TO cl_ci_inspection
RETURNING
VALUE(rt_list) TYPE scit_alvlist,
VALUE(rt_list) TYPE scit_alvlist
RAISING
zcx_abapgit_exception,
create_inspection
IMPORTING
@ -84,6 +97,8 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
METHOD cleanup.
IF mo_inspection IS BOUND.
mo_inspection->delete(
EXCEPTIONS
locked = 1
@ -91,10 +106,13 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
not_authorized = 3
exceptn_appl_exists = 4
OTHERS = 5 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Couldn't delete inspection. Subrc = { sy-subrc }| ).
ENDIF.
ENDIF.
io_set->delete(
EXCEPTIONS
exists_in_insp = 1
@ -103,6 +121,7 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
not_authorized = 4
exists_in_objs = 5
OTHERS = 6 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Couldn't delete objectset. Subrc = { sy-subrc }| ).
ENDIF.
@ -120,6 +139,13 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
" Both are deleted afterwards.
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.
@ -136,7 +162,10 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
error_in_enqueue = 2
not_authorized = 3
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(
p_chkv = io_variant
@ -236,11 +265,14 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
io_inspection->run(
EXPORTING
p_howtorun = 'L'
p_howtorun = mv_run_mode
EXCEPTIONS
invalid_check_version = 1
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(
IMPORTING
@ -280,6 +312,12 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
TRY.
lo_set = create_objectset( ).
IF lines( lo_set->iobjlst-objects ) = 0.
" no objects, nothing to check
RETURN.
ENDIF.
lo_variant = create_variant( ).
mo_inspection = create_inspection(
@ -294,13 +332,10 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION.
" ensure cleanup
cleanup( lo_set ).
RAISE EXCEPTION TYPE zcx_abapgit_exception
EXPORTING
previous = lx_error.
zcx_abapgit_exception=>raise( iv_text = lx_error->get_text( )
ix_previous = lx_error ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

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