mirror of
https://github.com/github/codeql.git
synced 2025-12-18 09:43:15 +01:00
140 lines
1.8 KiB
Python
140 lines
1.8 KiB
Python
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import sys
|
|
|
|
|
|
#Statement has no effect (4 statements, 3 of which are violations)
|
|
"Not a docstring" # This is acceptable as strings can be used as comments.
|
|
len
|
|
sys.argv + []
|
|
3 == 4
|
|
|
|
#The 'sys' statements have an effect
|
|
try:
|
|
sys
|
|
except:
|
|
do_something()
|
|
|
|
def exec_used(val):
|
|
exec (val)
|
|
|
|
#This has an effect:
|
|
def effectful(y):
|
|
[x for x in y]
|
|
|
|
|
|
#Not a redundant assignment if a property.
|
|
class WithProp(object):
|
|
|
|
@property
|
|
def x(self):
|
|
return self._x
|
|
|
|
@prop.setter
|
|
def set_x(self, x):
|
|
side_effect(x)
|
|
self._x = x
|
|
|
|
def meth(self):
|
|
self.x = self.x
|
|
|
|
#Accessing a property has an effect:
|
|
def prop_acc():
|
|
p = WithProp()
|
|
p.x
|
|
|
|
|
|
def mydecorator(func):
|
|
return property(fget=func)
|
|
|
|
class X(object):
|
|
|
|
@mydecorator
|
|
def deco(self):
|
|
pass
|
|
|
|
def func(self):
|
|
pass
|
|
|
|
x = X()
|
|
x.deco
|
|
x.deco + 2
|
|
|
|
#No effect
|
|
x.func
|
|
|
|
#Cannot infer what attribute is, so be conservative
|
|
x.thing
|
|
other_thing.func
|
|
|
|
#Name Error
|
|
|
|
try:
|
|
unicode
|
|
except NameError:
|
|
#Python 3
|
|
unicode = str
|
|
|
|
try:
|
|
ascii
|
|
except NameError:
|
|
#Python 2
|
|
def ascii(obj):
|
|
pass
|
|
|
|
|
|
#Overridden operator. yuck.
|
|
class Horrible(object):
|
|
|
|
def __add__(self, other):
|
|
fire_missiles_at(other)
|
|
|
|
def __lt__(self, other):
|
|
fire_guns_at(other)
|
|
|
|
|
|
def possible_fps(x):
|
|
h = Horrible()
|
|
h + "innocent bystander"
|
|
h < "upstanding citizen"
|
|
x - 3 #True positive
|
|
|
|
|
|
# Forgotten raise.
|
|
|
|
def do_action_forgotten_raise(action):
|
|
if action == "go":
|
|
start()
|
|
elif action == "stop":
|
|
stop()
|
|
else:
|
|
ValueError(action)
|
|
|
|
def do_action(action):
|
|
if action == "go":
|
|
start()
|
|
elif action == "stop":
|
|
stop()
|
|
else:
|
|
raise ValueError(action)
|
|
|
|
#Python 2 print
|
|
print >> out, message
|
|
|