Skip to content

Commit 010318c

Browse files
committed
fixing #296 (timeout)
1 parent c1ebf74 commit 010318c

File tree

2 files changed

+48
-67
lines changed

2 files changed

+48
-67
lines changed

src/checks/y_check_db_access_in_ut.clas.abap

Lines changed: 45 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ CLASS y_check_db_access_in_ut DEFINITION PUBLIC INHERITING FROM y_check_base CRE
33
METHODS constructor.
44

55
PROTECTED SECTION.
6+
METHODS inspect_statements REDEFINITION.
67
METHODS inspect_tokens REDEFINITION.
78

89
PRIVATE SECTION.
@@ -12,25 +13,16 @@ CLASS y_check_db_access_in_ut DEFINITION PUBLIC INHERITING FROM y_check_base CRE
1213
CONSTANTS risk_level_not_set TYPE string VALUE 'NOT_SET'.
1314

1415
DATA tokens_not_allowed TYPE y_char255_tab.
16+
DATA has_framework TYPE abap_bool.
1517

16-
METHODS has_osql_or_cds_framework IMPORTING method TYPE sstruc
17-
RETURNING VALUE(result) TYPE abap_bool.
18+
METHODS inspect_class_definition IMPORTING method TYPE sstruc.
1819

1920
METHODS is_persistent_object IMPORTING obj_name TYPE string
2021
RETURNING VALUE(result) TYPE abap_bool.
2122

22-
METHODS consolidade_tokens IMPORTING statement TYPE sstmnt
23+
METHODS consolidade_tokens IMPORTING statement TYPE sstmnt
2324
RETURNING VALUE(result) TYPE string.
2425

25-
METHODS get_class_definition IMPORTING method TYPE sstruc
26-
RETURNING VALUE(result) TYPE sstruc
27-
RAISING cx_sy_itab_line_not_found.
28-
29-
METHODS get_test_risk_level IMPORTING method TYPE sstruc
30-
RETURNING VALUE(result) TYPE string.
31-
32-
METHODS determine_tokens_not_allowed IMPORTING method TYPE sstruc.
33-
3426
METHODS has_ddic_itab_same_syntax IMPORTING token TYPE char255
3527
RETURNING VALUE(result) TYPE abap_bool.
3628

@@ -62,11 +54,18 @@ CLASS y_check_db_access_in_ut IMPLEMENTATION.
6254
ENDMETHOD.
6355

6456

65-
METHOD inspect_tokens.
66-
CHECK has_osql_or_cds_framework( structure ) = abap_false.
57+
METHOD inspect_statements.
58+
inspect_class_definition( structure ).
6759

68-
determine_tokens_not_allowed( structure ).
60+
IF has_framework = abap_true.
61+
RETURN.
62+
ENDIF.
6963

64+
super->inspect_statements( structure ).
65+
ENDMETHOD.
66+
67+
68+
METHOD inspect_tokens.
7069
DATA(tokens) = consolidade_tokens( statement ).
7170

7271
LOOP AT tokens_not_allowed ASSIGNING FIELD-SYMBOL(<token_not_allowed>).
@@ -100,68 +99,40 @@ CLASS y_check_db_access_in_ut IMPLEMENTATION.
10099
ENDMETHOD.
101100

102101

103-
METHOD has_osql_or_cds_framework.
104-
TRY.
105-
DATA(class_definition) = get_class_definition( method ).
106-
CATCH cx_sy_itab_line_not_found.
107-
RETURN.
108-
ENDTRY.
109-
110-
LOOP AT ref_scan_manager->statements ASSIGNING FIELD-SYMBOL(<statement>)
111-
FROM class_definition-stmnt_from TO class_definition-stmnt_to.
112-
LOOP AT ref_scan_manager->tokens ASSIGNING FIELD-SYMBOL(<token>)
113-
FROM <statement>-from TO <statement>-to
114-
WHERE str = 'IF_OSQL_TEST_ENVIRONMENT'
115-
OR str = 'CL_OSQL_TEST_ENVIRONMENT'
116-
OR str = 'IF_CDS_TEST_ENVIRONMENT'
117-
OR str = 'CL_CDS_TEST_ENVIRONMENT'.
118-
result = abap_true.
119-
RETURN.
120-
ENDLOOP.
121-
ENDLOOP.
122-
ENDMETHOD.
123-
124-
125-
METHOD consolidade_tokens.
126-
LOOP AT ref_scan_manager->tokens INTO DATA(token)
127-
FROM statement-from TO statement-to.
128-
token-str = condense( token-str ).
129-
result = COND #( WHEN result IS INITIAL THEN token-str
130-
ELSE |{ result } { token-str }| ).
131-
ENDLOOP.
132-
ENDMETHOD.
133-
102+
METHOD inspect_class_definition.
103+
DATA test_risk_level TYPE string.
134104

135-
METHOD get_class_definition.
136-
DATA(class_implementation) = ref_scan_manager->structures[ method-back ].
137-
result = ref_scan_manager->structures[ class_implementation-back ].
138-
ENDMETHOD.
105+
CLEAR has_framework.
139106

140-
141-
METHOD get_test_risk_level.
142107
TRY.
143-
DATA(class_definition) = get_class_definition( method ).
108+
DATA(class_implementation) = ref_scan_manager->structures[ method-back ].
109+
DATA(class_definition) = ref_scan_manager->structures[ class_implementation-back ].
144110
CATCH cx_sy_itab_line_not_found.
145111
RETURN.
146112
ENDTRY.
147113

148114
LOOP AT ref_scan_manager->statements ASSIGNING FIELD-SYMBOL(<statement>)
149115
FROM class_definition-stmnt_from TO class_definition-stmnt_to.
150-
DATA(tokens) = consolidade_tokens( <statement> ).
151-
result = COND #( WHEN tokens CS 'RISK LEVEL HARMLESS' THEN risk_level_harmless
152-
WHEN tokens CS 'RISK LEVEL DANGEROUS' THEN risk_level_dangerous
153-
WHEN tokens CS 'RISK LEVEL CRITICAL' THEN risk_level_critical ).
154-
IF result IS NOT INITIAL.
155-
RETURN.
116+
IF is_in_scope( <statement> ) = abap_false.
117+
CONTINUE.
156118
ENDIF.
157-
ENDLOOP.
158119

159-
result = risk_level_not_set.
160-
ENDMETHOD.
120+
DATA(tokens) = consolidade_tokens( <statement> ).
161121

122+
test_risk_level = COND #( WHEN tokens CS 'RISK LEVEL HARMLESS' THEN risk_level_harmless
123+
WHEN tokens CS 'RISK LEVEL DANGEROUS' THEN risk_level_dangerous
124+
WHEN tokens CS 'RISK LEVEL CRITICAL' THEN risk_level_critical
125+
ELSE test_risk_level ).
162126

163-
METHOD determine_tokens_not_allowed.
164-
DATA(test_risk_level) = get_test_risk_level( method ).
127+
has_framework = COND #( WHEN tokens CS 'IF_OSQL_TEST_ENVIRONMENT' THEN abap_true
128+
WHEN tokens CS 'CL_OSQL_TEST_ENVIRONMENT' THEN abap_true
129+
WHEN tokens CS 'IF_CDS_TEST_ENVIRONMENT' THEN abap_true
130+
WHEN tokens CS 'CL_CDS_TEST_ENVIRONMENT' THEN abap_true
131+
ELSE has_framework ).
132+
ENDLOOP.
133+
134+
test_risk_level = COND #( WHEN test_risk_level IS INITIAL THEN risk_level_not_set
135+
ELSE test_risk_level ).
165136

166137
tokens_not_allowed = COND #( WHEN test_risk_level = risk_level_harmless THEN VALUE #( ( 'ALTER *' ) ( 'DELETE *' ) ( 'UPDATE *' ) ( 'MODIFY *' ) ( 'INSERT INTO *' ) ( 'SELECT *' ) ( 'COMMIT*' ) ( 'ROLLBACK*' ) )
167138
WHEN test_risk_level = risk_level_not_set THEN VALUE #( ( 'ALTER *' ) ( 'DELETE *' ) ( 'UPDATE *' ) ( 'MODIFY *' ) ( 'INSERT INTO *' ) ( 'SELECT *' ) ( 'COMMIT*' ) ( 'ROLLBACK*' ) )
@@ -170,6 +141,15 @@ CLASS y_check_db_access_in_ut IMPLEMENTATION.
170141
ENDMETHOD.
171142

172143

144+
METHOD consolidade_tokens.
145+
LOOP AT ref_scan_manager->tokens ASSIGNING FIELD-SYMBOL(<token>)
146+
FROM statement-from TO statement-to.
147+
result = COND #( WHEN result IS INITIAL THEN condense( <token>-str )
148+
ELSE |{ result } { condense( <token>-str ) }| ).
149+
ENDLOOP.
150+
ENDMETHOD.
151+
152+
173153
METHOD has_ddic_itab_same_syntax.
174154
result = xsdbool( token CS 'MODIFY'
175155
OR token CS 'UPDATE'
@@ -182,7 +162,7 @@ CLASS y_check_db_access_in_ut IMPLEMENTATION.
182162
DATA(tirth_token) = get_token_abs( statement-from + 2 ).
183163

184164
DATA(table) = COND #( WHEN second_token = 'FROM' THEN tirth_token
185-
ELSE second_token ).
165+
ELSE second_token ).
186166

187167
result = xsdbool( is_persistent_object( table ) = abap_false ).
188168
ENDMETHOD.

src/foundation/y_check_base.clas.abap

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ CLASS y_check_base DEFINITION PUBLIC ABSTRACT
120120
METHODS keyword REDEFINITION.
121121
METHODS set_check_message IMPORTING message TYPE itex132.
122122
METHODS get_class_description RETURNING VALUE(result) TYPE string.
123+
METHODS is_in_scope IMPORTING statement TYPE sstmnt
124+
RETURNING VALUE(result) TYPE abap_bool.
123125

124126
PRIVATE SECTION.
125127
METHODS do_attributes_exist RETURNING VALUE(result) TYPE abap_bool.
@@ -151,8 +153,7 @@ CLASS y_check_base DEFINITION PUBLIC ABSTRACT
151153
METHODS is_structure_type_relevant IMPORTING structure TYPE sstruc
152154
RETURNING VALUE(result) TYPE abap_bool.
153155

154-
METHODS is_in_scope IMPORTING statement TYPE sstmnt
155-
RETURNING VALUE(result) TYPE abap_bool.
156+
156157

157158
METHODS get_application_component IMPORTING level TYPE slevel
158159
RETURNING VALUE(result) TYPE df14l-ps_posid.

0 commit comments

Comments
 (0)