@@ -80,7 +80,8 @@ def read_scanner_results(scanner_results_dir):
80
80
# assert ex_entry['target_safeness'] == target_safeness
81
81
continue
82
82
fn_to_info [fn ][crate ] = {
83
- 'target_safeness' : target_safeness
83
+ 'target_safeness' : target_safeness ,
84
+ 'public_target' : row ['is_public' ] == 'true'
84
85
}
85
86
86
87
return fn_to_info
@@ -96,9 +97,9 @@ def read_kani_list(kani_list_file, scanner_data):
96
97
# non-contract harness is targeting for verification, so we apply a bunch
97
98
# of patterns that we know are being used. We expect that, over time,
98
99
# manual harnesses will largely disappear.
99
- harness_pattern1 = re .compile (r'^(.+):: verify::(check|verify)_(.+)$' )
100
+ harness_pattern1 = re .compile (r'^(.+::) verify::(check|verify)_(.+)$' )
100
101
harness_pattern2 = re .compile (
101
- r'^(.+):: verify::(non_null|nonzero)_check_(.+)$' )
102
+ r'^(.+::) verify::(non_null|nonzero)_check_(.+)$' )
102
103
harness_pattern3 = re .compile (
103
104
r'^time::duration_verify::duration_as_nanos(_panics)?$' )
104
105
harness_pattern4 = re .compile (
@@ -131,25 +132,30 @@ def read_kani_list(kani_list_file, scanner_data):
131
132
'file_name' : file_name ,
132
133
'crate' : None ,
133
134
'function' : fn ,
134
- 'target_safeness' : None
135
+ 'target_safeness' : None ,
136
+ 'public_target' : None
135
137
}
136
138
elif len (fn_info .keys ()) > 1 :
137
139
crates = list (fn_info .keys ())
138
- target_safenesses = [ts ['target_safenesses' ]
139
- for _ , ts in fn_info .items ()]
140
+ target_safenesses = [e ['target_safenesses' ]
141
+ for _ , e in fn_info .items ()]
142
+ public_targets = [e ['public_target' ]
143
+ for _ , e in fn_info .items ()]
140
144
standard_harnesses [h ] = {
141
145
'file_name' : file_name ,
142
146
'crate' : crates ,
143
147
'function' : fn ,
144
- 'target_safeness' : target_safenesses
148
+ 'target_safeness' : target_safenesses ,
149
+ 'public_target' : public_targets
145
150
}
146
151
else :
147
152
crate = list (fn_info .keys ())[0 ]
148
153
standard_harnesses [h ] = {
149
154
'file_name' : file_name ,
150
155
'crate' : crate ,
151
156
'function' : fn ,
152
- 'target_safeness' : fn_info [crate ]['target_safeness' ]
157
+ 'target_safeness' : fn_info [crate ]['target_safeness' ],
158
+ 'public_target' : fn_info [crate ]['public_target' ]
153
159
}
154
160
155
161
contract_harnesses = {}
@@ -159,7 +165,8 @@ def read_kani_list(kani_list_file, scanner_data):
159
165
contract_harnesses [h ] = {
160
166
'file_name' : file_name ,
161
167
'crate' : None ,
162
- 'target_safeness' : None
168
+ 'target_safeness' : None ,
169
+ 'public_target' : None
163
170
}
164
171
for o in harnesses ['contracts' ]:
165
172
for h in o ['harnesses' ]:
@@ -178,15 +185,19 @@ def read_kani_list(kani_list_file, scanner_data):
178
185
if fn_info is not None :
179
186
if len (fn_info .keys ()) > 1 :
180
187
crates = list (fn_info .keys ())
181
- target_safenesses = [ts ['target_safenesses' ]
182
- for _ , ts in fn_info .items ()]
188
+ target_safenesses = [e ['target_safenesses' ]
189
+ for _ , e in fn_info .items ()]
190
+ public_targets = [e ['public_target' ]
191
+ for _ , e in fn_info .items ()]
183
192
entry ['crate' ] = crates
184
193
entry ['target_safeness' ] = target_safenesses
194
+ entry ['public_target' ] = public_targets
185
195
else :
186
196
crate = list (fn_info .keys ())[0 ]
187
197
entry ['crate' ] = crate
188
198
entry ['target_safeness' ] = fn_info [crate ][
189
199
'target_safeness' ]
200
+ entry ['public_target' ] = fn_info [crate ]['public_target' ]
190
201
191
202
return contract_harnesses , standard_harnesses
192
203
@@ -205,6 +216,7 @@ def find_harness_map_entry(
205
216
'crate' : None ,
206
217
'function' : None ,
207
218
'target_safeness' : None ,
219
+ 'public_target' : None ,
208
220
'file_name' : None
209
221
}, None
210
222
@@ -255,6 +267,7 @@ def init_entry(
255
267
'crate' : crate ,
256
268
'function' : harness_map_entry ['function' ],
257
269
'function_safeness' : harness_map_entry ['target_safeness' ],
270
+ 'public_target' : harness_map_entry ['public_target' ],
258
271
'file_name' : harness_map_entry ['file_name' ],
259
272
'n_failed_properties' : None ,
260
273
'n_total_properties' : None ,
@@ -281,6 +294,7 @@ def create_autoharness_result(
281
294
'crate' : None ,
282
295
'function' : fn ,
283
296
'function_safeness' : None ,
297
+ 'public_target' : None ,
284
298
'file_name' : None ,
285
299
'n_failed_properties' : None ,
286
300
'n_total_properties' : None ,
@@ -290,8 +304,10 @@ def create_autoharness_result(
290
304
}
291
305
elif len (fn_info .keys ()) > 1 :
292
306
crates = list (fn_info .keys ())
293
- target_safenesses = [ts ['target_safenesses' ]
294
- for _ , ts in fn_info .items ()]
307
+ target_safenesses = [e ['target_safenesses' ]
308
+ for _ , e in fn_info .items ()]
309
+ public_targets = [e ['public_target' ]
310
+ for _ , e in fn_info .items ()]
295
311
return {
296
312
'harness' : fn ,
297
313
'is_autoharness' : True ,
@@ -300,6 +316,7 @@ def create_autoharness_result(
300
316
'crate' : crates ,
301
317
'function' : fn ,
302
318
'function_safeness' : target_safenesses ,
319
+ 'public_target' : public_targets ,
303
320
'file_name' : None ,
304
321
'n_failed_properties' : None ,
305
322
'n_total_properties' : None ,
@@ -317,6 +334,7 @@ def create_autoharness_result(
317
334
'crate' : crate ,
318
335
'function' : fn ,
319
336
'function_safeness' : fn_info [crate ]['target_safeness' ],
337
+ 'public_target' : fn_info [crate ]['public_target' ],
320
338
'file_name' : None ,
321
339
'n_failed_properties' : None ,
322
340
'n_total_properties' : None ,
@@ -333,6 +351,7 @@ def create_autoharness_result(
333
351
'crate' : harness_map_entry ['crate' ],
334
352
'function' : harness_map_entry ['function' ],
335
353
'function_safeness' : harness_map_entry ['target_safeness' ],
354
+ 'public_target' : harness_map_entry ['public_target' ],
336
355
'file_name' : harness_map_entry ['file_name' ],
337
356
'n_failed_properties' : None ,
338
357
'n_total_properties' : None ,
0 commit comments