Döngü için birçok eski stilin yerine Java 8 akışları kullanıyorum ve bir grup sonuçla özet istatistikleri üretin.IntStream ne zaman kapalı? SonarQube S2095 IntStream için yanlış bir pozitif mi?
int messages = IntStream.rangeClosed(0, 7).map(ids::get).reduce(Integer::sum).getAsInt();
Not: Örneğin ben yukarıda göstermek sayım yapmak için başka yolları da vardır biliyorum. Sorumu açıklamak için böyle yapıyorum.
SonarQube 5.3'ü Java 3.9 eklentisiyle kullanıyorum. Bu yapılandırmada, yukarıdaki kod satırı bana S2095 kalamar kuralının ihlali verir: "Kaynaklar kapatılmalıdır." Otomatik Kapanabilir (ör. FileInputStream) açılıp açılmadığını, ancak asla kapanmadığını görmeyi beklediğim sonuç budur.
Yani benim sorum şu: Terminal işlemi reduce
akışı kapatıyor mu? Olmalı mı? Yoksa kalamar yönetiminde bu yanlış bir pozitif mi?
'' IntStream'' tarafından '' 'BaseStream''' sınıfından miras alınan' '' OnClose (Runnable closeHandler) '' metoduna sahiptir. Bu işleyici kullanılarak akış kapatıldığında veya kapatılmadığında inceleyebilirsiniz. – saka1029
Monitörü https://jira.sonarsource.com/browse/SONARJAVA-1478 – PaoloC