Skip to content

Commit 1a05e22

Browse files
committed
Add is_public, fixes
1 parent 4bc3a53 commit 1a05e22

File tree

1 file changed

+32
-13
lines changed

1 file changed

+32
-13
lines changed

scripts/kani-std-analysis/log_parser.py

+32-13
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)