Skip to content

Commit d8b942f

Browse files
committed
Python: Autoformat objects.
1 parent 165dcd3 commit d8b942f

10 files changed

Lines changed: 1250 additions & 1870 deletions

File tree

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

Lines changed: 108 additions & 160 deletions
Large diffs are not rendered by default.

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

Lines changed: 94 additions & 165 deletions
Large diffs are not rendered by default.

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

Lines changed: 70 additions & 175 deletions
Large diffs are not rendered by default.

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

Lines changed: 76 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import python
2-
32
private import semmle.python.objects.TObject
43
private import semmle.python.objects.ObjectInternal
54
private import semmle.python.pointsto.PointsTo
@@ -9,16 +8,11 @@ private import semmle.python.types.Builtins
98

109
/** Class representing property objects in Python */
1110
class PropertyInternal extends ObjectInternal, TProperty {
12-
1311
/** Gets the name of this property */
14-
override string getName() {
15-
result = this.getGetter().getName()
16-
}
12+
override string getName() { result = this.getGetter().getName() }
1713

1814
/** Gets the getter function of this property */
19-
CallableObjectInternal getGetter() {
20-
this = TProperty(_, _, result)
21-
}
15+
CallableObjectInternal getGetter() { this = TProperty(_, _, result) }
2216

2317
private CallNode getCallNode() { this = TProperty(result, _, _) }
2418

@@ -55,11 +49,9 @@ class PropertyInternal extends ObjectInternal, TProperty {
5549
)
5650
}
5751

58-
private Context getContext() { this = TProperty(_,result, _) }
52+
private Context getContext() { this = TProperty(_, result, _) }
5953

60-
override string toString() {
61-
result = "property " + this.getName()
62-
}
54+
override string toString() { result = "property " + this.getName() }
6355

6456
override boolean booleanValue() { result = true }
6557

@@ -79,7 +71,9 @@ class PropertyInternal extends ObjectInternal, TProperty {
7971

8072
override ControlFlowNode getOrigin() { this = TProperty(result, _, _) }
8173

82-
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) { none() }
74+
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) {
75+
none()
76+
}
8377

8478
override predicate callResult(ObjectInternal obj, CfgOrigin origin) { none() }
8579

@@ -89,7 +83,8 @@ class PropertyInternal extends ObjectInternal, TProperty {
8983

9084
override predicate calleeAndOffset(Function scope, int paramOffset) { none() }
9185

92-
pragma [noinline] override predicate attribute(string name, ObjectInternal value, CfgOrigin origin) {
86+
pragma[noinline]
87+
override predicate attribute(string name, ObjectInternal value, CfgOrigin origin) {
9388
value = TPropertySetterOrDeleter(this, name) and origin = CfgOrigin::unknown()
9489
}
9590

@@ -103,20 +98,28 @@ class PropertyInternal extends ObjectInternal, TProperty {
10398

10499
override predicate binds(ObjectInternal cls, string name, ObjectInternal descriptor) { none() }
105100

106-
pragma [noinline] override predicate descriptorGetClass(ObjectInternal cls, ObjectInternal value, CfgOrigin origin) {
101+
pragma[noinline]
102+
override predicate descriptorGetClass(ObjectInternal cls, ObjectInternal value, CfgOrigin origin) {
107103
any(ObjectInternal obj).binds(cls, _, this) and
108-
value = this and origin = CfgOrigin::fromCfgNode(this.getOrigin())
104+
value = this and
105+
origin = CfgOrigin::fromCfgNode(this.getOrigin())
109106
}
110107

111-
pragma [noinline] override predicate descriptorGetInstance(ObjectInternal instance, ObjectInternal value, CfgOrigin origin) {
112-
/* Just give an unknown value for now. We could improve this, but it would mean
108+
pragma[noinline]
109+
override predicate descriptorGetInstance(
110+
ObjectInternal instance, ObjectInternal value, CfgOrigin origin
111+
) {
112+
/*
113+
* Just give an unknown value for now. We could improve this, but it would mean
113114
* changing Contexts to account for property accesses.
114115
*/
116+
115117
exists(ClassObjectInternal cls, string name |
116118
name = this.getName() and
117119
receiver_type(_, name, instance, cls) and
118120
cls.lookup(name, this, _) and
119-
origin = CfgOrigin::unknown() and value = ObjectInternal::unknown()
121+
origin = CfgOrigin::unknown() and
122+
value = ObjectInternal::unknown()
120123
)
121124
}
122125

@@ -128,40 +131,31 @@ class PropertyInternal extends ObjectInternal, TProperty {
128131
override ObjectInternal getIterNext() { none() }
129132

130133
override predicate isNotSubscriptedType() { any() }
131-
132134
}
133135

134136
private class PropertySetterOrDeleter extends ObjectInternal, TPropertySetterOrDeleter {
137+
override string toString() { result = this.getProperty().toString() + "." + this.getName() }
135138

136-
override string toString() {
137-
result = this.getProperty().toString() + "." + this.getName()
138-
}
139+
override string getName() { this = TPropertySetterOrDeleter(_, result) }
139140

140-
override string getName() {
141-
this = TPropertySetterOrDeleter(_, result)
142-
}
143-
144-
PropertyInternal getProperty() {
145-
this = TPropertySetterOrDeleter(result, _)
146-
}
141+
PropertyInternal getProperty() { this = TPropertySetterOrDeleter(result, _) }
147142

148143
override predicate callResult(ObjectInternal obj, CfgOrigin origin) {
149144
exists(ControlFlowNode call |
150-
obj = this.getProperty() and obj = TProperty(call, _, _) and
145+
obj = this.getProperty() and
146+
obj = TProperty(call, _, _) and
151147
origin = CfgOrigin::fromCfgNode(call)
152148
)
153149
}
154150

155-
override predicate introducedAt(ControlFlowNode node, PointsToContext context) {
156-
none()
157-
}
151+
override predicate introducedAt(ControlFlowNode node, PointsToContext context) { none() }
158152

159153
override ClassDecl getClassDeclaration() { none() }
160154

161155
override boolean isClass() { result = false }
162156

163157
override ObjectInternal getClass() {
164-
result = TBuiltinClassObject(Builtin::special("MethodType"))
158+
result = TBuiltinClassObject(Builtin::special("MethodType"))
165159
}
166160

167161
override predicate notTestableForEquality() { none() }
@@ -170,7 +164,9 @@ private class PropertySetterOrDeleter extends ObjectInternal, TPropertySetterOrD
170164

171165
override ControlFlowNode getOrigin() { none() }
172166

173-
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) { none() }
167+
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) {
168+
none()
169+
}
174170

175171
override int intValue() { none() }
176172

@@ -196,23 +192,24 @@ private class PropertySetterOrDeleter extends ObjectInternal, TPropertySetterOrD
196192

197193
override ObjectInternal getIterNext() { none() }
198194

199-
override predicate descriptorGetClass(ObjectInternal cls, ObjectInternal value, CfgOrigin origin) { none() }
195+
override predicate descriptorGetClass(ObjectInternal cls, ObjectInternal value, CfgOrigin origin) {
196+
none()
197+
}
200198

201-
override predicate descriptorGetInstance(ObjectInternal instance, ObjectInternal value, CfgOrigin origin) { none() }
199+
override predicate descriptorGetInstance(
200+
ObjectInternal instance, ObjectInternal value, CfgOrigin origin
201+
) {
202+
none()
203+
}
202204

203205
override predicate useOriginAsLegacyObject() { none() }
204206

205207
override predicate isNotSubscriptedType() { any() }
206-
207208
}
208209

209-
210210
/** A class representing classmethods in Python */
211211
class ClassMethodObjectInternal extends ObjectInternal, TClassMethod {
212-
213-
override string toString() {
214-
result = "classmethod(" + this.getFunction() + ")"
215-
}
212+
override string toString() { result = "classmethod(" + this.getFunction() + ")" }
216213

217214
override boolean booleanValue() { result = true }
218215

@@ -224,9 +221,7 @@ class ClassMethodObjectInternal extends ObjectInternal, TClassMethod {
224221
}
225222

226223
/** Gets the function wrapped by this classmethod object */
227-
CallableObjectInternal getFunction() {
228-
this = TClassMethod(_, result)
229-
}
224+
CallableObjectInternal getFunction() { this = TClassMethod(_, result) }
230225

231226
override ClassDecl getClassDeclaration() { none() }
232227

@@ -240,7 +235,9 @@ class ClassMethodObjectInternal extends ObjectInternal, TClassMethod {
240235

241236
override ControlFlowNode getOrigin() { this = TClassMethod(result, _) }
242237

243-
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) { none() }
238+
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) {
239+
none()
240+
}
244241

245242
override predicate callResult(ObjectInternal obj, CfgOrigin origin) { none() }
246243

@@ -258,26 +255,31 @@ class ClassMethodObjectInternal extends ObjectInternal, TClassMethod {
258255

259256
override boolean isDescriptor() { result = true }
260257

261-
pragma [noinline] override predicate descriptorGetClass(ObjectInternal cls, ObjectInternal value, CfgOrigin origin) {
258+
pragma[noinline]
259+
override predicate descriptorGetClass(ObjectInternal cls, ObjectInternal value, CfgOrigin origin) {
262260
value = TBoundMethod(cls, this.getFunction()) and
263261
origin = CfgOrigin::unknown()
264262
}
265263

266-
pragma [noinline] override predicate descriptorGetInstance(ObjectInternal instance, ObjectInternal value, CfgOrigin origin) {
264+
pragma[noinline]
265+
override predicate descriptorGetInstance(
266+
ObjectInternal instance, ObjectInternal value, CfgOrigin origin
267+
) {
267268
any(ObjectInternal obj).binds(instance, _, this) and
268269
value = TBoundMethod(instance.getClass(), this.getFunction()) and
269270
origin = CfgOrigin::unknown()
270271
}
271272

272-
/** Holds if attribute lookup on this object may "bind" `cls` to `descriptor`.
273+
/**
274+
* Holds if attribute lookup on this object may "bind" `cls` to `descriptor`.
273275
* `cls` will always be a class as this is a classmethod.
274276
* Here "bind" means that `instance` is passed to the `classmethod.__get__()` method
275277
* at runtime. The term "bind" is used as this most likely results in a bound-method.
276278
*/
277-
pragma [noinline] override predicate binds(ObjectInternal cls, string name, ObjectInternal descriptor) {
279+
pragma[noinline]
280+
override predicate binds(ObjectInternal cls, string name, ObjectInternal descriptor) {
278281
descriptor = this.getFunction() and
279-
exists(ObjectInternal instance |
280-
any(ObjectInternal obj).binds(instance, name, this) |
282+
exists(ObjectInternal instance | any(ObjectInternal obj).binds(instance, name, this) |
281283
instance.isClass() = false and cls = instance.getClass()
282284
or
283285
instance.isClass() = true and cls = instance
@@ -286,9 +288,7 @@ class ClassMethodObjectInternal extends ObjectInternal, TClassMethod {
286288

287289
override int length() { none() }
288290

289-
override string getName() {
290-
result = this.getFunction().getName()
291-
}
291+
override string getName() { result = this.getFunction().getName() }
292292

293293
override predicate contextSensitiveCallee() { none() }
294294

@@ -298,14 +298,10 @@ class ClassMethodObjectInternal extends ObjectInternal, TClassMethod {
298298
override ObjectInternal getIterNext() { none() }
299299

300300
override predicate isNotSubscriptedType() { any() }
301-
302301
}
303302

304303
class StaticMethodObjectInternal extends ObjectInternal, TStaticMethod {
305-
306-
override string toString() {
307-
result = "staticmethod()"
308-
}
304+
override string toString() { result = "staticmethod()" }
309305

310306
override boolean booleanValue() { result = true }
311307

@@ -316,9 +312,7 @@ class StaticMethodObjectInternal extends ObjectInternal, TStaticMethod {
316312
)
317313
}
318314

319-
CallableObjectInternal getFunction() {
320-
this = TStaticMethod(_, result)
321-
}
315+
CallableObjectInternal getFunction() { this = TStaticMethod(_, result) }
322316

323317
override ClassDecl getClassDeclaration() { none() }
324318

@@ -332,7 +326,9 @@ class StaticMethodObjectInternal extends ObjectInternal, TStaticMethod {
332326

333327
override ControlFlowNode getOrigin() { this = TStaticMethod(result, _) }
334328

335-
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) { none() }
329+
override predicate callResult(PointsToContext callee, ObjectInternal obj, CfgOrigin origin) {
330+
none()
331+
}
336332

337333
override predicate callResult(ObjectInternal obj, CfgOrigin origin) { none() }
338334

@@ -352,23 +348,29 @@ class StaticMethodObjectInternal extends ObjectInternal, TStaticMethod {
352348

353349
override boolean isDescriptor() { result = true }
354350

355-
pragma [noinline] override predicate descriptorGetClass(ObjectInternal cls, ObjectInternal value, CfgOrigin origin) {
351+
pragma[noinline]
352+
override predicate descriptorGetClass(ObjectInternal cls, ObjectInternal value, CfgOrigin origin) {
356353
any(ObjectInternal obj).binds(cls, _, this) and
357-
value = this.getFunction() and origin = CfgOrigin::unknown()
354+
value = this.getFunction() and
355+
origin = CfgOrigin::unknown()
358356
}
359357

360-
pragma [noinline] override predicate descriptorGetInstance(ObjectInternal instance, ObjectInternal value, CfgOrigin origin) {
358+
pragma[noinline]
359+
override predicate descriptorGetInstance(
360+
ObjectInternal instance, ObjectInternal value, CfgOrigin origin
361+
) {
361362
any(ObjectInternal obj).binds(instance, _, this) and
362-
value = this.getFunction() and origin = CfgOrigin::unknown()
363+
value = this.getFunction() and
364+
origin = CfgOrigin::unknown()
363365
}
364366

365-
override predicate binds(ObjectInternal instance, string name, ObjectInternal descriptor) { none() }
367+
override predicate binds(ObjectInternal instance, string name, ObjectInternal descriptor) {
368+
none()
369+
}
366370

367371
override int length() { none() }
368372

369-
override string getName() {
370-
result = this.getFunction().getName()
371-
}
373+
override string getName() { result = this.getFunction().getName() }
372374

373375
override predicate contextSensitiveCallee() { none() }
374376

@@ -378,5 +380,4 @@ class StaticMethodObjectInternal extends ObjectInternal, TStaticMethod {
378380
override ObjectInternal getIterNext() { none() }
379381

380382
override predicate isNotSubscriptedType() { any() }
381-
382383
}

0 commit comments

Comments
 (0)