Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e161488

Browse files
committed
Python points-to. Improve API bey renaming a couple of methods and clarifying a few comments.
1 parent 1018f27 commit e161488

9 files changed

Lines changed: 77 additions & 71 deletions

File tree

python/ql/src/semmle/python/objects/Callables.qll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,15 @@ class PythonFunctionObjectInternal extends CallableObjectInternal, TPythonFuncti
6767
result = "Function " + this.getScope().getQualifiedName()
6868
}
6969

70-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
70+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
7171
this = TPythonFunctionObject(node) and context.appliesTo(node)
7272
}
7373

7474
override ObjectInternal getClass() {
7575
result = TBuiltinClassObject(Builtin::special("FunctionType"))
7676
}
7777

78-
override boolean isComparable() { result = true }
78+
override boolean testableForEquality() { result = true }
7979

8080
override Builtin getBuiltin() {
8181
none()
@@ -182,15 +182,15 @@ class BuiltinFunctionObjectInternal extends CallableObjectInternal, TBuiltinFunc
182182
result = "Builtin-function " + this.getBuiltin().getName()
183183
}
184184

185-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
185+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
186186
none()
187187
}
188188

189189
override ObjectInternal getClass() {
190190
result = TBuiltinClassObject(this.getBuiltin().getClass())
191191
}
192192

193-
override boolean isComparable() { result = true }
193+
override boolean testableForEquality() { result = true }
194194

195195
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) { none() }
196196

@@ -295,11 +295,11 @@ class BuiltinMethodObjectInternal extends CallableObjectInternal, TBuiltinMethod
295295
result = TBuiltinClassObject(this.getBuiltin().getClass())
296296
}
297297

298-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
298+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
299299
none()
300300
}
301301

302-
override boolean isComparable() { result = true }
302+
override boolean testableForEquality() { result = true }
303303

304304
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) { none() }
305305

@@ -396,11 +396,11 @@ class BoundMethodObjectInternal extends CallableObjectInternal, TBoundMethod {
396396
result = TBuiltinClassObject(Builtin::special("MethodType"))
397397
}
398398

399-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
399+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
400400
none()
401401
}
402402

403-
override boolean isComparable() { result = false }
403+
override boolean testableForEquality() { result = false }
404404

405405
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) {
406406
this.getFunction().callResult(callee, obj, origin)

python/ql/src/semmle/python/objects/Classes.qll

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class PythonClassObjectInternal extends ClassObjectInternal, TPythonClassObject
103103
result = "class " + this.getScope().getName()
104104
}
105105

106-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
106+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
107107
this = TPythonClassObject(node) and context.appliesTo(node)
108108
}
109109

@@ -145,7 +145,7 @@ class PythonClassObjectInternal extends ClassObjectInternal, TPythonClassObject
145145
none()
146146
}
147147

148-
override boolean isComparable() { result = true }
148+
override boolean testableForEquality() { result = true }
149149

150150
override predicate functionAndOffset(CallableObjectInternal function, int offset) {
151151
this.lookup("__init__", function, _) and offset = 1
@@ -164,7 +164,7 @@ class BuiltinClassObjectInternal extends ClassObjectInternal, TBuiltinClassObjec
164164
result = "builtin-class " + this.getBuiltin().getName()
165165
}
166166

167-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
167+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
168168
none()
169169
}
170170

@@ -203,7 +203,7 @@ class BuiltinClassObjectInternal extends ClassObjectInternal, TBuiltinClassObjec
203203
none()
204204
}
205205

206-
override boolean isComparable() { result = true }
206+
override boolean testableForEquality() { result = true }
207207

208208
}
209209

@@ -222,11 +222,11 @@ class UnknownClassInternal extends ClassObjectInternal, TUnknownClass {
222222
result = this
223223
}
224224

225-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
225+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
226226
none()
227227
}
228228

229-
override boolean isComparable() { result = false }
229+
override boolean testableForEquality() { result = false }
230230

231231
override Builtin getBuiltin() {
232232
result = Builtin::unknownType()
@@ -271,11 +271,11 @@ class TypeInternal extends ClassObjectInternal, TType {
271271
result = this
272272
}
273273

274-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
274+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
275275
none()
276276
}
277277

278-
override boolean isComparable() { result = true }
278+
override boolean testableForEquality() { result = true }
279279

280280
override Builtin getBuiltin() {
281281
result = Builtin::special("type")
@@ -342,15 +342,15 @@ class DynamicallyCreatedClass extends ClassObjectInternal, TDynamicClass {
342342

343343
pragma [noinline] override predicate attributesUnknown() { any() }
344344

345-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
345+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
346346
this = TDynamicClass(node, _, context)
347347
}
348348

349349
override predicate calleeAndOffset(Function scope, int paramOffset) {
350350
none()
351351
}
352352

353-
override boolean isComparable() { result = true }
353+
override boolean testableForEquality() { result = true }
354354

355355
override ClassDecl getClassDeclaration() { none() }
356356

python/ql/src/semmle/python/objects/Constants.qll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ abstract class ConstantObjectInternal extends ObjectInternal {
2020

2121
override boolean isClass() { result = false }
2222

23-
override boolean isComparable() { result = true }
23+
override boolean testableForEquality() { result = true }
2424

2525
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) {
2626
// Constants aren't callable
@@ -98,7 +98,7 @@ private class TrueObjectInternal extends BooleanObjectInternal, TTrue {
9898
result = true
9999
}
100100

101-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
101+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
102102
node.(NameNode).getId() = "True" and context.appliesTo(node)
103103
}
104104

@@ -122,7 +122,7 @@ private class FalseObjectInternal extends BooleanObjectInternal, TFalse {
122122
result = false
123123
}
124124

125-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
125+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
126126
node.(NameNode).getId() = "False" and context.appliesTo(node)
127127
}
128128

@@ -150,7 +150,7 @@ private class NoneObjectInternal extends ConstantObjectInternal, TNone {
150150
result = TBuiltinClassObject(Builtin::special("NoneType"))
151151
}
152152

153-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
153+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
154154
node.(NameNode).getId() = "None" and context.appliesTo(node)
155155
}
156156

@@ -177,7 +177,7 @@ private class IntObjectInternal extends ConstantObjectInternal, TInt {
177177
result = "int " + this.intValue().toString()
178178
}
179179

180-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
180+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
181181
context.appliesTo(node) and
182182
node.getNode().(IntegerLiteral).getValue() = this.intValue()
183183
}
@@ -218,7 +218,7 @@ private class FloatObjectInternal extends ConstantObjectInternal, TFloat {
218218
)
219219
}
220220

221-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
221+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
222222
context.appliesTo(node) and
223223
node.getNode().(FloatLiteral).getValue() = this.floatValue()
224224
}
@@ -260,7 +260,7 @@ private class UnicodeObjectInternal extends ConstantObjectInternal, TUnicode {
260260
result = "'" + this.strValue() + "'"
261261
}
262262

263-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
263+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
264264
context.appliesTo(node) and
265265
node.getNode().(StrConst).getText() = this.strValue() and
266266
node.getNode().(StrConst).isUnicode()
@@ -301,7 +301,7 @@ private class BytesObjectInternal extends ConstantObjectInternal, TBytes {
301301
result = "'" + this.strValue() + "'"
302302
}
303303

304-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
304+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
305305
context.appliesTo(node) and
306306
node.getNode().(StrConst).getText() = this.strValue() and
307307
not node.getNode().(StrConst).isUnicode()

python/ql/src/semmle/python/objects/Descriptors.qll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class PropertyInternal extends ObjectInternal, TProperty {
3737

3838
override boolean booleanValue() { result = true }
3939

40-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
40+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
4141
this = TProperty(node, context, _)
4242
}
4343

@@ -47,7 +47,7 @@ class PropertyInternal extends ObjectInternal, TProperty {
4747

4848
override ObjectInternal getClass() { result = ObjectInternal::property() }
4949

50-
override boolean isComparable() { result = true }
50+
override boolean testableForEquality() { result = true }
5151

5252
override Builtin getBuiltin() { none() }
5353

@@ -102,7 +102,7 @@ class ClassMethodObjectInternal extends ObjectInternal, TClassMethod {
102102

103103
override boolean booleanValue() { result = true }
104104

105-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
105+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
106106
exists(CallableObjectInternal function |
107107
this = TClassMethod(node, function) and
108108
class_method(node, function, context)
@@ -120,7 +120,7 @@ class ClassMethodObjectInternal extends ObjectInternal, TClassMethod {
120120

121121
override ObjectInternal getClass() { result = ObjectInternal::classMethod() }
122122

123-
override boolean isComparable() { result = true }
123+
override boolean testableForEquality() { result = true }
124124

125125
override Builtin getBuiltin() { none() }
126126

@@ -177,7 +177,7 @@ class StaticMethodObjectInternal extends ObjectInternal, TStaticMethod {
177177

178178
override boolean booleanValue() { result = true }
179179

180-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
180+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
181181
exists(CallableObjectInternal function |
182182
this = TStaticMethod(node, function) and
183183
static_method(node, function, context)
@@ -194,7 +194,7 @@ class StaticMethodObjectInternal extends ObjectInternal, TStaticMethod {
194194

195195
override ObjectInternal getClass() { result = ObjectInternal::builtin("staticmethod") }
196196

197-
override boolean isComparable() { result = true }
197+
override boolean testableForEquality() { result = true }
198198

199199
override Builtin getBuiltin() { none() }
200200

python/ql/src/semmle/python/objects/Instances.qll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class SpecificInstanceInternal extends TSpecificInstance, InstanceObject {
6363
result = maybe()
6464
}
6565

66-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
66+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
6767
this = TSpecificInstance(node, _, context)
6868
}
6969

@@ -74,7 +74,7 @@ class SpecificInstanceInternal extends TSpecificInstance, InstanceObject {
7474

7575
override boolean isClass() { result = false }
7676

77-
override boolean isComparable() { result = true }
77+
override boolean testableForEquality() { result = true }
7878

7979
override ObjectInternal getClass() {
8080
this = TSpecificInstance(_, result, _)
@@ -166,7 +166,7 @@ class SelfInstanceInternal extends TSelfInstance, InstanceObject {
166166
result = maybe()
167167
}
168168

169-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
169+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
170170
none()
171171
}
172172

@@ -181,7 +181,7 @@ class SelfInstanceInternal extends TSelfInstance, InstanceObject {
181181

182182
override boolean isClass() { result = false }
183183

184-
override boolean isComparable() { result = false }
184+
override boolean testableForEquality() { result = false }
185185

186186
override ObjectInternal getClass() {
187187
this = TSelfInstance(_, _, result)
@@ -266,7 +266,7 @@ class UnknownInstanceInternal extends TUnknownInstance, ObjectInternal {
266266
result = maybe()
267267
}
268268

269-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
269+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
270270
none()
271271
}
272272

@@ -277,7 +277,7 @@ class UnknownInstanceInternal extends TUnknownInstance, ObjectInternal {
277277

278278
override boolean isClass() { result = false }
279279

280-
override boolean isComparable() { result = false }
280+
override boolean testableForEquality() { result = false }
281281

282282
override ObjectInternal getClass() {
283283
this = TUnknownInstance(result)
@@ -375,7 +375,7 @@ class SuperInstance extends TSuperInstance, ObjectInternal {
375375

376376
override boolean booleanValue() { result = true }
377377

378-
override predicate introduced(ControlFlowNode node, PointsToContext context) {
378+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
379379
exists(ObjectInternal self, ClassObjectInternal startclass |
380380
super_instantiation(node, self, startclass, context) and
381381
this = TSuperInstance(self, startclass)
@@ -400,7 +400,7 @@ class SuperInstance extends TSuperInstance, ObjectInternal {
400400
result = ObjectInternal::superType()
401401
}
402402

403-
override boolean isComparable() { result = false }
403+
override boolean testableForEquality() { result = false }
404404

405405
override Builtin getBuiltin() { none() }
406406

0 commit comments

Comments
 (0)