@@ -80,7 +80,8 @@ def read_scanner_results(scanner_results_dir):
8080 # assert ex_entry['target_safeness'] == target_safeness
8181 continue
8282 fn_to_info [fn ][crate ] = {
83- 'target_safeness' : target_safeness
83+ 'target_safeness' : target_safeness ,
84+ 'public_target' : row ['is_public' ] == 'true'
8485 }
8586
8687 return fn_to_info
@@ -96,9 +97,9 @@ def read_kani_list(kani_list_file, scanner_data):
9697 # non-contract harness is targeting for verification, so we apply a bunch
9798 # of patterns that we know are being used. We expect that, over time,
9899 # manual harnesses will largely disappear.
99- harness_pattern1 = re .compile (r'^(.+):: verify::(check|verify)_(.+)$' )
100+ harness_pattern1 = re .compile (r'^(.+::) verify::(check|verify)_(.+)$' )
100101 harness_pattern2 = re .compile (
101- r'^(.+):: verify::(non_null|nonzero)_check_(.+)$' )
102+ r'^(.+::) verify::(non_null|nonzero)_check_(.+)$' )
102103 harness_pattern3 = re .compile (
103104 r'^time::duration_verify::duration_as_nanos(_panics)?$' )
104105 harness_pattern4 = re .compile (
@@ -131,25 +132,30 @@ def read_kani_list(kani_list_file, scanner_data):
131132 'file_name' : file_name ,
132133 'crate' : None ,
133134 'function' : fn ,
134- 'target_safeness' : None
135+ 'target_safeness' : None ,
136+ 'public_target' : None
135137 }
136138 elif len (fn_info .keys ()) > 1 :
137139 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 ()]
140144 standard_harnesses [h ] = {
141145 'file_name' : file_name ,
142146 'crate' : crates ,
143147 'function' : fn ,
144- 'target_safeness' : target_safenesses
148+ 'target_safeness' : target_safenesses ,
149+ 'public_target' : public_targets
145150 }
146151 else :
147152 crate = list (fn_info .keys ())[0 ]
148153 standard_harnesses [h ] = {
149154 'file_name' : file_name ,
150155 'crate' : crate ,
151156 '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' ]
153159 }
154160
155161 contract_harnesses = {}
@@ -159,7 +165,8 @@ def read_kani_list(kani_list_file, scanner_data):
159165 contract_harnesses [h ] = {
160166 'file_name' : file_name ,
161167 'crate' : None ,
162- 'target_safeness' : None
168+ 'target_safeness' : None ,
169+ 'public_target' : None
163170 }
164171 for o in harnesses ['contracts' ]:
165172 for h in o ['harnesses' ]:
@@ -178,15 +185,19 @@ def read_kani_list(kani_list_file, scanner_data):
178185 if fn_info is not None :
179186 if len (fn_info .keys ()) > 1 :
180187 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 ()]
183192 entry ['crate' ] = crates
184193 entry ['target_safeness' ] = target_safenesses
194+ entry ['public_target' ] = public_targets
185195 else :
186196 crate = list (fn_info .keys ())[0 ]
187197 entry ['crate' ] = crate
188198 entry ['target_safeness' ] = fn_info [crate ][
189199 'target_safeness' ]
200+ entry ['public_target' ] = fn_info [crate ]['public_target' ]
190201
191202 return contract_harnesses , standard_harnesses
192203
@@ -205,6 +216,7 @@ def find_harness_map_entry(
205216 'crate' : None ,
206217 'function' : None ,
207218 'target_safeness' : None ,
219+ 'public_target' : None ,
208220 'file_name' : None
209221 }, None
210222
@@ -255,6 +267,7 @@ def init_entry(
255267 'crate' : crate ,
256268 'function' : harness_map_entry ['function' ],
257269 'function_safeness' : harness_map_entry ['target_safeness' ],
270+ 'public_target' : harness_map_entry ['public_target' ],
258271 'file_name' : harness_map_entry ['file_name' ],
259272 'n_failed_properties' : None ,
260273 'n_total_properties' : None ,
@@ -281,6 +294,7 @@ def create_autoharness_result(
281294 'crate' : None ,
282295 'function' : fn ,
283296 'function_safeness' : None ,
297+ 'public_target' : None ,
284298 'file_name' : None ,
285299 'n_failed_properties' : None ,
286300 'n_total_properties' : None ,
@@ -290,8 +304,10 @@ def create_autoharness_result(
290304 }
291305 elif len (fn_info .keys ()) > 1 :
292306 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 ()]
295311 return {
296312 'harness' : fn ,
297313 'is_autoharness' : True ,
@@ -300,6 +316,7 @@ def create_autoharness_result(
300316 'crate' : crates ,
301317 'function' : fn ,
302318 'function_safeness' : target_safenesses ,
319+ 'public_target' : public_targets ,
303320 'file_name' : None ,
304321 'n_failed_properties' : None ,
305322 'n_total_properties' : None ,
@@ -317,6 +334,7 @@ def create_autoharness_result(
317334 'crate' : crate ,
318335 'function' : fn ,
319336 'function_safeness' : fn_info [crate ]['target_safeness' ],
337+ 'public_target' : fn_info [crate ]['public_target' ],
320338 'file_name' : None ,
321339 'n_failed_properties' : None ,
322340 'n_total_properties' : None ,
@@ -333,6 +351,7 @@ def create_autoharness_result(
333351 'crate' : harness_map_entry ['crate' ],
334352 'function' : harness_map_entry ['function' ],
335353 'function_safeness' : harness_map_entry ['target_safeness' ],
354+ 'public_target' : harness_map_entry ['public_target' ],
336355 'file_name' : harness_map_entry ['file_name' ],
337356 'n_failed_properties' : None ,
338357 'n_total_properties' : None ,
0 commit comments