Wann ist ein IntStream tatsächlich geschlossen? Ist SonarQube S2095 für IntStream falsch positiv?

Ich verwende Java 8-Streams anstelle vieler alter Loops, um eine Reihe von Ergebnissen zu durchlaufen und zusammenfassende Statistiken zu erstellen. Beispielsweise

int messages = IntStream.rangeClosed(0, 7).map(ids::get).reduce(Integer::sum).getAsInt();

Hinweis: Ich weiß, dass es andere Möglichkeiten gibt, das oben gezeigte Zählen durchzuführen. Ich mache das so, um meine Frage zu veranschaulichen.

Ich verwende SonarQube 5.3 mit dem Java 3.9-Plugin. In dieser Konfiguration verstößt die obige Codezeile gegen die Squid-Regel S2095: "Ressourcen sollten geschlossen werden." Das ist das Ergebnis, das ich erwarten würde, wenn ein AutoCloseable (z. B. ein FileInputStream) geöffnet, aber nie geschlossen wurde.

Also hier ist meine Frage: Funktioniert das Terminal?reduce den Stream schließen? Sollte es? Oder ist das in der Tintenfischregel falsch positiv?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage