-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Expand file tree
/
Copy pathDeadField.ql
More file actions
36 lines (34 loc) · 1.02 KB
/
DeadField.ql
File metadata and controls
36 lines (34 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* @name Dead field
* @description Fields that are never read are likely unnecessary.
* @kind problem
* @problem.severity recommendation
* @precision medium
* @id java/dead-field
* @tags quality
* maintainability
* useless-code
* external/cwe/cwe-561
*/
import java
import semmle.code.java.deadcode.DeadCode
from DeadField f, Element origin, string reason
where
not f.getFile().isKotlinSourceFile() and
not origin.getFile().isKotlinSourceFile() and
not f.isInDeadScope() and
if f.getAnAccess() instanceof FieldRead
then (
if exists(getADeadRoot(f.getAnAccess().(FieldRead).getEnclosingCallable()))
then (
origin = getADeadRoot(f.getAnAccess().(FieldRead).getEnclosingCallable()) and
reason = " is only read from dead code originating at $@."
) else (
origin = f and
reason = " is only read from a dead-code cycle."
)
) else (
origin = f and
reason = " is entirely unread."
)
select f, "The field " + f.getName() + reason, origin, origin.getName()