Skip to content

Commit 1fe9e92

Browse files
committed
Fix CSV timeseries script to create DB with scheme from correct git SHA
1 parent 5d58edb commit 1fe9e92

File tree

2 files changed

+23
-12
lines changed

2 files changed

+23
-12
lines changed

misc/scripts/library-coverage/generate-timeseries.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,15 @@ def get_previous_sha(sha, date):
4141
return (parent_sha, parent_date)
4242

4343

44-
def get_packages(lang, query, search_path):
44+
def get_packages(config, search_path):
4545
try:
46-
db = "empty_" + lang
47-
ql_output = "output-" + lang + ".csv"
46+
db = "empty_" + config.lang
47+
ql_output = "output-" + config.lang + ".csv"
4848
if os.path.isdir(db):
4949
shutil.rmtree(db)
50-
utils.create_empty_database(lang, ".java", db)
51-
utils.run_codeql_query(query, db, ql_output, search_path)
50+
utils.create_empty_database(
51+
config.lang, config.ext, db, config.dbscheme)
52+
utils.run_codeql_query(config.ql_path, db, ql_output, search_path)
5253

5354
return pack.PackageCollection(ql_output)
5455
except:
@@ -71,9 +72,9 @@ def get_packages(lang, query, search_path):
7172

7273
configs = [
7374
utils.LanguageConfig(
74-
"java", "Java", ".java", "java/ql/src/meta/frameworks/Coverage.ql"),
75+
"java", "Java", ".java", "java/ql/src/meta/frameworks/Coverage.ql", ["java/ql/lib/config/semmlecode.dbscheme", "java/ql/src/config/semmlecode.dbscheme"]),
7576
utils.LanguageConfig(
76-
"csharp", "C#", ".cs", "csharp/ql/src/meta/frameworks/Coverage.ql")
77+
"csharp", "C#", ".cs", "csharp/ql/src/meta/frameworks/Coverage.ql", ["csharp/ql/lib/semmlecode.csharp.dbscheme", "csharp/ql/src/semmlecode.csharp.dbscheme"])
7778
]
7879

7980
output_prefix = "framework-coverage-timeseries-"
@@ -142,7 +143,7 @@ def get_packages(lang, query, search_path):
142143
csvwriter_total = language_utils[lang]["csvwriter_total"]
143144
csvwriter_packages = language_utils[lang]["csvwriter_packages"]
144145

145-
packages = get_packages(lang, config.ql_path, ".")
146+
packages = get_packages(config, ".")
146147

147148
csvwriter_total.writerow([
148149
current_sha,

misc/scripts/library-coverage/utils.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,23 @@ def subprocess_check_output(cmd):
1717
return subprocess.check_output(cmd, text=True, env=os.environ.copy())
1818

1919

20-
def create_empty_database(lang, extension, database):
20+
def create_empty_database(lang, extension, database, dbscheme=None):
2121
"""Creates an empty database for the given language."""
2222
subprocess_run(["codeql", "database", "init", "--language=" + lang,
2323
"--source-root=/tmp/empty", "--allow-missing-source-root", database])
2424
subprocess_run(["mkdir", "-p", database + "/src/tmp/empty"])
2525
subprocess_run(["touch", database + "/src/tmp/empty/empty" + extension])
26-
subprocess_run(["codeql", "database", "finalize",
27-
database, "--no-pre-finalize"])
26+
27+
finalize_cmd = ["codeql", "database", "finalize",
28+
database, "--no-pre-finalize"]
29+
if dbscheme is not None:
30+
for scheme in dbscheme:
31+
if os.path.exists(scheme):
32+
finalize_cmd.append("--dbscheme")
33+
finalize_cmd.append(scheme)
34+
break
35+
36+
subprocess_run(finalize_cmd)
2837

2938

3039
def run_codeql_query(query, database, output, search_path):
@@ -38,11 +47,12 @@ def run_codeql_query(query, database, output, search_path):
3847

3948

4049
class LanguageConfig:
41-
def __init__(self, lang, capitalized_lang, ext, ql_path):
50+
def __init__(self, lang, capitalized_lang, ext, ql_path, dbscheme=None):
4251
self.lang = lang
4352
self.capitalized_lang = capitalized_lang
4453
self.ext = ext
4554
self.ql_path = ql_path
55+
self.dbscheme = dbscheme
4656

4757

4858
def read_cwes(path):

0 commit comments

Comments
 (0)