forked from vorpal-research/kex
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrefinements.py
executable file
·45 lines (35 loc) · 1.23 KB
/
refinements.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python
import os
import argparse
DEFAULT_KEX_JAR = 'refinements/build/libs/refinements-jar-with-dependencies-0.0.1.jar'
parser = argparse.ArgumentParser(description='Collect refinements for given jar')
parser.add_argument('--jar', type=str, required=True, help='jar to analyze')
parser.add_argument('--target', type=str, required=True, help='package to analyze')
parser.add_argument('--kex', type=str, help='kex jar', default=DEFAULT_KEX_JAR)
args = parser.parse_args()
jar_file = os.path.normpath(args.jar)
jar_target = args.target
kex_jar = os.path.normpath(args.kex)
log_name = '{}.log'.format(os.path.basename(jar_file))
log_path = os.path.join(os.path.dirname(jar_file), 'results')
if not os.path.exists(log_path):
os.mkdir(log_path)
log_path = os.path.join(log_path, log_name)
kex_args = {
'--mode': 'refinements',
'--output': log_path,
'-cp': jar_file,
'--target': jar_target
}
print('Running kex with {}'.format(kex_args))
args_str = ' '.join('{} {}'.format(key, val) for key, val in kex_args.items())
kex_command = [
'java',
'-Xmx16g',
'-Djava.security.manager',
'-Djava.security.policy==kex.policy',
'-jar',
kex_jar
]
kex_str = ' '.join(kex_command)
os.system(f'{kex_str} {args_str}')