Skip to content

Commit ef80263

Browse files
committed
Java: Add models for java.util.stream.
1 parent 5d63a76 commit ef80263

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

java/ql/lib/semmle/code/java/dataflow/ExternalFlow.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ private module Frameworks {
9191
private import semmle.code.java.frameworks.JsonJava
9292
private import semmle.code.java.frameworks.Objects
9393
private import semmle.code.java.frameworks.Optional
94+
private import semmle.code.java.frameworks.Stream
9495
private import semmle.code.java.frameworks.Strings
9596
private import semmle.code.java.frameworks.spring.SpringCache
9697
private import semmle.code.java.frameworks.spring.SpringHttp
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/** Definitions related to `java.util.stream`. */
2+
3+
import semmle.code.java.dataflow.ExternalFlow
4+
5+
private class StreamModel extends SummaryModelCsv {
6+
override predicate row(string s) {
7+
s =
8+
[
9+
"java.util.stream;BaseStream;false;iterator;();;Element of Argument[-1];Element of ReturnValue;value",
10+
"java.util.stream;BaseStream;false;onClose;(Runnable);;Element of Argument[-1];Element of ReturnValue;value",
11+
"java.util.stream;BaseStream;false;parallel;();;Element of Argument[-1];Element of ReturnValue;value",
12+
"java.util.stream;BaseStream;false;sequential;();;Element of Argument[-1];Element of ReturnValue;value",
13+
"java.util.stream;BaseStream;false;spliterator;();;Element of Argument[-1];Element of ReturnValue;value",
14+
"java.util.stream;BaseStream;false;unordered;();;Element of Argument[-1];Element of ReturnValue;value",
15+
"java.util.stream;Stream;false;allMatch;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
16+
"java.util.stream;Stream;false;anyMatch;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
17+
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;ReturnValue of Argument[0];Parameter[0] of Argument[1];value",
18+
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;Parameter[0] of Argument[1];ReturnValue;value",
19+
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;Parameter[0] of Argument[1];Parameter[0..1] of Argument[2];value",
20+
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;Parameter[0..1] of Argument[2];Parameter[0] of Argument[1];value",
21+
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;Element of Argument[-1];Parameter[1] of Argument[1];value",
22+
// Missing: collect(Collector<T,A,R> collector)
23+
"java.util.stream;Stream;false;concat;(Stream,Stream);;Element of Argument[0..1];Element of ReturnValue;value",
24+
"java.util.stream;Stream;false;distinct;();;Element of Argument[-1];Element of ReturnValue;value",
25+
"java.util.stream;Stream;false;dropWhile;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
26+
"java.util.stream;Stream;false;dropWhile;(Predicate);;Element of Argument[-1];Element of ReturnValue;value",
27+
"java.util.stream;Stream;false;filter;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
28+
"java.util.stream;Stream;false;filter;(Predicate);;Element of Argument[-1];Element of ReturnValue;value",
29+
"java.util.stream;Stream;false;findAny;();;Element of Argument[-1];Element of ReturnValue;value",
30+
"java.util.stream;Stream;false;findFirst;();;Element of Argument[-1];Element of ReturnValue;value",
31+
"java.util.stream;Stream;false;flatMap;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
32+
"java.util.stream;Stream;false;flatMap;(Function);;Element of ReturnValue of Argument[0];Element of ReturnValue;value",
33+
"java.util.stream;Stream;false;flatMapToDouble;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
34+
"java.util.stream;Stream;false;flatMapToInt;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
35+
"java.util.stream;Stream;false;flatMapToLong;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
36+
"java.util.stream;Stream;false;forEach;(Consumer);;Element of Argument[-1];Parameter[0] of Argument[0];value",
37+
"java.util.stream;Stream;false;forEachOrdered;(Consumer);;Element of Argument[-1];Parameter[0] of Argument[0];value",
38+
"java.util.stream;Stream;false;generate;(Supplier);;ReturnValue of Argument[0];Element of ReturnValue;value",
39+
"java.util.stream;Stream;false;iterate;(Object,Predicate,UnaryOperator);;Argument[0];Element of ReturnValue;value",
40+
"java.util.stream;Stream;false;iterate;(Object,Predicate,UnaryOperator);;Argument[0];Parameter[0] of Argument[1..2];value",
41+
"java.util.stream;Stream;false;iterate;(Object,Predicate,UnaryOperator);;ReturnValue of Argument[2];Element of ReturnValue;value",
42+
"java.util.stream;Stream;false;iterate;(Object,Predicate,UnaryOperator);;ReturnValue of Argument[2];Parameter[0] of Argument[1..2];value",
43+
"java.util.stream;Stream;false;iterate;(Object,UnaryOperator);;Argument[0];Element of ReturnValue;value",
44+
"java.util.stream;Stream;false;iterate;(Object,UnaryOperator);;Argument[0];Parameter[0] of Argument[1];value",
45+
"java.util.stream;Stream;false;iterate;(Object,UnaryOperator);;ReturnValue of Argument[1];Element of ReturnValue;value",
46+
"java.util.stream;Stream;false;iterate;(Object,UnaryOperator);;ReturnValue of Argument[1];Parameter[0] of Argument[1];value",
47+
"java.util.stream;Stream;false;limit;(long);;Element of Argument[-1];Element of ReturnValue;value",
48+
"java.util.stream;Stream;false;map;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
49+
"java.util.stream;Stream;false;map;(Function);;ReturnValue of Argument[0];Element of ReturnValue;value",
50+
"java.util.stream;Stream;false;mapToDouble;(ToDoubleFunction);;Element of Argument[-1];Parameter[0] of Argument[0];value",
51+
"java.util.stream;Stream;false;mapToInt;(ToIntFunction);;Element of Argument[-1];Parameter[0] of Argument[0];value",
52+
"java.util.stream;Stream;false;mapToLong;(ToLongFunction);;Element of Argument[-1];Parameter[0] of Argument[0];value",
53+
"java.util.stream;Stream;false;max;(Comparator);;Element of Argument[-1];Element of ReturnValue;value",
54+
"java.util.stream;Stream;false;max;(Comparator);;Element of Argument[-1];Parameter[0..1] of Argument[0];value",
55+
"java.util.stream;Stream;false;min;(Comparator);;Element of Argument[-1];Element of ReturnValue;value",
56+
"java.util.stream;Stream;false;min;(Comparator);;Element of Argument[-1];Parameter[0..1] of Argument[0];value",
57+
"java.util.stream;Stream;false;noneMatch;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
58+
"java.util.stream;Stream;false;of;(Object);;Argument[0];Element of ReturnValue;value",
59+
"java.util.stream;Stream;false;of;(Object[]);;ArrayElement of Argument[0];Element of ReturnValue;value",
60+
"java.util.stream;Stream;false;ofNullable;(Object);;Argument[0];Element of ReturnValue;value",
61+
"java.util.stream;Stream;false;peek;(Consumer);;Element of Argument[-1];Parameter[0] of Argument[0];value",
62+
"java.util.stream;Stream;false;peek;(Consumer);;Element of Argument[-1];Element of ReturnValue;value",
63+
"java.util.stream;Stream;false;reduce;(BinaryOperator);;Element of Argument[-1];Parameter[0..1] of Argument[0];value",
64+
"java.util.stream;Stream;false;reduce;(BinaryOperator);;Element of Argument[-1];Element of ReturnValue;value",
65+
"java.util.stream;Stream;false;reduce;(BinaryOperator);;ReturnValue of Argument[0];Parameter[0..1] of Argument[0];value",
66+
"java.util.stream;Stream;false;reduce;(BinaryOperator);;ReturnValue of Argument[0];Element of ReturnValue;value",
67+
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;Element of Argument[-1];Parameter[0..1] of Argument[1];value",
68+
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;Argument[0];Parameter[0..1] of Argument[1];value",
69+
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;Argument[0];ReturnValue;value",
70+
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;ReturnValue of Argument[1];Parameter[0..1] of Argument[1];value",
71+
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;ReturnValue of Argument[1];ReturnValue;value",
72+
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;Element of Argument[-1];Parameter[1] of Argument[1];value",
73+
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;Argument[0];Parameter[0] of Argument[1];value",
74+
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;Argument[0];Parameter[0..1] of Argument[2];value",
75+
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;Argument[0];ReturnValue;value",
76+
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;ReturnValue of Argument[1..2];Parameter[0] of Argument[1];value",
77+
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;ReturnValue of Argument[1..2];Parameter[0..1] of Argument[2];value",
78+
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;ReturnValue of Argument[1..2];ReturnValue;value",
79+
"java.util.stream;Stream;false;skip;(long);;Element of Argument[-1];Element of ReturnValue;value",
80+
"java.util.stream;Stream;false;sorted;;;Element of Argument[-1];Element of ReturnValue;value",
81+
"java.util.stream;Stream;false;sorted;(Comparator);;Element of Argument[-1];Parameter[0..1] of Argument[0];value",
82+
"java.util.stream;Stream;false;takeWhile;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
83+
"java.util.stream;Stream;false;takeWhile;(Predicate);;Element of Argument[-1];Element of ReturnValue;value",
84+
"java.util.stream;Stream;false;toArray;;;Element of Argument[-1];ArrayElement of ReturnValue;value"
85+
]
86+
}
87+
}

0 commit comments

Comments
 (0)