mirror of
https://github.com/github/codeql.git
synced 2025-12-17 09:13:20 +01:00
186 lines
2.9 KiB
Python
186 lines
2.9 KiB
Python
#Not calling an __init__ method:
|
|
class B1(object):
|
|
|
|
def __init__(self):
|
|
do_something()
|
|
|
|
class B2(B1):
|
|
|
|
def __init__(self):
|
|
B1.__init__(self)
|
|
|
|
class B3(B2):
|
|
|
|
def __init__(self):
|
|
B1.__init__(self)
|
|
|
|
#OK if superclass __init__ is builtin as
|
|
#builtin classes tend to rely on __new__
|
|
class MyException(Exception):
|
|
|
|
def __init__(self):
|
|
self.message = "Uninformative"
|
|
|
|
#ODASA-4107
|
|
class IUT(object):
|
|
def __init__(self):
|
|
print("IUT init")
|
|
|
|
class UT(object):
|
|
def __init__(self):
|
|
print("UT init")
|
|
|
|
class PU(object):
|
|
pass
|
|
|
|
class UVT(UT, PU):
|
|
pass
|
|
|
|
class IUVT(IUT, UVT):
|
|
pass
|
|
|
|
#False positive
|
|
class M1(object):
|
|
def __init__(self):
|
|
print("A")
|
|
|
|
class M2(object):
|
|
pass
|
|
|
|
class Mult(M2, M1):
|
|
def __init__(self):
|
|
super(Mult, self).__init__() # Calls M1.__init__
|
|
|
|
class X:
|
|
def __init__(self):
|
|
do_something()
|
|
|
|
class Y(X):
|
|
@decorated
|
|
def __init__(self):
|
|
X.__init__(self)
|
|
|
|
class Z(Y):
|
|
def __init__(self):
|
|
Y.__init__(self)
|
|
|
|
class AA(object):
|
|
|
|
def __init__(self):
|
|
do_something()
|
|
|
|
class AB(AA):
|
|
|
|
#Don't call super class init
|
|
def __init__(self):
|
|
do_something()
|
|
|
|
class AC(AB):
|
|
|
|
def __init__(self):
|
|
#Missing call to AA.__init__ but not AC's fault.
|
|
super(AC, self).__init__()
|
|
|
|
import six
|
|
import abc
|
|
|
|
class BA(object):
|
|
|
|
def __init__(self):
|
|
do_something()
|
|
|
|
@six.add_metaclass(abc.ABCMeta)
|
|
class BB(BA):
|
|
|
|
def __init__(self):
|
|
super(BB,self).__init__()
|
|
|
|
|
|
@six.add_metaclass(abc.ABCMeta)
|
|
class CA(object):
|
|
|
|
def __init__(self):
|
|
do_something()
|
|
|
|
class CB(BA):
|
|
|
|
def __init__(self):
|
|
super(CB,self).__init__()
|
|
|
|
#ODASA-5799
|
|
class DA(object):
|
|
|
|
def __init__(self):
|
|
do_something()
|
|
|
|
class DB(DA):
|
|
|
|
class DC(DA):
|
|
|
|
def __init__(self):
|
|
sup = super(DB.DC, self)
|
|
sup.__init__()
|
|
|
|
#Simpler variants
|
|
class DD(DA):
|
|
|
|
def __init__(self):
|
|
sup = super(DD, self)
|
|
sup.__init__()
|
|
|
|
class DE(DA):
|
|
|
|
class DF(DA):
|
|
|
|
def __init__(self):
|
|
sup = super(DE.DF, self).__init__()
|
|
|
|
class FA(object):
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
class FB(object):
|
|
|
|
def __init__(self):
|
|
do_something()
|
|
|
|
class FC(FA, FB):
|
|
|
|
def __init__(self):
|
|
#OK to skip call to FA.__init__ as that does nothing.
|
|
FB.__init__(self)
|
|
|
|
#Potential false positives.
|
|
|
|
class ConfusingInit(B1):
|
|
|
|
def __init__(self):
|
|
super_call = super(ConfusingInit, self).__init__
|
|
super_call()
|
|
|
|
|
|
# Library class
|
|
import collections
|
|
|
|
class G1(collections.Counter):
|
|
|
|
def __init__(self):
|
|
collections.Counter.__init__(self)
|
|
|
|
class G2(G1):
|
|
|
|
def __init__(self):
|
|
super(G2, self).__init__()
|
|
|
|
class G3(collections.Counter):
|
|
|
|
def __init__(self):
|
|
super(G3, self).__init__()
|
|
|
|
class G4(G3):
|
|
|
|
def __init__(self):
|
|
G3.__init__(self)
|
|
|