Запретить скобки после подписи метода в коде Java - PullRequest
0 голосов
/ 19 декабря 2018

Недавно в моем проекте я столкнулся с кодом, который прекрасно компилируется, однако очень удивителен для любого читателя и не должен проходить статический анализ.

class BracketsAfterMethodSignature {
  Object emptyArray()[] {
    return new Object[]{};
  }
}

Мы используем Checkstyle, PMD, ErrorProne и SonarLint, нони один из этих инструментов не жалуется на такую ​​конструкцию.Есть ли какое-либо правило, которое можно включить или инструмент, который можно использовать для предотвращения такого кода?

Очевидно, ArrayTypeStyle Checkstyle не включает такой случай.

EDIT

Я выполнял статический анализ файла с расширением .groovy, и SonarLint сказал, что этот код в порядке.После изменения расширения на .java обнаружена проблема.И действительно, после обновления до 8.18 Checkstyle также определяет его правильно.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Checkstyle's ArrayTypeStyle будет поддерживать нарушения печати в определениях методов, когда скобки помещаются в имя метода вместо возвращаемого типа, начиная с версии 8.18.

См. https://github.com/checkstyle/checkstyle/issues/6301

0 голосов
/ 20 декабря 2018

У сонара есть правило squid: S1195 Обозначения массива "[]" должны быть расположены после типа в сигнатурах метода

Это правило по умолчанию включено в качестве "сонарного пути"профиль для Java и классифицирует его как "Code Smell", серьезность по умолчанию "minor".

Поэтому SonarLint должен выделить код в вопросе - в моем тесте плагин eclipse "SonarLint для Eclipse" версия 4.0.0.201810170711 правильно разместил маркер на открывающей скобке после объявления метода (в проекте без настроенного соединения с сервером SonarQube).Версия Eclipse была 2018-09 (4.9.0).

...