Da Sonarcube in einem anderen Thread aufgetaucht ist, habe ich jetzt einfach einmal paar Tests damit gemacht und u.a. SonarLint in IntelliJ als PlugIn hinzu gefügt.
Nun werden aber einfache Streams angemeckert. Hintergrund ist, dass Stream<T> Autoclosable implementiert und ich da kein try-with-resource habe ...
Also z.B. einfach etwas wie:
Mal paar Details mit ... vereinfacht - denn das tut ja nichts zur Sache. Ist halt ein typischer Stream - er wird geöffnet, es wird damit etwas gemacht (filter, map, ...) um dann am Ende damit etwas zu machen (forEach, collect, ...)
Da ist - ganz klar - kein try with resource drin. Und das macht doch auch wenig Sinn.
Und interessant ist: Diese Regel nimmt einige Klassen aus, wenn man https://rules.sonarsource.com/java/RSPEC-2095/ anschaut.... Aber diese funktionalen Aufrufe sind doch ok.
Erwarte ich hier einfach zu viel? Bei anderen statischen codeanalysetools musste ich ja auch "Law of demeter" oder so deaktivieren, weil das sonst diese Dinge anmeckerte....
Nun werden aber einfache Streams angemeckert. Hintergrund ist, dass Stream<T> Autoclosable implementiert und ich da kein try-with-resource habe ...
Also z.B. einfach etwas wie:
Java:
Files.lines(Paths.get(...))
.map(...)
.filter(...)
.forEach(...);
Mal paar Details mit ... vereinfacht - denn das tut ja nichts zur Sache. Ist halt ein typischer Stream - er wird geöffnet, es wird damit etwas gemacht (filter, map, ...) um dann am Ende damit etwas zu machen (forEach, collect, ...)
Da ist - ganz klar - kein try with resource drin. Und das macht doch auch wenig Sinn.
Und interessant ist: Diese Regel nimmt einige Klassen aus, wenn man https://rules.sonarsource.com/java/RSPEC-2095/ anschaut.... Aber diese funktionalen Aufrufe sind doch ok.
Erwarte ich hier einfach zu viel? Bei anderen statischen codeanalysetools musste ich ja auch "Law of demeter" oder so deaktivieren, weil das sonst diese Dinge anmeckerte....