@@ -20,7 +20,7 @@ def __init__ (self, language):
20
20
21
21
def printHelp (self ):
22
22
print (f"""Usage:
23
- python3 GenerateFlowModel.py <library-database> <outputQll> [--with-sinks] [--with-sources] [--with-summaries] [--dry-run]
23
+ python3 GenerateFlowModel.py <library-database> <outputQll> [<friendlyFrameworkName>] [ --with-sinks] [--with-sources] [--with-summaries] [--dry-run]
24
24
25
25
This generates summary, source and sink models for the code in the database.
26
26
The files will be placed in `{ self .language } /ql/lib/semmle/code/{ self .language } /frameworks/<outputQll>` where
@@ -39,18 +39,23 @@ def printHelp(self):
39
39
40
40
Example invocations:
41
41
$ python3 GenerateFlowModel.py /tmp/dbs/my_library_db "mylibrary/Framework.qll"
42
+ $ python3 GenerateFlowModel.py /tmp/dbs/my_library_db "mylibrary/Framework.qll" "Friendly Name of Framework"
42
43
$ python3 GenerateFlowModel.py /tmp/dbs/my_library_db "mylibrary/FrameworkSinks.qll" --with-sinks
43
44
44
45
Requirements: `codeql` should both appear on your path.
45
46
""" )
46
47
47
48
48
- def setenvironment (self , target , database ):
49
+ def setenvironment (self , target , database , friendlyName ):
49
50
self .codeQlRoot = subprocess .check_output (["git" , "rev-parse" , "--show-toplevel" ]).decode ("utf-8" ).strip ()
50
51
if not target .endswith (".qll" ):
51
52
target += ".qll"
52
53
filename = os .path .basename (target )
53
54
dirname = os .path .dirname (target )
55
+ if friendlyName is not None :
56
+ self .friendlyname = friendlyName
57
+ else :
58
+ self .friendlyname = filename [:- 4 ]
54
59
self .shortname = filename [:- 4 ]
55
60
self .database = database
56
61
self .generatedFrameworks = os .path .join (
@@ -92,11 +97,15 @@ def make(language):
92
97
if not generator .generateSinks and not generator .generateSources and not generator .generateSummaries and not generator .generateNegativeSummaries :
93
98
generator .generateSinks = generator .generateSources = generator .generateSummaries = generator .generateNegativeSummaries = True
94
99
95
- if len (sys .argv ) != 3 :
100
+ if len (sys .argv ) < 3 or len ( sys . argv ) > 4 :
96
101
generator .printHelp ()
97
102
sys .exit (1 )
98
-
99
- generator .setenvironment (sys .argv [2 ], sys .argv [1 ])
103
+
104
+ friendlyName = None
105
+ if len (sys .argv ) == 4 :
106
+ friendlyName = sys .argv [3 ]
107
+
108
+ generator .setenvironment (sys .argv [2 ], sys .argv [1 ], friendlyName )
100
109
return generator
101
110
102
111
@@ -178,7 +187,7 @@ def makeContent(self):
178
187
return f"""
179
188
/**
180
189
* THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
181
- * Definitions of taint steps in the { self .shortname } framework.
190
+ * Definitions of taint steps in the { self .friendlyname } framework.
182
191
*/
183
192
184
193
import { self .language }
@@ -200,7 +209,7 @@ def makeNegativeContent(self):
200
209
return f"""
201
210
/**
202
211
* THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
203
- * Definitions of negative summaries in the { self .shortname } framework.
212
+ * Definitions of negative summaries in the { self .friendlyname } framework.
204
213
*/
205
214
206
215
import { self .language }
0 commit comments