Skip to content

Commit 4cc9c24

Browse files
authored
Merge pull request #19452 from paldepind/shared-model-generator-script
Shared: Remove the language-specific model generator scripts
2 parents 2b6e428 + 014e7dc commit 4cc9c24

File tree

7 files changed

+38
-87
lines changed

7 files changed

+38
-87
lines changed

.github/workflows/mad_modelDiff.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ jobs:
6868
DATABASE=$2
6969
cd codeql-$QL_VARIANT
7070
SHORTNAME=`basename $DATABASE`
71-
python java/ql/src/utils/modelgenerator/GenerateFlowModel.py --with-summaries --with-sinks $DATABASE $SHORTNAME/$QL_VARIANT
71+
python misc/scripts/models-as-data/generate_mad.py --language java --with-summaries --with-sinks $DATABASE $SHORTNAME/$QL_VARIANT
7272
mkdir -p $MODELS/$SHORTNAME
7373
mv java/ql/lib/ext/generated/$SHORTNAME/$QL_VARIANT $MODELS/$SHORTNAME
7474
cd ..

cpp/ql/src/utils/modelgenerator/GenerateFlowModel.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

csharp/ql/src/utils/modelgenerator/GenerateFlowModel.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

java/ql/src/utils/modelgenerator/GenerateFlowModel.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

java/ql/src/utils/modelgenerator/RegenerateModels.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ def regenerateModel(lgtmSlug, extractedDb):
3535
sys.exit(1)
3636
modelFile = lgtmSlugToModelFile[lgtmSlug]
3737
codeQlRoot = findGitRoot()
38-
subprocess.check_call([codeQlRoot + "/java/ql/src/utils/modelgenerator/GenerateFlowModel.py",
39-
"--with-summaries", "--with-sinks", "--with-neutrals",
38+
subprocess.check_call([codeQlRoot + "/misc/scripts/models-as-data/generate_mad.py",
39+
"--language", "java", "--with-summaries", "--with-sinks", "--with-neutrals",
4040
extractedDb, modelFile])
4141
print("Regenerated " + modelFile)
4242
shutil.rmtree(tmpDir)

misc/scripts/models-as-data/generate_flow_model.py renamed to misc/scripts/models-as-data/generate_mad.py

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
#!/usr/bin/python3
22

33
import helpers
4-
import json
54
import os
65
import os.path
7-
import shlex
86
import subprocess
97
import sys
108
import tempfile
@@ -27,24 +25,13 @@ def parseData(data):
2725

2826
return rows
2927

30-
class Generator:
31-
def __init__ (self, language):
32-
self.language = language
33-
self.generateSinks = False
34-
self.generateSources = False
35-
self.generateSummaries = False
36-
self.generateNeutrals = False
37-
self.generateTypeBasedSummaries = False
38-
self.dryRun = False
39-
self.dirname = "modelgenerator"
40-
4128

42-
def printHelp(self):
43-
print(f"""Usage:
44-
python3 GenerateFlowModel.py <library-database> [DIR] [--with-sinks] [--with-sources] [--with-summaries] [--with-neutrals] [--with-typebased-summaries] [--dry-run]
29+
def printHelp():
30+
print(f"""Usage:
31+
python3 generate_mad.py <library-database> [DIR] --language LANGUAGE [--with-sinks] [--with-sources] [--with-summaries] [--with-neutrals] [--with-typebased-summaries] [--dry-run]
4532
4633
This generates summary, source, sink and neutral models for the code in the database.
47-
The files will be placed in `{self.language}/ql/lib/ext/generated/DIR`
34+
The files will be placed in `LANGUAGE/ql/lib/ext/generated/DIR`
4835
4936
Which models are generated is controlled by the flags:
5037
--with-sinks
@@ -57,14 +44,25 @@ def printHelp(self):
5744
--dry-run: Only run the queries, but don't write to file.
5845
5946
Example invocations:
60-
$ python3 GenerateFlowModel.py /tmp/dbs/my_library_db
61-
$ python3 GenerateFlowModel.py /tmp/dbs/my_library_db --with-sinks
62-
$ python3 GenerateFlowModel.py /tmp/dbs/my_library_db --with-sinks my_directory
47+
$ python3 generate_mad.py /tmp/dbs/my_library_db
48+
$ python3 generate_mad.py /tmp/dbs/my_library_db --with-sinks
49+
$ python3 generate_mad.py /tmp/dbs/my_library_db --with-sinks my_directory
6350
6451
6552
Requirements: `codeql` should appear on your path.
6653
""")
6754

55+
class Generator:
56+
def __init__(self, language):
57+
self.language = language
58+
self.generateSinks = False
59+
self.generateSources = False
60+
self.generateSummaries = False
61+
self.generateNeutrals = False
62+
self.generateTypeBasedSummaries = False
63+
self.dryRun = False
64+
self.dirname = "modelgenerator"
65+
6866

6967
def setenvironment(self, database, folder):
7068
self.codeQlRoot = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).decode("utf-8").strip()
@@ -76,12 +74,22 @@ def setenvironment(self, database, folder):
7674

7775

7876
@staticmethod
79-
def make(language):
80-
generator = Generator(language)
77+
def make():
78+
# Create a generator instance based on command line arguments.
8179
if any(s == "--help" for s in sys.argv):
82-
generator.printHelp()
80+
printHelp()
81+
sys.exit(0)
82+
83+
if "--language" in sys.argv:
84+
language = sys.argv[sys.argv.index("--language") + 1]
85+
sys.argv.remove("--language")
86+
sys.argv.remove(language)
87+
else:
88+
printHelp()
8389
sys.exit(0)
8490

91+
generator = Generator(language=language)
92+
8593
if "--with-sinks" in sys.argv:
8694
sys.argv.remove("--with-sinks")
8795
generator.generateSinks = True
@@ -115,7 +123,7 @@ def make(language):
115123

116124
n = len(sys.argv)
117125
if n < 2:
118-
generator.printHelp()
126+
printHelp()
119127
sys.exit(1)
120128
elif n == 2:
121129
generator.setenvironment(sys.argv[1], "")
@@ -204,3 +212,6 @@ def run(self):
204212

205213
if self.generateTypeBasedSummaries:
206214
self.save(typeBasedContent, ".typebased.model.yml")
215+
216+
if __name__ == '__main__':
217+
Generator.make().run()

rust/ql/src/utils/modelgenerator/GenerateFlowModel.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)