Skip to content

Commit 6ed1424

Browse files
committed
Java: Refactor language specific parts into variable.
1 parent 1ac9883 commit 6ed1424

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

java/ql/src/utils/model-generator/generate_flow_model.py

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
import sys
99
import tempfile
1010

11+
language = "java"
1112

1213
def printHelp():
13-
print("""Usage:
14+
print(f"""Usage:
1415
python3 GenerateFlowModel.py <library-database> <outputQll> [--with-sinks] [--with-sources] [--with-summaries] [--dry-run]
1516
1617
This generates summary, source and sink models for the code in the database.
17-
The files will be placed in `java/ql/lib/semmle/code/java/frameworks/<outputQll>` where
18+
The files will be placed in `{language}/ql/lib/semmle/code/{language}/frameworks/<outputQll>` where
1819
outputQll is the name (and path) of the output QLL file. Usually, models are grouped by their
1920
respective frameworks.
2021
@@ -27,8 +28,8 @@ def printHelp():
2728
--dry-run: Only run the queries, but don't write to file.
2829
2930
Example invocations:
30-
$ python3 GenerateFlowModel.py /tmp/dbs/apache_commons-codec_45649c8 "apache/Codec.qll"
31-
$ python3 GenerateFlowModel.py /tmp/dbs/jdk15_db "javase/jdk_sinks.qll" --with-sinks
31+
$ python3 GenerateFlowModel.py /tmp/dbs/my_library_db "mylibrary/Framework.qll"
32+
$ python3 GenerateFlowModel.py /tmp/dbs/my_library_db "mylibrary/FrameworkSinks.qll" --with-sinks
3233
3334
Requirements: `codeql` should both appear on your path.
3435
""")
@@ -74,7 +75,7 @@ def printHelp():
7475
filename = os.path.basename(targetQll)
7576
shortname = filename[:-4]
7677
generatedFrameworks = os.path.join(
77-
codeQlRoot, "java/ql/lib/semmle/code/java/frameworks/")
78+
codeQlRoot, f"{language}/ql/lib/semmle/code/{language}/frameworks/")
7879
frameworkTarget = os.path.join(generatedFrameworks, targetQll)
7980

8081
workDir = tempfile.mkdtemp()
@@ -157,22 +158,18 @@ def asCsvModel(superclass, kind, rows):
157158
else:
158159
sourceCsv = ""
159160

160-
qllTemplate = """
161-
/** Definitions of taint steps in the {0} framework */
161+
qllContents = f"""
162+
/** Definitions of taint steps in the {shortname} framework */
162163
163-
import java
164-
private import semmle.code.java.dataflow.ExternalFlow
164+
import {language}
165+
private import semmle.code.{language}.dataflow.ExternalFlow
165166
166-
{1}
167-
{2}
168-
{3}
167+
{sinkCsv}
168+
{sourceCsv}
169+
{summaryCsv}
169170
170171
"""
171172

172-
173-
qllContents = qllTemplate.format(shortname, sinkCsv, sourceCsv, summaryCsv)
174-
175-
176173
if dryRun:
177174
print("CSV Models generated, but not written to file.")
178175
sys.exit(0)

0 commit comments

Comments
 (0)