File tree Expand file tree Collapse file tree
java/ql/src/utils/model-generator Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ name : Regenerate framework models
2+
3+ on :
4+ workflow_dispatch :
5+ schedule :
6+ - cron : " 30 2 * * *"
7+
8+ jobs :
9+ regenerate-models :
10+ runs-on : ubuntu-latest
11+ strategy :
12+ matrix :
13+ slug : ["placeholder"]
14+ ref : ["placeholder"]
15+ include :
16+ - slug : " apache/commons-io"
17+ ref : " 8985de8fe74f6622a419b37a6eed0dbc484dc128"
18+ exclude :
19+ - slug : " placeholder"
20+ ref : " placeholder"
21+ steps :
22+ - name : Clone self (github/codeql)
23+ uses : actions/checkout@v2
24+ - name : Setup CodeQL binaries
25+ uses : ./.github/actions/fetch-codeql
26+ - name : Clone repositories
27+ uses : actions/checkout@v2
28+ with :
29+ path : repos/${{ matrix.ref }}
30+ ref : ${{ matrix.ref }}
31+ repository : ${{ matrix.slug }}
32+ - name : Build database
33+ env :
34+ SLUG : ${{ matrix.slug }}
35+ REF : ${{ matrix.ref }}
36+ run : |
37+ mkdir dbs
38+ cd repos/${REF}
39+ SHORTNAME=${SLUG//[^a-zA-Z0-9_]/}
40+ codeql database create --language=java ../../dbs/${SHORTNAME}
41+ - name : Regenerate models in-place
42+ env :
43+ SLUG : ${{ matrix.slug }}
44+ run : |
45+ SHORTNAME=${SLUG//[^a-zA-Z0-9_]/}
46+ java/ql/src/utils/model-generator/RegenerateModels.py "${SLUG}" dbs/${SHORTNAME}
47+ - name : Stage changes
48+ run : |
49+ find java -name "*.qll" -print0 | xargs -0 git add
50+ git status
51+ git diff --cached > models.patch
52+ - uses : actions/upload-artifact@v2
53+ with :
54+ name : patch
55+ path : models.patch
56+ retention-days : 7
Original file line number Diff line number Diff line change 1+ #!/usr/bin/python3
2+
3+ # Tool to regenerate existing framework CSV models.
4+
5+ from pathlib import Path
6+ import json
7+ import os
8+ import requests
9+ import shutil
10+ import subprocess
11+ import tempfile
12+ import sys
13+
14+
15+ lgtmSlugToModelFile = {
16+ # "apache/commons-beanutils": "java/ql/lib/semmle/code/java/frameworks/apache/BeanUtilsGenerated.qll",
17+ # "apache/commons-codec": "java/ql/lib/semmle/code/java/frameworks/apache/CodecGenerated.qll",
18+ # "apache/commons-lang": "java/ql/lib/semmle/code/java/frameworks/apache/Lang3Generated.qll",
19+ "apache/commons-io" : "java/ql/lib/semmle/code/java/frameworks/apache/IOGenerated.qll" ,
20+ }
21+
22+
23+ def findGitRoot ():
24+ return subprocess .check_output (
25+ ["git" , "rev-parse" , "--show-toplevel" ]).decode ("utf-8" ).strip ()
26+
27+
28+ def regenerateModel (lgtmSlug , extractedDb ):
29+ tmpDir = tempfile .mkdtemp ()
30+ print ("============================================================" )
31+ print ("Generating models for " + lgtmSlug )
32+ print ("============================================================" )
33+ modelFile = lgtmSlugToModelFile [lgtmSlug ]
34+ codeQlRoot = findGitRoot ()
35+ targetModel = codeQlRoot + "/" + modelFile
36+ subprocess .check_call ([codeQlRoot + "/java/ql/src/utils/model-generator/GenerateFlowModel.py" , extractedDb ,
37+ targetModel ])
38+ print ("Regenerated " + targetModel )
39+ shutil .rmtree (tmpDir )
40+
41+
42+ if len (sys .argv ) == 3 :
43+ lgtmSlug = sys .argv [1 ]
44+ db = sys .argv [2 ]
45+ regenerateModel (lgtmSlug , db )
46+ else :
47+ print ('error' )
You can’t perform that action at this time.
0 commit comments