@@ -20,7 +20,7 @@ def __init__ (self, language):
2020
2121 def printHelp (self ):
2222 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]
2424
2525This generates summary, source and sink models for the code in the database.
2626The files will be placed in `{ self .language } /ql/lib/semmle/code/{ self .language } /frameworks/<outputQll>` where
@@ -39,18 +39,23 @@ def printHelp(self):
3939
4040Example invocations:
4141$ 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"
4243$ python3 GenerateFlowModel.py /tmp/dbs/my_library_db "mylibrary/FrameworkSinks.qll" --with-sinks
4344
4445Requirements: `codeql` should both appear on your path.
4546 """ )
4647
4748
48- def setenvironment (self , target , database ):
49+ def setenvironment (self , target , database , friendlyName ):
4950 self .codeQlRoot = subprocess .check_output (["git" , "rev-parse" , "--show-toplevel" ]).decode ("utf-8" ).strip ()
5051 if not target .endswith (".qll" ):
5152 target += ".qll"
5253 filename = os .path .basename (target )
5354 dirname = os .path .dirname (target )
55+ if friendlyName is not None :
56+ self .friendlyname = friendlyName
57+ else :
58+ self .friendlyname = filename [:- 4 ]
5459 self .shortname = filename [:- 4 ]
5560 self .database = database
5661 self .generatedFrameworks = os .path .join (
@@ -92,11 +97,15 @@ def make(language):
9297 if not generator .generateSinks and not generator .generateSources and not generator .generateSummaries and not generator .generateNegativeSummaries :
9398 generator .generateSinks = generator .generateSources = generator .generateSummaries = generator .generateNegativeSummaries = True
9499
95- if len (sys .argv ) != 3 :
100+ if len (sys .argv ) < 3 or len ( sys . argv ) > 4 :
96101 generator .printHelp ()
97102 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 )
100109 return generator
101110
102111
@@ -178,7 +187,7 @@ def makeContent(self):
178187 return f"""
179188/**
180189 * 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.
182191 */
183192
184193import { self .language }
@@ -200,7 +209,7 @@ def makeNegativeContent(self):
200209 return f"""
201210/**
202211 * 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.
204213 */
205214
206215import { self .language }
0 commit comments