mirror of
https://github.com/github/codeql.git
synced 2026-04-26 17:25:19 +02:00
Python: Add SqlAlchemy model
This commit is contained in:
committed by
Rasmus Wriedt Larsen
parent
422733f32a
commit
a3f7885787
@@ -13,6 +13,7 @@ private import semmle.python.Concepts
|
||||
// This import is done like this to avoid importing the deprecated top-level things that
|
||||
// would pollute the namespace
|
||||
private import semmle.python.frameworks.PEP249::PEP249 as PEP249
|
||||
private import semmle.python.frameworks.data.ModelsAsData
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
@@ -34,10 +35,12 @@ module SqlAlchemy {
|
||||
*/
|
||||
module Engine {
|
||||
/** Gets a reference to a SQLAlchemy Engine class. */
|
||||
private API::Node classRef() {
|
||||
API::Node classRef() {
|
||||
result = API::moduleImport("sqlalchemy").getMember("engine").getMember("Engine")
|
||||
or
|
||||
result = API::moduleImport("sqlalchemy").getMember("future").getMember("Engine")
|
||||
or
|
||||
result = ModelOutput::getATypeNode("sqlalchemy.engine.Engine~Subclass").getASubclass*()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -87,7 +90,7 @@ module SqlAlchemy {
|
||||
*/
|
||||
module Connection {
|
||||
/** Gets a reference to a SQLAlchemy Connection class. */
|
||||
private API::Node classRef() {
|
||||
API::Node classRef() {
|
||||
result =
|
||||
API::moduleImport("sqlalchemy")
|
||||
.getMember("engine")
|
||||
@@ -95,6 +98,8 @@ module SqlAlchemy {
|
||||
.getMember("Connection")
|
||||
or
|
||||
result = API::moduleImport("sqlalchemy").getMember("future").getMember("Connection")
|
||||
or
|
||||
result = ModelOutput::getATypeNode("sqlalchemy.engine.Connection~Subclass").getASubclass*()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,8 +183,10 @@ module SqlAlchemy {
|
||||
*/
|
||||
module Session {
|
||||
/** Gets a reference to the `sqlalchemy.orm.Session` class. */
|
||||
private API::Node classRef() {
|
||||
API::Node classRef() {
|
||||
result = API::moduleImport("sqlalchemy").getMember("orm").getMember("Session")
|
||||
or
|
||||
result = ModelOutput::getATypeNode("sqlalchemy.orm.Session~Subclass").getASubclass*()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,7 @@ private import semmle.python.frameworks.MarkupSafe
|
||||
private import semmle.python.frameworks.Multidict
|
||||
private import semmle.python.frameworks.Pycurl
|
||||
private import semmle.python.frameworks.RestFramework
|
||||
private import semmle.python.frameworks.SqlAlchemy
|
||||
import semmle.python.frameworks.data.internal.ApiGraphModelsExtensions as Extensions
|
||||
|
||||
class FlaskViewClasses extends FindSubclassesSpec {
|
||||
@@ -337,6 +338,24 @@ class RestFrameworkResponse extends FindSubclassesSpec {
|
||||
override API::Node getAlreadyModeledClass() { result = RestFramework::Response::classRef() }
|
||||
}
|
||||
|
||||
class SqlAlchemyEngine extends FindSubclassesSpec {
|
||||
SqlAlchemyEngine() { this = "sqlalchemy.engine.Engine~Subclass" }
|
||||
|
||||
override API::Node getAlreadyModeledClass() { result = SqlAlchemy::Engine::classRef() }
|
||||
}
|
||||
|
||||
class SqlAlchemyConnection extends FindSubclassesSpec {
|
||||
SqlAlchemyConnection() { this = "sqlalchemy.engine.Connection~Subclass" }
|
||||
|
||||
override API::Node getAlreadyModeledClass() { result = SqlAlchemy::Connection::classRef() }
|
||||
}
|
||||
|
||||
class SqlAlchemySession extends FindSubclassesSpec {
|
||||
SqlAlchemySession() { this = "sqlalchemy.orm.Session~Subclass" }
|
||||
|
||||
override API::Node getAlreadyModeledClass() { result = SqlAlchemy::Session::classRef() }
|
||||
}
|
||||
|
||||
bindingset[fullyQualified]
|
||||
predicate fullyQualifiedToYamlFormat(string fullyQualified, string type2, string path) {
|
||||
exists(int firstDot | firstDot = fullyQualified.indexOf(".", 0, 0) |
|
||||
|
||||
Reference in New Issue
Block a user