Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 734dcb1

Browse files
committed
Python: Sort MaD rows
(makes future diffing much easier)
1 parent 1c43d11 commit 734dcb1

1 file changed

Lines changed: 26 additions & 12 deletions

File tree

python/ql/src/meta/ClassHierarchy/process-mrva-results.py

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,6 @@
1616

1717
package_data = defaultdict(set)
1818

19-
# gather data
20-
for f in glob.glob(f"{sys.argv[1]}/**/results/results.bqrs", recursive=True):
21-
print(f"Processing {f}")
22-
23-
json_data = subprocess.check_output(["codeql", "bqrs", "decode", "--format=json", f])
24-
select = json.loads(json_data)
25-
26-
for t in select["#select"]["tuples"]:
27-
pkg = t[1]
28-
package_data[pkg].add(tuple(t))
29-
3019
# process data
3120

3221
def wrap_in_template(data):
@@ -42,7 +31,7 @@ def wrap_in_template(data):
4231
]
4332
}
4433

45-
def parse_from_file(path):
34+
def parse_from_file(path: Path) -> set:
4635
if not path.exists():
4736
return set()
4837

@@ -55,13 +44,38 @@ def parse_from_file(path):
5544

5645
return set(tuple(x) for x in raw_data["extensions"][0]["data"])
5746

47+
48+
def gather_from_mrva():
49+
for f in glob.glob(f"{sys.argv[1]}/**/results/results.bqrs", recursive=True):
50+
print(f"Processing {f}")
51+
52+
json_data = subprocess.check_output(["codeql", "bqrs", "decode", "--format=json", f])
53+
select = json.loads(json_data)
54+
55+
for t in select["#select"]["tuples"]:
56+
pkg = t[1]
57+
package_data[pkg].add(tuple(t))
58+
59+
def gather_from_existing():
60+
for f in glob.glob(f"{mad_path}/auto-*.model.yml", recursive=True):
61+
print(f"Processing {f}")
62+
63+
all_data = parse_from_file(Path(f))
64+
pkg = f.split("/")[-1].split(".")[0][5:]
65+
package_data[pkg].update(all_data)
66+
67+
gather_from_mrva()
68+
5869
for pkg in package_data:
5970
pkg_path = mad_path / f"auto-{pkg}.model.yml"
6071

72+
print(f"Writing {pkg_path}")
73+
6174
all_data = parse_from_file(pkg_path)
6275
all_data.update(package_data[pkg])
6376

6477
as_lists = [list(t) for t in all_data]
78+
as_lists.sort()
6579

6680
data_for_yaml = wrap_in_template(as_lists)
6781

0 commit comments

Comments
 (0)