@@ -3,6 +3,7 @@ CLASS y_check_db_access_in_ut DEFINITION PUBLIC INHERITING FROM y_check_base CRE
3
3
METHODS constructor.
4
4
5
5
PROTECTED SECTION .
6
+ METHODS inspect_statements REDEFINITION .
6
7
METHODS inspect_tokens REDEFINITION .
7
8
8
9
PRIVATE SECTION .
@@ -12,25 +13,16 @@ CLASS y_check_db_access_in_ut DEFINITION PUBLIC INHERITING FROM y_check_base CRE
12
13
CONSTANTS risk_level_not_set TYPE string VALUE 'NOT_SET' .
13
14
14
15
DATA tokens_not_allowed TYPE y_char255_tab.
16
+ DATA has_framework TYPE abap_bool .
15
17
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.
18
19
19
20
METHODS is_persistent_object IMPORTING obj_name TYPE string
20
21
RETURNING VALUE (result ) TYPE abap_bool .
21
22
22
- METHODS consolidade_tokens IMPORTING statement TYPE sstmnt
23
+ METHODS consolidade_tokens IMPORTING statement TYPE sstmnt
23
24
RETURNING VALUE (result ) TYPE string .
24
25
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
-
34
26
METHODS has_ddic_itab_same_syntax IMPORTING token TYPE char255
35
27
RETURNING VALUE (result ) TYPE abap_bool .
36
28
@@ -62,11 +54,18 @@ CLASS y_check_db_access_in_ut IMPLEMENTATION.
62
54
ENDMETHOD .
63
55
64
56
65
- METHOD inspect_tokens .
66
- CHECK has_osql_or_cds_framework ( structure ) = abap_false .
57
+ METHOD inspect_statements .
58
+ inspect_class_definition ( structure ).
67
59
68
- determine_tokens_not_allowed( structure ).
60
+ IF has_framework = abap_true .
61
+ RETURN .
62
+ ENDIF .
69
63
64
+ super ->inspect_statements( structure ).
65
+ ENDMETHOD .
66
+
67
+
68
+ METHOD inspect_tokens .
70
69
DATA (tokens ) = consolidade_tokens( statement ).
71
70
72
71
LOOP AT tokens_not_allowed ASSIGNING FIELD-SYMBOL (<token_not_allowed> ).
@@ -100,68 +99,40 @@ CLASS y_check_db_access_in_ut IMPLEMENTATION.
100
99
ENDMETHOD .
101
100
102
101
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 .
134
104
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.
139
106
140
-
141
- METHOD get_test_risk_level .
142
107
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 ].
144
110
CATCH cx_sy_itab_line_not_found.
145
111
RETURN .
146
112
ENDTRY .
147
113
148
114
LOOP AT ref_scan_manager->statements ASSIGNING FIELD-SYMBOL (<statement> )
149
115
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 .
156
118
ENDIF .
157
- ENDLOOP .
158
119
159
- result = risk_level_not_set.
160
- ENDMETHOD .
120
+ DATA (tokens ) = consolidade_tokens( <statement> ).
161
121
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 ).
162
126
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 ).
165
136
166
137
tokens_not_allowed = COND #( WHEN test_risk_level = risk_level_harmless THEN VALUE #( ( 'ALTER *' ) ( 'DELETE *' ) ( 'UPDATE *' ) ( 'MODIFY *' ) ( 'INSERT INTO *' ) ( 'SELECT *' ) ( 'COMMIT*' ) ( 'ROLLBACK*' ) )
167
138
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.
170
141
ENDMETHOD .
171
142
172
143
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
+
173
153
METHOD has_ddic_itab_same_syntax .
174
154
result = xsdbool ( token CS 'MODIFY'
175
155
OR token CS 'UPDATE'
@@ -182,7 +162,7 @@ CLASS y_check_db_access_in_ut IMPLEMENTATION.
182
162
DATA (tirth_token ) = get_token_abs( statement-from + 2 ).
183
163
184
164
DATA (table ) = COND #( WHEN second_token = 'FROM' THEN tirth_token
185
- ELSE second_token ).
165
+ ELSE second_token ).
186
166
187
167
result = xsdbool ( is_persistent_object( table ) = abap_false ).
188
168
ENDMETHOD .
0 commit comments