mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
MaD generator: switch to snake_case fields
This commit is contained in:
@@ -236,9 +236,9 @@ def generate_models(config, args, project: Project, database_dir: str) -> None:
|
|||||||
language = config["language"]
|
language = config["language"]
|
||||||
|
|
||||||
generator = mad.Generator(language)
|
generator = mad.Generator(language)
|
||||||
generator.generateSinks = should_generate_sinks(project)
|
generator.with_sinks = should_generate_sinks(project)
|
||||||
generator.generateSources = should_generate_sources(project)
|
generator.with_sources = should_generate_sources(project)
|
||||||
generator.generateSummaries = should_generate_summaries(project)
|
generator.with_summaries = should_generate_summaries(project)
|
||||||
generator.threads = args.codeql_threads
|
generator.threads = args.codeql_threads
|
||||||
generator.ram = args.codeql_ram
|
generator.ram = args.codeql_ram
|
||||||
generator.setenvironment(database=database_dir, folder=name)
|
generator.setenvironment(database=database_dir, folder=name)
|
||||||
|
|||||||
@@ -43,12 +43,12 @@ Requirements: `codeql` should appear on your path."""
|
|||||||
|
|
||||||
|
|
||||||
class Generator:
|
class Generator:
|
||||||
generateSinks = False
|
with_sinks = False
|
||||||
generateSources = False
|
with_sources = False
|
||||||
generateSummaries = False
|
with_summaries = False
|
||||||
generateNeutrals = False
|
with_neutrals = False
|
||||||
generateTypeBasedSummaries = False
|
with_typebased_summaries = False
|
||||||
dryRun = False
|
dry_run = False
|
||||||
dirname = "modelgenerator"
|
dirname = "modelgenerator"
|
||||||
ram = None
|
ram = None
|
||||||
threads = 0
|
threads = 0
|
||||||
@@ -65,14 +65,14 @@ class Generator:
|
|||||||
)
|
)
|
||||||
self.database = database or self.database
|
self.database = database or self.database
|
||||||
self.folder = folder or self.folder
|
self.folder = folder or self.folder
|
||||||
self.generatedFrameworks = os.path.join(
|
self.generated_frameworks = os.path.join(
|
||||||
self.codeQlRoot, f"{self.language}/ql/lib/ext/generated/{self.folder}"
|
self.codeQlRoot, f"{self.language}/ql/lib/ext/generated/{self.folder}"
|
||||||
)
|
)
|
||||||
self.workDir = tempfile.mkdtemp()
|
self.workDir = tempfile.mkdtemp()
|
||||||
if self.ram is None:
|
if self.ram is None:
|
||||||
threads = self.threads if self.threads > 0 else os.cpu_count()
|
threads = self.threads if self.threads > 0 else os.cpu_count()
|
||||||
self.ram = 2048 * threads
|
self.ram = 2048 * threads
|
||||||
os.makedirs(self.generatedFrameworks, exist_ok=True)
|
os.makedirs(self.generated_frameworks, exist_ok=True)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def make():
|
def make():
|
||||||
@@ -97,37 +97,31 @@ class Generator:
|
|||||||
"--with-sinks",
|
"--with-sinks",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="Generate sink models",
|
help="Generate sink models",
|
||||||
dest="generateSinks",
|
|
||||||
)
|
)
|
||||||
p.add_argument(
|
p.add_argument(
|
||||||
"--with-sources",
|
"--with-sources",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="Generate source models",
|
help="Generate source models",
|
||||||
dest="generateSources",
|
|
||||||
)
|
)
|
||||||
p.add_argument(
|
p.add_argument(
|
||||||
"--with-summaries",
|
"--with-summaries",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="Generate summary models",
|
help="Generate summary models",
|
||||||
dest="generateSummaries",
|
|
||||||
)
|
)
|
||||||
p.add_argument(
|
p.add_argument(
|
||||||
"--with-neutrals",
|
"--with-neutrals",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="Generate neutral models",
|
help="Generate neutral models",
|
||||||
dest="generateNeutrals",
|
|
||||||
)
|
)
|
||||||
p.add_argument(
|
p.add_argument(
|
||||||
"--with-typebased-summaries",
|
"--with-typebased-summaries",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="Generate type-based summary models (experimental)",
|
help="Generate type-based summary models (experimental)",
|
||||||
dest="generateTypeBasedSummaries",
|
|
||||||
)
|
)
|
||||||
p.add_argument(
|
p.add_argument(
|
||||||
"--dry-run",
|
"--dry-run",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
help="Do not write the generated files, just print them to stdout",
|
help="Do not write the generated files, just print them to stdout",
|
||||||
dest="dryRun",
|
|
||||||
)
|
)
|
||||||
p.add_argument(
|
p.add_argument(
|
||||||
"--threads",
|
"--threads",
|
||||||
@@ -143,16 +137,16 @@ class Generator:
|
|||||||
generator = p.parse_args(namespace=Generator())
|
generator = p.parse_args(namespace=Generator())
|
||||||
|
|
||||||
if (
|
if (
|
||||||
not generator.generateSinks
|
not generator.with_sinks
|
||||||
and not generator.generateSources
|
and not generator.with_sources
|
||||||
and not generator.generateSummaries
|
and not generator.with_summaries
|
||||||
and not generator.generateNeutrals
|
and not generator.with_neutrals
|
||||||
and not generator.generateTypeBasedSummaries
|
and not generator.with_typebased_summaries
|
||||||
):
|
):
|
||||||
generator.generateSinks = True
|
generator.with_sinks = True
|
||||||
generator.generateSources = True
|
generator.with_sources = True
|
||||||
generator.generateSummaries = True
|
generator.with_summaries = True
|
||||||
generator.generateNeutrals = True
|
generator.with_neutrals = True
|
||||||
|
|
||||||
generator.setenvironment()
|
generator.setenvironment()
|
||||||
return generator
|
return generator
|
||||||
@@ -197,25 +191,25 @@ class Generator:
|
|||||||
|
|
||||||
def makeContent(self):
|
def makeContent(self):
|
||||||
summaryAddsTo = {}
|
summaryAddsTo = {}
|
||||||
if self.generateSummaries:
|
if self.with_summaries:
|
||||||
summaryAddsTo = self.getAddsTo(
|
summaryAddsTo = self.getAddsTo(
|
||||||
"CaptureSummaryModels.ql", helpers.summaryModelPredicate
|
"CaptureSummaryModels.ql", helpers.summaryModelPredicate
|
||||||
)
|
)
|
||||||
|
|
||||||
sinkAddsTo = {}
|
sinkAddsTo = {}
|
||||||
if self.generateSinks:
|
if self.with_sinks:
|
||||||
sinkAddsTo = self.getAddsTo(
|
sinkAddsTo = self.getAddsTo(
|
||||||
"CaptureSinkModels.ql", helpers.sinkModelPredicate
|
"CaptureSinkModels.ql", helpers.sinkModelPredicate
|
||||||
)
|
)
|
||||||
|
|
||||||
sourceAddsTo = {}
|
sourceAddsTo = {}
|
||||||
if self.generateSources:
|
if self.with_sources:
|
||||||
sourceAddsTo = self.getAddsTo(
|
sourceAddsTo = self.getAddsTo(
|
||||||
"CaptureSourceModels.ql", helpers.sourceModelPredicate
|
"CaptureSourceModels.ql", helpers.sourceModelPredicate
|
||||||
)
|
)
|
||||||
|
|
||||||
neutralAddsTo = {}
|
neutralAddsTo = {}
|
||||||
if self.generateNeutrals:
|
if self.with_neutrals:
|
||||||
neutralAddsTo = self.getAddsTo(
|
neutralAddsTo = self.getAddsTo(
|
||||||
"CaptureNeutralModels.ql", helpers.neutralModelPredicate
|
"CaptureNeutralModels.ql", helpers.neutralModelPredicate
|
||||||
)
|
)
|
||||||
@@ -223,7 +217,7 @@ class Generator:
|
|||||||
return helpers.merge(summaryAddsTo, sinkAddsTo, sourceAddsTo, neutralAddsTo)
|
return helpers.merge(summaryAddsTo, sinkAddsTo, sourceAddsTo, neutralAddsTo)
|
||||||
|
|
||||||
def makeTypeBasedContent(self):
|
def makeTypeBasedContent(self):
|
||||||
if self.generateTypeBasedSummaries:
|
if self.with_typebased_summaries:
|
||||||
typeBasedSummaryAddsTo = self.getAddsTo(
|
typeBasedSummaryAddsTo = self.getAddsTo(
|
||||||
"CaptureTypeBasedSummaryModels.ql", helpers.summaryModelPredicate
|
"CaptureTypeBasedSummaryModels.ql", helpers.summaryModelPredicate
|
||||||
)
|
)
|
||||||
@@ -242,7 +236,7 @@ extensions:
|
|||||||
sanitizedEntry = re.sub(
|
sanitizedEntry = re.sub(
|
||||||
r"-+", "-", entry.replace("/", "-").replace(":", "-")
|
r"-+", "-", entry.replace("/", "-").replace(":", "-")
|
||||||
)
|
)
|
||||||
target = os.path.join(self.generatedFrameworks, sanitizedEntry + extension)
|
target = os.path.join(self.generated_frameworks, sanitizedEntry + extension)
|
||||||
with open(target, "w") as f:
|
with open(target, "w") as f:
|
||||||
f.write(extensionTemplate.format(extensions[entry]))
|
f.write(extensionTemplate.format(extensions[entry]))
|
||||||
print("Models as data extensions written to " + target)
|
print("Models as data extensions written to " + target)
|
||||||
@@ -251,19 +245,19 @@ extensions:
|
|||||||
content = self.makeContent()
|
content = self.makeContent()
|
||||||
typeBasedContent = self.makeTypeBasedContent()
|
typeBasedContent = self.makeTypeBasedContent()
|
||||||
|
|
||||||
if self.dryRun:
|
if self.dry_run:
|
||||||
print("Models as data extensions generated, but not written to file.")
|
print("Models as data extensions generated, but not written to file.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
self.generateSinks
|
self.with_sinks
|
||||||
or self.generateSources
|
or self.with_sources
|
||||||
or self.generateSummaries
|
or self.with_summaries
|
||||||
or self.generateNeutrals
|
or self.with_neutrals
|
||||||
):
|
):
|
||||||
self.save(content, ".model.yml")
|
self.save(content, ".model.yml")
|
||||||
|
|
||||||
if self.generateTypeBasedSummaries:
|
if self.with_typebased_summaries:
|
||||||
self.save(typeBasedContent, ".typebased.model.yml")
|
self.save(typeBasedContent, ".typebased.model.yml")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user