Shared: Update the model generator script to allow execution of the mixed model generator queries.

This commit is contained in:
Michael Nebel
2024-09-23 11:06:11 +02:00
parent 8310faa2e9
commit ccadfa134e

View File

@@ -33,7 +33,8 @@ class Generator:
self.generateSources = False self.generateSources = False
self.generateSummaries = False self.generateSummaries = False
self.generateNeutrals = False self.generateNeutrals = False
self.generateContentSummaries = False self.generateMixedSummaries = False
self.generateMixedNeutrals = False
self.generateTypeBasedSummaries = False self.generateTypeBasedSummaries = False
self.dryRun = False self.dryRun = False
self.dirname = "modelgenerator" self.dirname = "modelgenerator"
@@ -51,7 +52,8 @@ Which models are generated is controlled by the flags:
--with-sources --with-sources
--with-summaries --with-summaries
--with-neutrals --with-neutrals
--with-content-summaries (Experimental). May not be used in conjunction with --with-summaries --with-mixed-summaries (Experimental). May not be used in conjunction with --with-summaries.
--with-mixed-neutrals (Experimental). Should only be used in conjunction with --with-mixed-summaries.
--with-typebased-summaries (Experimental) --with-typebased-summaries (Experimental)
If none of these flags are specified, all models are generated except for the type based models. If none of these flags are specified, all models are generated except for the type based models.
@@ -83,7 +85,7 @@ Requirements: `codeql` should both appear on your path.
generator.printHelp() generator.printHelp()
sys.exit(0) sys.exit(0)
if "--with-summaries" in sys.argv and "--with-content-summaries" in sys.argv: if "--with-summaries" in sys.argv and "--with-mixed-summaries" in sys.argv:
generator.printHelp() generator.printHelp()
sys.exit(0) sys.exit(0)
@@ -103,9 +105,13 @@ Requirements: `codeql` should both appear on your path.
sys.argv.remove("--with-neutrals") sys.argv.remove("--with-neutrals")
generator.generateNeutrals = True generator.generateNeutrals = True
if "--with-content-summaries" in sys.argv: if "--with-mixed-summaries" in sys.argv:
sys.argv.remove("--with-content-summaries") sys.argv.remove("--with-mixed-summaries")
generator.generateContentSummaries = True generator.generateMixedSummaries = True
if "--with-mixed-neutrals" in sys.argv:
sys.argv.remove("--with-mixed-neutrals")
generator.generateMixedNeutrals = True
if "--with-typebased-summaries" in sys.argv: if "--with-typebased-summaries" in sys.argv:
sys.argv.remove("--with-typebased-summaries") sys.argv.remove("--with-typebased-summaries")
@@ -115,7 +121,13 @@ Requirements: `codeql` should both appear on your path.
sys.argv.remove("--dry-run") sys.argv.remove("--dry-run")
generator.dryRun = True generator.dryRun = True
if not generator.generateSinks and not generator.generateSources and not generator.generateSummaries and not generator.generateNeutrals and not generator.generateTypeBasedSummaries and not generator.generateContentSummaries: if (not generator.generateSinks and
not generator.generateSources and
not generator.generateSummaries and
not generator.generateNeutrals and
not generator.generateTypeBasedSummaries and
not generator.generateMixedSummaries and
not generator.generateMixedNeutrals):
generator.generateSinks = generator.generateSources = generator.generateSummaries = generator.generateNeutrals = True generator.generateSinks = generator.generateSources = generator.generateSummaries = generator.generateNeutrals = True
n = len(sys.argv) n = len(sys.argv)
@@ -173,12 +185,17 @@ Requirements: `codeql` should both appear on your path.
else: else:
neutralAddsTo = { } neutralAddsTo = { }
if self.generateContentSummaries: if self.generateMixedSummaries:
contentSummaryAddsTo = self.getAddsTo("CaptureContentSummaryModels.ql", helpers.summaryModelPredicate) mixedSummaryAddsTo = self.getAddsTo("CaptureMixedSummaryModels.ql", helpers.summaryModelPredicate)
else: else:
contentSummaryAddsTo = { } mixedSummaryAddsTo = { }
return helpers.merge(summaryAddsTo, contentSummaryAddsTo, sinkAddsTo, sourceAddsTo, neutralAddsTo) if self.generateMixedNeutrals:
mixedNeutralAddsTo = self.getAddsTo("CaptureMixedNeutralModels.ql", helpers.neutralModelPredicate)
else:
mixedNeutralAddsTo = { }
return helpers.merge(summaryAddsTo, mixedSummaryAddsTo, sinkAddsTo, sourceAddsTo, neutralAddsTo, mixedNeutralAddsTo)
def makeTypeBasedContent(self): def makeTypeBasedContent(self):
if self.generateTypeBasedSummaries: if self.generateTypeBasedSummaries:
@@ -208,7 +225,12 @@ extensions:
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 self.generateSinks or self.generateSources or self.generateSummaries or self.generateNeutrals: if (self.generateSinks or
self.generateSources or
self.generateSummaries or
self.generateNeutrals or
self.generateMixedSummaries or
self.generatedMixedNeutrals):
self.save(content, ".model.yml") self.save(content, ".model.yml")
if self.generateTypeBasedSummaries: if self.generateTypeBasedSummaries: