FUGR: Better maintenance view auto comments cleanups (#5622)

This commit is contained in:
Alexander Tsybulsky 2022-06-13 13:00:09 +03:00 committed by GitHub
parent 20e15a19c2
commit 380508d72c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 205 additions and 63 deletions

View File

@ -142,7 +142,7 @@ ENDCLASS.
CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
METHOD check_rfc_parameters.
@ -853,10 +853,12 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
APPEND ls_function TO rt_functions.
IF NOT lt_new_source IS INITIAL.
strip_generation_comments( CHANGING ct_source = lt_new_source ).
zif_abapgit_object~mo_files->add_abap(
iv_extra = <ls_func>-funcname
it_abap = lt_new_source ).
ELSE.
strip_generation_comments( CHANGING ct_source = lt_source ).
zif_abapgit_object~mo_files->add_abap(
iv_extra = <ls_func>-funcname
it_abap = lt_source ).

View File

@ -1,58 +1,66 @@
CLASS zcl_abapgit_objects_program DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super.
CLASS zcl_abapgit_objects_program DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_objects_super
CREATE PUBLIC .
PUBLIC SECTION.
TYPES: BEGIN OF ty_progdir,
name TYPE progdir-name,
state TYPE progdir-state,
sqlx TYPE progdir-sqlx,
edtx TYPE progdir-edtx,
varcl TYPE progdir-varcl,
dbapl TYPE progdir-dbapl,
dbna TYPE progdir-dbna,
clas TYPE progdir-clas,
type TYPE progdir-type,
occurs TYPE progdir-occurs,
subc TYPE progdir-subc,
appl TYPE progdir-appl,
secu TYPE progdir-secu,
cnam TYPE progdir-cnam,
cdat TYPE progdir-cdat,
unam TYPE progdir-unam,
udat TYPE progdir-udat,
vern TYPE progdir-vern,
levl TYPE progdir-levl,
rstat TYPE progdir-rstat,
rmand TYPE progdir-rmand,
rload TYPE progdir-rload,
fixpt TYPE progdir-fixpt,
sset TYPE progdir-sset,
sdate TYPE progdir-sdate,
stime TYPE progdir-stime,
idate TYPE progdir-idate,
itime TYPE progdir-itime,
ldbname TYPE progdir-ldbname,
uccheck TYPE progdir-uccheck,
END OF ty_progdir.
TYPES:
BEGIN OF ty_progdir,
name TYPE progdir-name,
state TYPE progdir-state,
sqlx TYPE progdir-sqlx,
edtx TYPE progdir-edtx,
varcl TYPE progdir-varcl,
dbapl TYPE progdir-dbapl,
dbna TYPE progdir-dbna,
clas TYPE progdir-clas,
type TYPE progdir-type,
occurs TYPE progdir-occurs,
subc TYPE progdir-subc,
appl TYPE progdir-appl,
secu TYPE progdir-secu,
cnam TYPE progdir-cnam,
cdat TYPE progdir-cdat,
unam TYPE progdir-unam,
udat TYPE progdir-udat,
vern TYPE progdir-vern,
levl TYPE progdir-levl,
rstat TYPE progdir-rstat,
rmand TYPE progdir-rmand,
rload TYPE progdir-rload,
fixpt TYPE progdir-fixpt,
sset TYPE progdir-sset,
sdate TYPE progdir-sdate,
stime TYPE progdir-stime,
idate TYPE progdir-idate,
itime TYPE progdir-itime,
ldbname TYPE progdir-ldbname,
uccheck TYPE progdir-uccheck,
END OF ty_progdir.
METHODS serialize_program
IMPORTING io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
is_item TYPE zif_abapgit_definitions=>ty_item
io_files TYPE REF TO zcl_abapgit_objects_files
iv_program TYPE programm OPTIONAL
iv_extra TYPE clike OPTIONAL
RAISING zcx_abapgit_exception.
IMPORTING
!io_xml TYPE REF TO zif_abapgit_xml_output OPTIONAL
!is_item TYPE zif_abapgit_definitions=>ty_item
!io_files TYPE REF TO zcl_abapgit_objects_files
!iv_program TYPE programm OPTIONAL
!iv_extra TYPE clike OPTIONAL
RAISING
zcx_abapgit_exception.
METHODS read_progdir
IMPORTING iv_program TYPE programm
RETURNING VALUE(rs_progdir) TYPE ty_progdir.
IMPORTING
!iv_program TYPE programm
RETURNING
VALUE(rs_progdir) TYPE ty_progdir.
METHODS deserialize_program
IMPORTING is_progdir TYPE ty_progdir
it_source TYPE abaptxt255_tab
it_tpool TYPE textpool_table
iv_package TYPE devclass
RAISING zcx_abapgit_exception.
IMPORTING
!is_progdir TYPE ty_progdir
!it_source TYPE abaptxt255_tab
!it_tpool TYPE textpool_table
!iv_package TYPE devclass
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
TYPES:
@ -85,7 +93,7 @@ CLASS zcl_abapgit_objects_program DEFINITION PUBLIC INHERITING FROM zcl_abapgit_
METHODS strip_generation_comments
CHANGING
ct_source TYPE abaptxt255_tab.
ct_source TYPE STANDARD TABLE. " tab of string or charX
METHODS serialize_dynpros
IMPORTING
!iv_program_name TYPE programm
@ -192,7 +200,7 @@ ENDCLASS.
CLASS zcl_abapgit_objects_program IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECTS_PROGRAM IMPLEMENTATION.
METHOD add_tpool.
@ -965,12 +973,20 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
METHOD strip_generation_comments.
FIELD-SYMBOLS <lv_line> LIKE LINE OF ct_source.
FIELD-SYMBOLS <lv_line> TYPE any. " Assuming CHAR (e.g. abaptxt255_tab) or string (FUGR)
IF ms_item-obj_type <> 'FUGR'.
RETURN.
ENDIF.
" Case 1: MV FM main prog and TOPs
READ TABLE ct_source INDEX 1 ASSIGNING <lv_line>.
IF sy-subrc = 0 AND <lv_line> CP '#**regenerated at *'.
DELETE ct_source INDEX 1.
RETURN.
ENDIF.
" Case 2: MV FM includes
IF lines( ct_source ) < 5. " Generation header length
RETURN.
ENDIF.

View File

@ -0,0 +1,122 @@
CLASS ltcl_test DEFINITION FINAL
FOR TESTING
RISK LEVEL HARMLESS
DURATION SHORT.
PRIVATE SECTION.
METHODS strip_generation_comments_1 FOR TESTING.
METHODS strip_generation_comments_2 FOR TESTING.
ENDCLASS.
CLASS zcl_abapgit_objects_program DEFINITION LOCAL FRIENDS ltcl_test.
CLASS ltcl_test IMPLEMENTATION.
METHOD strip_generation_comments_1.
DATA lo_cut TYPE REF TO zcl_abapgit_objects_program.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
DATA lt_src_orig TYPE abaptxt255_tab.
DATA lt_src_act TYPE abaptxt255_tab.
DATA lt_src_exp TYPE abaptxt255_tab.
APPEND '*---------------------------------------------------------------------*' TO lt_src_orig.
APPEND '* view related data declarations' TO lt_src_orig.
APPEND '* generation date: 03.02.2022 at 13:19:02' TO lt_src_orig.
APPEND '* view maintenance generator version: #001407#' TO lt_src_orig.
APPEND '*---------------------------------------------------------------------*' TO lt_src_orig.
APPEND 'some code starts here' TO lt_src_orig.
APPEND '*---------------------------------------------------------------------*' TO lt_src_exp.
APPEND '* view related data declarations' TO lt_src_exp.
APPEND '*---------------------------------------------------------------------*' TO lt_src_exp.
APPEND 'some code starts here' TO lt_src_exp.
" case 1, not FUGR, should skip
ls_item-obj_type = 'PROG'.
CREATE OBJECT lo_cut
EXPORTING
iv_language = 'E'
is_item = ls_item.
lt_src_act = lt_src_orig.
lo_cut->strip_generation_comments( CHANGING ct_source = lt_src_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_src_act
exp = lt_src_orig ).
" case 2, FUGR
ls_item-obj_type = 'FUGR'.
CREATE OBJECT lo_cut
EXPORTING
iv_language = 'E'
is_item = ls_item.
lt_src_act = lt_src_orig.
lo_cut->strip_generation_comments( CHANGING ct_source = lt_src_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_src_act
exp = lt_src_exp ).
" case 3, wrong pattern
CLEAR lt_src_orig.
APPEND '*---------------------------------------------------------------------*' TO lt_src_orig.
APPEND '* extra line' TO lt_src_orig.
APPEND '* view related data declarations' TO lt_src_orig.
APPEND '* generation date: 03.02.2022 at 13:19:02' TO lt_src_orig.
APPEND '* view maintenance generator version: #001407#' TO lt_src_orig.
APPEND '*---------------------------------------------------------------------*' TO lt_src_orig.
APPEND 'some code starts here' TO lt_src_orig.
ls_item-obj_type = 'FUGR'.
CREATE OBJECT lo_cut
EXPORTING
iv_language = 'E'
is_item = ls_item.
lt_src_act = lt_src_orig.
lo_cut->strip_generation_comments( CHANGING ct_source = lt_src_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_src_act
exp = lt_src_orig ).
ENDMETHOD.
METHOD strip_generation_comments_2.
DATA lo_cut TYPE REF TO zcl_abapgit_objects_program.
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
DATA lt_src_orig TYPE abaptxt255_tab.
DATA lt_src_act TYPE abaptxt255_tab.
DATA lt_src_exp TYPE abaptxt255_tab.
APPEND '* regenerated at 06.06.2022 10:47:40' TO lt_src_orig.
APPEND 'some code 1' TO lt_src_orig.
APPEND 'some code 2' TO lt_src_orig.
APPEND 'some code 3' TO lt_src_orig.
APPEND 'some code 4' TO lt_src_orig.
APPEND 'some code 5' TO lt_src_orig.
APPEND 'some code 1' TO lt_src_exp.
APPEND 'some code 2' TO lt_src_exp.
APPEND 'some code 3' TO lt_src_exp.
APPEND 'some code 4' TO lt_src_exp.
APPEND 'some code 5' TO lt_src_exp.
" case 1, not FUGR, should skip
ls_item-obj_type = 'FUGR'.
CREATE OBJECT lo_cut
EXPORTING
iv_language = 'E'
is_item = ls_item.
lt_src_act = lt_src_orig.
lo_cut->strip_generation_comments( CHANGING ct_source = lt_src_act ).
cl_abap_unit_assert=>assert_equals(
act = lt_src_act
exp = lt_src_exp ).
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,7 @@
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>

View File

@ -133,7 +133,7 @@ ENDCLASS.
CLASS zcx_abapgit_exception IMPLEMENTATION.
CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
METHOD constructor ##ADT_SUPPRESS_GENERATION.
@ -382,6 +382,16 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
ENDMETHOD.
METHOD remove_newlines_from_string.
rv_result = iv_string.
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>newline IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN rv_result WITH ` `.
ENDMETHOD.
METHOD replace_section_head_with_text.
CASE cs_itf-tdline.
@ -483,13 +493,4 @@ CLASS zcx_abapgit_exception IMPLEMENTATION.
rs_msg = ls_msg.
ENDMETHOD.
METHOD remove_newlines_from_string.
rv_result = iv_string.
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF ` ` && cl_abap_char_utilities=>newline IN rv_result WITH ` `.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>newline IN rv_result WITH ` `.
ENDMETHOD.
ENDCLASS.