Skip to content

Commit 2db039f

Browse files
authored
Merge pull request github#6673 from Marcono1234/marcono1234/clone-method-models
Java: Remove duplicate classes modeling Object.clone
2 parents dde07fd + d117593 commit 2db039f

File tree

2 files changed

+9
-16
lines changed

2 files changed

+9
-16
lines changed

java/ql/src/Advisory/Java Objects/AvoidCloneMethodAccess.ql

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,10 @@
1111

1212
import java
1313

14-
class ObjectCloneMethod extends Method {
15-
ObjectCloneMethod() {
16-
this.getDeclaringType() instanceof TypeObject and
17-
this.getName() = "clone" and
18-
this.hasNoParameters()
19-
}
20-
}
21-
22-
from MethodAccess ma, ObjectCloneMethod clone
23-
where ma.getMethod().overrides(clone)
14+
from MethodAccess ma, Method m
15+
where
16+
m = ma.getMethod() and
17+
m instanceof CloneMethod and
18+
// But ignore direct calls to Object.clone
19+
not m.getDeclaringType() instanceof TypeObject
2420
select ma, "Invoking a method that overrides clone() should be avoided."

java/ql/src/Advisory/Java Objects/AvoidCloneOverride.ql

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,13 @@
1111

1212
import java
1313

14-
class ObjectCloneMethod extends Method {
15-
ObjectCloneMethod() {
16-
this.getDeclaringType() instanceof TypeObject and
17-
this.getName() = "clone" and
18-
this.hasNoParameters()
19-
}
14+
class ObjectCloneMethod extends CloneMethod {
15+
ObjectCloneMethod() { this.getDeclaringType() instanceof TypeObject }
2016
}
2117

2218
from Method m, ObjectCloneMethod clone
2319
where
2420
m.fromSource() and
21+
// Only consider direct overrides of Object.clone
2522
m.overrides(clone)
2623
select m, "Overriding the Object.clone() method should be avoided."

0 commit comments

Comments
 (0)