2016-04-29 2 views
11

У меня есть следующий код:Sonar хочет закрыть поток

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

Sonar бросает мне вопрос: [НЕБОЛЬШОЙ] Закрыть это «поток». кальмар: S2095. Может кто-нибудь дать совет, как я могу справиться с этой проблемой?

+0

Сонар делает двойную ошибку. Во-первых, есть потоки, которые могут не требовать закрытия, во-вторых, закрытие ресурса, возвращаемого вызывающему, было бы неправильным для любого типа «AutoCloseable» ... – Holger

+0

Тем не менее, я бы предпочел большую операцию для эффективности: 'Поле [] fields = object.getClass() .getDeclaredFields(); AccessibleObject.setAccessible (поля, true); return Arrays.stream (поля); ' – Holger

ответ

10

Это ложный позитив, который уже исправлен и вскоре будет выпущен с помощью SonarQube Java 3.14.

Для дополнительной информации, пожалуйста, проверьте SONARJAVA-1478.

+0

? Ссылка не мертва. –

+0

Ahh .. Сеть моей компании мешала мне получить доступ к этой ссылке. Приношу извинения за то, что трачу ваше время. –

Смежные вопросы