mirror of
https://github.com/github/codeql.git
synced 2026-04-25 16:55:19 +02:00
Merge pull request #15044 from RasmusWL/automated-subclass-models
Python: Automated subclass models
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
| Django.Views.View~Subclass | find_subclass_test | Member[clash2] |
|
||||
| Django.Views.View~Subclass | find_subclass_test | Member[clash3] |
|
||||
| Django.Views.View~Subclass | find_subclass_test | Member[clash] |
|
||||
| flask.MethodView~Subclass | find_subclass_test | Member[C] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[A] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[B] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[ViewAliasInExcept] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[ViewAliasInTry] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[ViewAlias] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[ViewAlias_no_use] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[View] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[clash2] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[clash3] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[clash] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[complete_module_alias] |
|
||||
| flask.View~Subclass | find_subclass_test | Member[complete_module_alias_no_use] |
|
||||
| rest_framework.response.Response~Subclass | find_subclass_test | Member[MyRestResponse] |
|
||||
@@ -0,0 +1 @@
|
||||
meta/ClassHierarchy/Find.ql
|
||||
@@ -0,0 +1,57 @@
|
||||
from flask.views import View
|
||||
import flask.views
|
||||
|
||||
class A(View):
|
||||
pass
|
||||
|
||||
class B(A):
|
||||
pass
|
||||
|
||||
class C(flask.views.MethodView):
|
||||
pass
|
||||
|
||||
ViewAlias = View
|
||||
print(ViewAlias)
|
||||
|
||||
ViewAlias_no_use = View
|
||||
|
||||
|
||||
try:
|
||||
from flask.views import View as ViewAliasInTry
|
||||
except:
|
||||
from flask.views import View as ViewAliasInExcept
|
||||
|
||||
|
||||
if cond:
|
||||
from flask.views import View as clash
|
||||
else:
|
||||
from django.views.generic import View as clash
|
||||
|
||||
if cond:
|
||||
from flask.views import View as clash2
|
||||
else:
|
||||
from django.views.generic import View as clash2
|
||||
print(clash2)
|
||||
|
||||
if cond:
|
||||
from flask.views import View as clash3
|
||||
else:
|
||||
from django.views.generic import View as clash3
|
||||
print(clash3)
|
||||
|
||||
import flask.views as containing_module_alias # $ MISSING
|
||||
# now `find_subclass_test.containing_module_alias.View` is an alias of flask.views.View
|
||||
|
||||
# NOTE: this is not valid code, since View is not a module... but it could be in some cases, like for xml.etree.ElementTree, which is actually not a class but a module 😕
|
||||
import flask.views.View as complete_module_alias
|
||||
print(complete_module_alias)
|
||||
|
||||
import flask.views.View as complete_module_alias_no_use
|
||||
|
||||
|
||||
def wrapper():
|
||||
return View # $ MISSING
|
||||
|
||||
import rest_framework
|
||||
class MyRestResponse(rest_framework.response.Response):
|
||||
pass
|
||||
@@ -0,0 +1 @@
|
||||
semmle-extractor-options: --max-import-depth=0
|
||||
@@ -15,5 +15,5 @@ urlpatterns = [
|
||||
path("function-based-view/", views.function_based_view), # $ routeSetup="function-based-view/"
|
||||
path("cookie-test/", views.cookie_test), # $ routeSetup="cookie-test/"
|
||||
path("exception-test/", views.exception_test), # $ routeSetup="exception-test/"
|
||||
path("viewset-entrypoints-test/", views.EntrypointViewSet.as_view()) # $ routeSetup="viewset-entrypoints-test/"
|
||||
path("viewset-entrypoints-test/", views.EntrypointViewSet.as_view({"get": "list"})) # $ routeSetup="viewset-entrypoints-test/"
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user