mirror of
https://github.com/github/codeql.git
synced 2025-12-20 18:56:32 +01:00
This is slightly dubious, and should really be in the currently unimplemented "def" counterpart to the "use" bits we already have. However, it seems to work correctly, and in the spirit of moving things along, this seemed like the easier solution. We can always replace the implementation with the "proper" approach at a later point.
103 lines
4.0 KiB
Python
103 lines
4.0 KiB
Python
import a1 #$ use=moduleImport("a1")
|
|
|
|
x = a1.blah1 #$ use=moduleImport("a1").getMember("blah1")
|
|
|
|
import a2 as m2 #$ use=moduleImport("a2")
|
|
|
|
x2 = m2.blah2 #$ use=moduleImport("a2").getMember("blah2")
|
|
|
|
import a3.b3 as m3 #$ use=moduleImport("a3").getMember("b3")
|
|
|
|
x3 = m3.blah3 #$ use=moduleImport("a3").getMember("b3").getMember("blah3")
|
|
|
|
from a4.b4 import c4 as m4 #$ use=moduleImport("a4").getMember("b4").getMember("c4")
|
|
|
|
x4 = m4.blah4 #$ use=moduleImport("a4").getMember("b4").getMember("c4").getMember("blah4")
|
|
|
|
import a.b.c.d #$ use=moduleImport("a")
|
|
|
|
ab = a.b #$ use=moduleImport("a").getMember("b")
|
|
|
|
abc = ab.c #$ use=moduleImport("a").getMember("b").getMember("c")
|
|
|
|
abcd = abc.d #$ use=moduleImport("a").getMember("b").getMember("c").getMember("d")
|
|
|
|
x5 = abcd.method() #$ use=moduleImport("a").getMember("b").getMember("c").getMember("d").getMember("method").getReturn()
|
|
|
|
from a6 import m6 #$ use=moduleImport("a6").getMember("m6")
|
|
|
|
x6 = m6().foo().bar() #$ use=moduleImport("a6").getMember("m6").getReturn().getMember("foo").getReturn().getMember("bar").getReturn()
|
|
|
|
import foo.baz.baz as fbb #$ use=moduleImport("foo").getMember("baz").getMember("baz")
|
|
from foo.bar.baz import quux as fbbq #$ use=moduleImport("foo").getMember("bar").getMember("baz").getMember("quux")
|
|
from ham.bar.eggs import spam as hbes #$ use=moduleImport("ham").getMember("bar").getMember("eggs").getMember("spam")
|
|
fbb.quux #$ use=moduleImport("foo").getMember("baz").getMember("baz").getMember("quux")
|
|
fbbq #$ use=moduleImport("foo").getMember("bar").getMember("baz").getMember("quux")
|
|
hbes #$ use=moduleImport("ham").getMember("bar").getMember("eggs").getMember("spam")
|
|
|
|
import foo.bar.baz #$ use=moduleImport("foo")
|
|
|
|
# Relative imports. These are ignored
|
|
|
|
from .foo import bar
|
|
|
|
from ..foobar import baz
|
|
|
|
|
|
# Use of imports across scopes
|
|
|
|
def use_m4():
|
|
x = m4.blah4 #$ use=moduleImport("a4").getMember("b4").getMember("c4").getMember("blah4")
|
|
|
|
def local_import_use():
|
|
from foo import bar #$ use=moduleImport("foo").getMember("bar")
|
|
|
|
x = bar() #$ use=moduleImport("foo").getMember("bar").getReturn()
|
|
|
|
from eggs import ham as spam #$ use=moduleImport("eggs").getMember("ham")
|
|
|
|
def bbb():
|
|
f = spam #$ use=moduleImport("eggs").getMember("ham")
|
|
|
|
from danger import SOURCE #$ use=moduleImport("danger").getMember("SOURCE")
|
|
|
|
foo = SOURCE #$ use=moduleImport("danger").getMember("SOURCE")
|
|
|
|
def change_foo():
|
|
global foo
|
|
foo = SOURCE #$ use=moduleImport("danger").getMember("SOURCE")
|
|
|
|
def f():
|
|
global foo
|
|
sink(foo) #$ use=moduleImport("danger").getMember("SOURCE")
|
|
foo = NONSOURCE
|
|
change_foo()
|
|
sink(foo) #$ use=moduleImport("danger").getMember("SOURCE")
|
|
|
|
# Star imports
|
|
|
|
from unknown import * #$ use=moduleImport("unknown")
|
|
|
|
hello() #$ MISSING: use=moduleImport("unknown").getMember("hello").getReturn()
|
|
|
|
|
|
# Subclasses
|
|
|
|
from flask.views import View #$ use=moduleImport("flask").getMember("views").getMember("View")
|
|
|
|
class MyView(View): #$ use=moduleImport("flask").getMember("views").getMember("View").getASubclass()
|
|
myvar = 45 #$ use=moduleImport("flask").getMember("views").getMember("View").getASubclass().getMember("myvar")
|
|
def my_method(self): #$ use=moduleImport("flask").getMember("views").getMember("View").getASubclass().getMember("my_method")
|
|
pass
|
|
|
|
instance = MyView() #$ use=moduleImport("flask").getMember("views").getMember("View").getASubclass().getReturn()
|
|
|
|
def internal():
|
|
from pflask.views import View #$ use=moduleImport("pflask").getMember("views").getMember("View")
|
|
class IntMyView(View): #$ use=moduleImport("pflask").getMember("views").getMember("View").getASubclass()
|
|
my_internal_var = 35 #$ use=moduleImport("pflask").getMember("views").getMember("View").getASubclass().getMember("my_internal_var")
|
|
def my_internal_method(self): #$ use=moduleImport("pflask").getMember("views").getMember("View").getASubclass().getMember("my_internal_method")
|
|
pass
|
|
|
|
int_instance = IntMyView() #$ use=moduleImport("pflask").getMember("views").getMember("View").getASubclass().getReturn()
|