Java: Add models for java.util.stream.

This commit is contained in:
Anders Schack-Mulligen
2021-09-28 15:20:56 +02:00
parent 5d63a76e25
commit ef80263106
2 changed files with 88 additions and 0 deletions

View File

@@ -91,6 +91,7 @@ private module Frameworks {
private import semmle.code.java.frameworks.JsonJava
private import semmle.code.java.frameworks.Objects
private import semmle.code.java.frameworks.Optional
private import semmle.code.java.frameworks.Stream
private import semmle.code.java.frameworks.Strings
private import semmle.code.java.frameworks.spring.SpringCache
private import semmle.code.java.frameworks.spring.SpringHttp

View File

@@ -0,0 +1,87 @@
/** Definitions related to `java.util.stream`. */
import semmle.code.java.dataflow.ExternalFlow
private class StreamModel extends SummaryModelCsv {
override predicate row(string s) {
s =
[
"java.util.stream;BaseStream;false;iterator;();;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;BaseStream;false;onClose;(Runnable);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;BaseStream;false;parallel;();;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;BaseStream;false;sequential;();;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;BaseStream;false;spliterator;();;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;BaseStream;false;unordered;();;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;allMatch;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;anyMatch;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;ReturnValue of Argument[0];Parameter[0] of Argument[1];value",
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;Parameter[0] of Argument[1];ReturnValue;value",
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;Parameter[0] of Argument[1];Parameter[0..1] of Argument[2];value",
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;Parameter[0..1] of Argument[2];Parameter[0] of Argument[1];value",
"java.util.stream;Stream;false;collect;(Supplier,BiConsumer,BiConsumer);;Element of Argument[-1];Parameter[1] of Argument[1];value",
// Missing: collect(Collector<T,A,R> collector)
"java.util.stream;Stream;false;concat;(Stream,Stream);;Element of Argument[0..1];Element of ReturnValue;value",
"java.util.stream;Stream;false;distinct;();;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;dropWhile;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;dropWhile;(Predicate);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;filter;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;filter;(Predicate);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;findAny;();;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;findFirst;();;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;flatMap;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;flatMap;(Function);;Element of ReturnValue of Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;flatMapToDouble;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;flatMapToInt;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;flatMapToLong;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;forEach;(Consumer);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;forEachOrdered;(Consumer);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;generate;(Supplier);;ReturnValue of Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;iterate;(Object,Predicate,UnaryOperator);;Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;iterate;(Object,Predicate,UnaryOperator);;Argument[0];Parameter[0] of Argument[1..2];value",
"java.util.stream;Stream;false;iterate;(Object,Predicate,UnaryOperator);;ReturnValue of Argument[2];Element of ReturnValue;value",
"java.util.stream;Stream;false;iterate;(Object,Predicate,UnaryOperator);;ReturnValue of Argument[2];Parameter[0] of Argument[1..2];value",
"java.util.stream;Stream;false;iterate;(Object,UnaryOperator);;Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;iterate;(Object,UnaryOperator);;Argument[0];Parameter[0] of Argument[1];value",
"java.util.stream;Stream;false;iterate;(Object,UnaryOperator);;ReturnValue of Argument[1];Element of ReturnValue;value",
"java.util.stream;Stream;false;iterate;(Object,UnaryOperator);;ReturnValue of Argument[1];Parameter[0] of Argument[1];value",
"java.util.stream;Stream;false;limit;(long);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;map;(Function);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;map;(Function);;ReturnValue of Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;mapToDouble;(ToDoubleFunction);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;mapToInt;(ToIntFunction);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;mapToLong;(ToLongFunction);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;max;(Comparator);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;max;(Comparator);;Element of Argument[-1];Parameter[0..1] of Argument[0];value",
"java.util.stream;Stream;false;min;(Comparator);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;min;(Comparator);;Element of Argument[-1];Parameter[0..1] of Argument[0];value",
"java.util.stream;Stream;false;noneMatch;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;of;(Object);;Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;of;(Object[]);;ArrayElement of Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;ofNullable;(Object);;Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;peek;(Consumer);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;peek;(Consumer);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;reduce;(BinaryOperator);;Element of Argument[-1];Parameter[0..1] of Argument[0];value",
"java.util.stream;Stream;false;reduce;(BinaryOperator);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;reduce;(BinaryOperator);;ReturnValue of Argument[0];Parameter[0..1] of Argument[0];value",
"java.util.stream;Stream;false;reduce;(BinaryOperator);;ReturnValue of Argument[0];Element of ReturnValue;value",
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;Element of Argument[-1];Parameter[0..1] of Argument[1];value",
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;Argument[0];Parameter[0..1] of Argument[1];value",
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;Argument[0];ReturnValue;value",
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;ReturnValue of Argument[1];Parameter[0..1] of Argument[1];value",
"java.util.stream;Stream;false;reduce;(Object,BinaryOperator);;ReturnValue of Argument[1];ReturnValue;value",
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;Element of Argument[-1];Parameter[1] of Argument[1];value",
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;Argument[0];Parameter[0] of Argument[1];value",
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;Argument[0];Parameter[0..1] of Argument[2];value",
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;Argument[0];ReturnValue;value",
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;ReturnValue of Argument[1..2];Parameter[0] of Argument[1];value",
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;ReturnValue of Argument[1..2];Parameter[0..1] of Argument[2];value",
"java.util.stream;Stream;false;reduce;(Object,BiFunction,BinaryOperator);;ReturnValue of Argument[1..2];ReturnValue;value",
"java.util.stream;Stream;false;skip;(long);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;sorted;;;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;sorted;(Comparator);;Element of Argument[-1];Parameter[0..1] of Argument[0];value",
"java.util.stream;Stream;false;takeWhile;(Predicate);;Element of Argument[-1];Parameter[0] of Argument[0];value",
"java.util.stream;Stream;false;takeWhile;(Predicate);;Element of Argument[-1];Element of ReturnValue;value",
"java.util.stream;Stream;false;toArray;;;Element of Argument[-1];ArrayElement of ReturnValue;value"
]
}
}