Fix CSV timeseries script to create DB with scheme from correct git SHA

This commit is contained in:
Tamas Vajk
2021-09-09 10:59:52 +02:00
parent 5d58edb3b9
commit 1fe9e9262f
2 changed files with 23 additions and 12 deletions

View File

@@ -41,14 +41,15 @@ class Git:
return (parent_sha, parent_date)
def get_packages(lang, query, search_path):
def get_packages(config, search_path):
try:
db = "empty_" + lang
ql_output = "output-" + lang + ".csv"
db = "empty_" + config.lang
ql_output = "output-" + config.lang + ".csv"
if os.path.isdir(db):
shutil.rmtree(db)
utils.create_empty_database(lang, ".java", db)
utils.run_codeql_query(query, db, ql_output, search_path)
utils.create_empty_database(
config.lang, config.ext, db, config.dbscheme)
utils.run_codeql_query(config.ql_path, db, ql_output, search_path)
return pack.PackageCollection(ql_output)
except:
@@ -71,9 +72,9 @@ else:
configs = [
utils.LanguageConfig(
"java", "Java", ".java", "java/ql/src/meta/frameworks/Coverage.ql"),
"java", "Java", ".java", "java/ql/src/meta/frameworks/Coverage.ql", ["java/ql/lib/config/semmlecode.dbscheme", "java/ql/src/config/semmlecode.dbscheme"]),
utils.LanguageConfig(
"csharp", "C#", ".cs", "csharp/ql/src/meta/frameworks/Coverage.ql")
"csharp", "C#", ".cs", "csharp/ql/src/meta/frameworks/Coverage.ql", ["csharp/ql/lib/semmlecode.csharp.dbscheme", "csharp/ql/src/semmlecode.csharp.dbscheme"])
]
output_prefix = "framework-coverage-timeseries-"
@@ -142,7 +143,7 @@ try:
csvwriter_total = language_utils[lang]["csvwriter_total"]
csvwriter_packages = language_utils[lang]["csvwriter_packages"]
packages = get_packages(lang, config.ql_path, ".")
packages = get_packages(config, ".")
csvwriter_total.writerow([
current_sha,

View File

@@ -17,14 +17,23 @@ def subprocess_check_output(cmd):
return subprocess.check_output(cmd, text=True, env=os.environ.copy())
def create_empty_database(lang, extension, database):
def create_empty_database(lang, extension, database, dbscheme=None):
"""Creates an empty database for the given language."""
subprocess_run(["codeql", "database", "init", "--language=" + lang,
"--source-root=/tmp/empty", "--allow-missing-source-root", database])
subprocess_run(["mkdir", "-p", database + "/src/tmp/empty"])
subprocess_run(["touch", database + "/src/tmp/empty/empty" + extension])
subprocess_run(["codeql", "database", "finalize",
database, "--no-pre-finalize"])
finalize_cmd = ["codeql", "database", "finalize",
database, "--no-pre-finalize"]
if dbscheme is not None:
for scheme in dbscheme:
if os.path.exists(scheme):
finalize_cmd.append("--dbscheme")
finalize_cmd.append(scheme)
break
subprocess_run(finalize_cmd)
def run_codeql_query(query, database, output, search_path):
@@ -38,11 +47,12 @@ def run_codeql_query(query, database, output, search_path):
class LanguageConfig:
def __init__(self, lang, capitalized_lang, ext, ql_path):
def __init__(self, lang, capitalized_lang, ext, ql_path, dbscheme=None):
self.lang = lang
self.capitalized_lang = capitalized_lang
self.ext = ext
self.ql_path = ql_path
self.dbscheme = dbscheme
def read_cwes(path):