Skip to content

Commit c632e8f

Browse files
authored
Merge pull request #20448 from github/alexet/avoid-path-node-java
Java: Eliminate pointless use of PathNodes over DataFlow::Node
2 parents 13dc17c + f5134e3 commit c632e8f

File tree

1 file changed

+16
-24
lines changed
  • java/ql/lib/experimental/quantum

1 file changed

+16
-24
lines changed

java/ql/lib/experimental/quantum/JCA.qll

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -613,40 +613,32 @@ module JCAModel {
613613

614614
module GetInstanceToInitToUseFlow = DataFlow::GlobalWithState<GetInstanceToInitToUseConfig>;
615615

616-
GetInstance getInstantiationFromUse(
617-
Use use, GetInstanceToInitToUseFlow::PathNode src, GetInstanceToInitToUseFlow::PathNode sink
618-
) {
619-
src.getNode().asExpr() = result and
620-
sink.getNode().asExpr() = use.(MethodCall).getQualifier() and
621-
GetInstanceToInitToUseFlow::flowPath(src, sink)
616+
GetInstance getInstantiationFromUse(Use use, DataFlow::Node src, DataFlow::Node sink) {
617+
src.asExpr() = result and
618+
sink.asExpr() = use.(MethodCall).getQualifier() and
619+
GetInstanceToInitToUseFlow::flow(src, sink)
622620
}
623621

624-
GetInstance getInstantiationFromInit(
625-
Init init, GetInstanceToInitToUseFlow::PathNode src, GetInstanceToInitToUseFlow::PathNode sink
626-
) {
627-
src.getNode().asExpr() = result and
628-
sink.getNode().asExpr() = init.(MethodCall).getQualifier() and
629-
GetInstanceToInitToUseFlow::flowPath(src, sink)
622+
GetInstance getInstantiationFromInit(Init init, DataFlow::Node src, DataFlow::Node sink) {
623+
src.asExpr() = result and
624+
sink.asExpr() = init.(MethodCall).getQualifier() and
625+
GetInstanceToInitToUseFlow::flow(src, sink)
630626
}
631627

632-
Init getInitFromUse(
633-
Use use, GetInstanceToInitToUseFlow::PathNode src, GetInstanceToInitToUseFlow::PathNode sink
634-
) {
635-
src.getNode().asExpr() = result.(MethodCall).getQualifier() and
636-
sink.getNode().asExpr() = use.(MethodCall).getQualifier() and
637-
GetInstanceToInitToUseFlow::flowPath(src, sink)
628+
Init getInitFromUse(Use use, DataFlow::Node src, DataFlow::Node sink) {
629+
src.asExpr() = result.(MethodCall).getQualifier() and
630+
sink.asExpr() = use.(MethodCall).getQualifier() and
631+
GetInstanceToInitToUseFlow::flow(src, sink)
638632
}
639633

640634
predicate hasInit(Use use) { exists(getInitFromUse(use, _, _)) }
641635

642-
Use getAnIntermediateUseFromFinalUse(
643-
Use final, GetInstanceToInitToUseFlow::PathNode src, GetInstanceToInitToUseFlow::PathNode sink
644-
) {
636+
Use getAnIntermediateUseFromFinalUse(Use final, DataFlow::Node src, DataFlow::Node sink) {
645637
not final.isIntermediate() and
646638
result.isIntermediate() and
647-
src.getNode().asExpr() = result.(MethodCall).getQualifier() and
648-
sink.getNode().asExpr() = final.(MethodCall).getQualifier() and
649-
GetInstanceToInitToUseFlow::flowPath(src, sink)
639+
src.asExpr() = result.(MethodCall).getQualifier() and
640+
sink.asExpr() = final.(MethodCall).getQualifier() and
641+
GetInstanceToInitToUseFlow::flow(src, sink)
650642
}
651643
}
652644

0 commit comments

Comments
 (0)