Skip to content

Commit 49521f6

Browse files
committed
Refactor tests which extends Configuration
1 parent 66f971e commit 49521f6

File tree

7 files changed

+65
-64
lines changed

7 files changed

+65
-64
lines changed
Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
3-
import DataFlow
43

54
StringLiteral src() { result.getCompilationUnit().fromSource() }
65

7-
class Conf extends Configuration {
8-
Conf() { this = "qq capture" }
6+
module Config implements DataFlow::ConfigSig {
7+
predicate isSource(DataFlow::Node n) { n.asExpr() = src() }
98

10-
override predicate isSource(Node n) { n.asExpr() = src() }
11-
12-
override predicate isSink(Node n) { any() }
9+
predicate isSink(DataFlow::Node n) { any() }
1310
}
1411

15-
from Node src, Node sink, Conf conf
16-
where conf.hasFlow(src, sink)
12+
module Flow = DataFlow::Global<Config>;
13+
14+
from DataFlow::Node src, DataFlow::Node sink
15+
where Flow::flow(src, sink)
1716
select src, sink
Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
3-
import DataFlow
43

5-
class Conf extends Configuration {
6-
Conf() { this = "qqconf" }
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) { n.asExpr().(MethodAccess).getMethod().hasName("source") }
76

8-
override predicate isSource(Node n) { n.asExpr().(MethodAccess).getMethod().hasName("source") }
9-
10-
override predicate isSink(Node n) { n.asExpr().(Argument).getCall().getCallee().hasName("sink") }
7+
predicate isSink(DataFlow::Node n) { n.asExpr().(Argument).getCall().getCallee().hasName("sink") }
118
}
129

13-
from Conf conf, Node src, Node sink
14-
where conf.hasFlow(src, sink)
10+
module Flow = DataFlow::Global<Config>;
11+
12+
from DataFlow::Node src, DataFlow::Node sink
13+
where Flow::flow(src, sink)
1514
select src, sink
Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
3-
import DataFlow
43

5-
class Conf extends Configuration {
6-
Conf() { this = "qqconf" }
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) { n.asExpr().(MethodAccess).getMethod().hasName("source") }
76

8-
override predicate isSource(Node n) { n.asExpr().(MethodAccess).getMethod().hasName("source") }
9-
10-
override predicate isSink(Node n) { any() }
7+
predicate isSink(DataFlow::Node n) { any() }
118
}
129

13-
from Conf c, Node sink
14-
where c.hasFlow(_, sink)
10+
module Flow = DataFlow::Global<Config>;
11+
12+
from DataFlow::Node sink
13+
where Flow::flowTo(sink)
1514
select sink
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
3-
import DataFlow
43

5-
class Conf extends Configuration {
6-
Conf() { this = "taintgettersetter" }
4+
module Config implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node n) { n.asExpr().(MethodAccess).getMethod().hasName("taint") }
76

8-
override predicate isSource(Node n) { n.asExpr().(MethodAccess).getMethod().hasName("taint") }
9-
10-
override predicate isSink(Node n) {
7+
predicate isSink(DataFlow::Node n) {
118
exists(MethodAccess sink |
129
sink.getAnArgument() = n.asExpr() and sink.getMethod().hasName("sink")
1310
)
1411
}
1512

16-
override predicate isAdditionalFlowStep(Node n1, Node n2) {
13+
predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) {
1714
exists(AddExpr add |
1815
add.getType() instanceof TypeString and add.getAnOperand() = n1.asExpr() and n2.asExpr() = add
1916
)
2017
}
2118
}
2219

23-
from Node src, Node sink, Conf conf
24-
where conf.hasFlow(src, sink)
20+
module Flow = DataFlow::Global<Config>;
21+
22+
from DataFlow::Node src, DataFlow::Node sink
23+
where Flow::flow(src, sink)
2524
select src, sink
Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import java
22
import semmle.code.java.dataflow.TaintTracking
3-
import DataFlow
43

54
predicate step(Expr e1, Expr e2) {
65
exists(MethodAccess ma |
@@ -17,28 +16,35 @@ predicate isSink0(Expr sink) {
1716
)
1817
}
1918

20-
class Conf1 extends Configuration {
21-
Conf1() { this = "testconf1" }
19+
module FirstConfig implements DataFlow::ConfigSig {
20+
predicate isSource(DataFlow::Node n) { n.asExpr().(MethodAccess).getMethod().hasName("src") }
2221

23-
override predicate isSource(Node n) { n.asExpr().(MethodAccess).getMethod().hasName("src") }
22+
predicate isSink(DataFlow::Node n) { any() }
2423

25-
override predicate isSink(Node n) { any() }
26-
27-
override predicate isAdditionalFlowStep(Node n1, Node n2) { step(n1.asExpr(), n2.asExpr()) }
24+
predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) {
25+
step(n1.asExpr(), n2.asExpr())
26+
}
2827
}
2928

30-
class Conf2 extends Configuration {
31-
Conf2() { this = "testconf2" }
29+
module FirstFlow = DataFlow::Global<FirstConfig>;
3230

33-
override predicate isSource(Node n) { n.asExpr().(MethodAccess).getMethod().hasName("src") }
31+
module SecondConfig implements DataFlow::ConfigSig {
32+
predicate isSource(DataFlow::Node n) { n.asExpr().(MethodAccess).getMethod().hasName("src") }
3433

35-
override predicate isSink(Node n) { isSink0(n.asExpr()) }
34+
predicate isSink(DataFlow::Node n) { isSink0(n.asExpr()) }
3635

37-
override predicate isAdditionalFlowStep(Node n1, Node n2) { step(n1.asExpr(), n2.asExpr()) }
36+
predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) {
37+
step(n1.asExpr(), n2.asExpr())
38+
}
3839
}
3940

41+
module SecondFlow = DataFlow::Global<SecondConfig>;
42+
4043
from int i1, int i2
4144
where
42-
i1 = count(Node src, Node sink, Conf1 c | c.hasFlow(src, sink) and isSink0(sink.asExpr())) and
43-
i2 = count(Node src, Node sink, Conf2 c | c.hasFlow(src, sink))
45+
i1 =
46+
count(DataFlow::Node src, DataFlow::Node sink |
47+
FirstFlow::flow(src, sink) and isSink0(sink.asExpr())
48+
) and
49+
i2 = count(DataFlow::Node src, DataFlow::Node sink | SecondFlow::flow(src, sink))
4450
select i1, i2
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
import java
22
import semmle.code.java.dataflow.DataFlow
3-
import DataFlow
43

5-
class ThisFlowConfig extends Configuration {
6-
ThisFlowConfig() { this = "ThisFlowConfig" }
7-
8-
override predicate isSource(Node src) {
9-
exists(PostUpdateNode cie | cie.asExpr() instanceof ClassInstanceExpr |
4+
module ThisFlowConfig implements DataFlow::ConfigSig {
5+
predicate isSource(DataFlow::Node src) {
6+
exists(DataFlow::PostUpdateNode cie | cie.asExpr() instanceof ClassInstanceExpr |
107
cie.getPreUpdateNode() = src or cie = src
118
)
129
}
1310

14-
override predicate isSink(Node sink) { any() }
11+
predicate isSink(DataFlow::Node sink) { any() }
1512
}
1613

17-
from Node n, ThisFlowConfig conf
18-
where conf.hasFlow(_, n)
14+
module ThisFlow = DataFlow::Global<ThisFlowConfig>;
15+
16+
from DataFlow::Node n
17+
where ThisFlow::flowTo(n)
1918
select n

java/ql/test/library-tests/dataflow/typepruning/test.ql

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,16 @@ import java
22
import semmle.code.java.dataflow.DataFlow
33
import DataFlow
44

5-
class Conf extends Configuration {
6-
Conf() { this = "test types" }
5+
module Config implements DataFlow::ConfigSig {
6+
predicate isSource(Node n) { n.asExpr().(MethodAccess).getMethod().hasName("source") }
77

8-
override predicate isSource(Node n) { n.asExpr().(MethodAccess).getMethod().hasName("source") }
9-
10-
override predicate isSink(Node n) {
8+
predicate isSink(Node n) {
119
exists(MethodAccess sink |
1210
sink.getAnArgument() = n.asExpr() and sink.getMethod().hasName("sink")
1311
)
1412
}
1513

16-
override predicate isAdditionalFlowStep(Node n1, Node n2) {
14+
predicate isAdditionalFlowStep(Node n1, Node n2) {
1715
exists(MethodAccess ma |
1816
ma.getMethod().hasName("customStep") and
1917
ma.getAnArgument() = n1.asExpr() and
@@ -22,6 +20,8 @@ class Conf extends Configuration {
2220
}
2321
}
2422

25-
from Node src, Node sink, Conf conf
26-
where conf.hasFlow(src, sink)
23+
module Flow = DataFlow::Global<Config>;
24+
25+
from Node src, Node sink
26+
where Flow::flow(src, sink)
2727
select src, sink, sink.getEnclosingCallable()

0 commit comments

Comments
 (0)