Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6128c89

Browse files
tausbnRasmusWL
authored andcommitted
Python: Add Flask app and blueprint models
1 parent a81f8ea commit 6128c89

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

python/ql/lib/semmle/python/frameworks/Flask.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ module Flask {
7070
*/
7171
module FlaskApp {
7272
/** Gets a reference to the `flask.Flask` class. */
73-
API::Node classRef() { result = API::moduleImport("flask").getMember("Flask") }
73+
API::Node classRef() {
74+
result = API::moduleImport("flask").getMember("Flask") or
75+
result = ModelOutput::getATypeNode("flask.Flask~Subclass").getASubclass*()
76+
}
7477

7578
/** Gets a reference to an instance of `flask.Flask` (a flask application). */
7679
API::Node instance() { result = classRef().getReturn() }
@@ -87,6 +90,8 @@ module Flask {
8790
result = API::moduleImport("flask").getMember("Blueprint")
8891
or
8992
result = API::moduleImport("flask").getMember("blueprints").getMember("Blueprint")
93+
or
94+
result = ModelOutput::getATypeNode("flask.Blueprint~Subclass").getASubclass*()
9095
}
9196

9297
/** Gets a reference to an instance of `flask.Blueprint`. */

python/ql/src/meta/ClassHierarchy/Find.ql

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,18 @@ class DjangoHttpRequest extends FindSubclassesSpec {
275275
}
276276
}
277277

278+
class FlaskClass extends FindSubclassesSpec {
279+
FlaskClass() { this = "flask.Flask~Subclass" }
280+
281+
override API::Node getAlreadyModeledClass() { result = Flask::FlaskApp::classRef() }
282+
}
283+
284+
class FlaskBlueprint extends FindSubclassesSpec {
285+
FlaskBlueprint() { this = "flask.Blueprint~Subclass" }
286+
287+
override API::Node getAlreadyModeledClass() { result = Flask::Blueprint::classRef() }
288+
}
289+
278290
bindingset[fullyQualified]
279291
predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) {
280292
exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |

0 commit comments

Comments
 (0)