Reports usages of pseudo-functional code if Java Stream API is available.

Though guava Iterable API provides functionality similar to Java Streams API, it's slightly different and may miss some features. Especially, primitive-specialized stream variants like IntStream are more performant than generic variants.

Example:


List<String> transformedIterable = Iterables.transform(someList, someTransformFunction);//warning: Pseudo functional style code

After the quick-fix is applied:

List<String> transformedIterable = someList.stream().map(someTransformFunction).collect(Collectors.toList());

Note: Code semantics can be changed; for example, guava's Iterable.transform produces a lazy-evaluated iterable, but the replacement is eager-evaluated.

Use the Static method calls translated to the 'Stream' API option to configure static method calls that should be translated to the stream API.

This inspection only reports if the language level of the project or module is 8 or higher.