2016-04-29 16 views
11

Ho un codice successivo:Sonar vuole chiudere il flusso

private Stream<Field> getStreamWithAccessibleFields(final Object object) { 
    return Arrays.stream(object.getClass() 
      .getDeclaredFields()).peek(field -> field.setAccessible(true)); 
} 

Sonar mi butta un problema: [MINOR] Chiudi "Stream". calamaro: S2095. Qualcuno può dare un consiglio, come posso gestire questo problema?

+0

Quindi Sonar fa un doppio errore. Innanzitutto, ci sono flussi che potrebbero non richiedere la chiusura, in secondo luogo, la chiusura di una risorsa restituita al chiamante sarebbe errata per qualsiasi tipo di "AutoCloseable" ... – Holger

+0

Tuttavia, preferirei l'operazione di massa per l'efficienza: 'Campo [] fields = object.getClass() .getDeclaredFields(); AccessibleObject.setAccessible (fields, true); restituire Arrays.stream (campi); ' – Holger

risposta

10

Questo è un falso positivo che è già stato risolto e che sarà presto rilasciato con SonarQube Java 3.14.

Per ulteriori riferimenti, consultare SONARJAVA-1478.

+0

Uh? Link non è morto. –

+0

Ahh .. La rete della mia azienda mi ha impedito di accedere a quel collegamento. Mi scuso per aver perso tempo. –