mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Fix CSV timeseries script to create DB with scheme from correct git SHA
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user