Как игнорировать предупреждение CheckStyle об отсутствии @throws для метода испытаний? - PullRequest
5 голосов
/ 26 января 2012

Меня преследуют предупреждения CheckStyle об отсутствии @throws в JavaDoc тестовых методов.

Я использую такой метод тестирования:

/**
 * Check that something works. <== CheckStyle wants @throws here
 */
@Test
public void testSomething() throws Exception {
  ...
}

Существует ли настраиваемый способ указать CheckStyle игнорировать это?

Предложение "throws" есть , особенно , потому что это тестовый метод; где обычно обработка исключений игнорируется.

Ответы [ 4 ]

4 голосов
/ 28 ноября 2012

Очень подходящий подход:
иметь одно правило checkStyle для src кода и другое для test.
В eclipse вы можете настроить это в Project-> Properties-> Checkstyle.

Правила проверки стиля для src не всегда подходят для тестового кода, как показано OP в приведенном выше примере. Другими возможными правилами, которые нужно отключить в тесте, будет проверка MagicNumber.

Если вам нужно отключить одну или несколько проверок для следующих N строк в src, Вы должны настроить: (см. также http://checkstyle.sourceforge.net/config.html)

Чтобы настроить фильтр так, чтобы CHECKSTYLE IGNORE проверял FOR NEXT var LINES избегает запуска любых проверок для данной проверки на текущий строка и следующие строки var (всего var + 1 строки):

 <module name="SuppressWithNearbyCommentFilter">
     <property name="commentFormat" value="CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES"/>
     <property name="checkFormat" value="$1"/>
     <property name="influenceFormat" value="$2"/> </module>

Тогда в вашем коде src или test вы можете отключить определенные Checkstyle правила с помощью

    /**
     * Tests worker1.
     */
    //CHECKSTYLE IGNORE <Rule> 1
    public void testWorker1() throws Exception {
    }

Где "Rule" - это имя правила, посмотрите по ссылке выше.
Для игнорирования ограничения длины строки до 80 символов, для 10 строк комментарием будет

//CHECKSTYLE IGNORE Line 100

Ваши дальнейшие правила могут объединять:

//CHECKSTYLE IGNORE Line|MethodLength 100

И если вы очень серьезный разработчик, вы можете добавить комментарий, почему вы делаете это:

//CHECKSTYLE IGNORE Catch 1  Last line of defense: need to catch Exception
2 голосов
/ 26 января 2012

Да. Вы можете указать фильтр подавления для ошибок контрольного стиля для определенных файлов. См. Checkstyle 5.5, раздел SuppressionFilter . Оттуда

Фильтр SuppressionFilter отклоняет события аудита для ошибок проверки в соответствии с подавленным XML-документом в файле. Если нет настроенного файла подавлений, фильтр принимает все события аудита.

<module name="SuppressionFilter">
    <property name="file" value="docs/suppressions.xml"/>
</module>

XML-документ подавлений содержит набор элементов подавления, где каждый элемент подавления может иметь следующие атрибуты:

  • files - регулярное выражение, сопоставленное с именем файла связан с событием аудита. Это обязательно.
  • чеки - это регулярное выражение сопоставляется с именем связанной проверки с событием аудита. Необязательно, если указан идентификатор.
  • id - строка сопоставляется с идентификатором проверки, связанной с событием аудита. Необязательно, если указаны проверки.
  • строк - разделенный запятыми список значения, где каждое значение представляет собой целое число или диапазон целых чисел, обозначенных по целому-целому Это необязательно.
  • столбцы - через запятую список значений, где каждое значение представляет собой целое число или диапазон целых чисел обозначается целым числом-целым числом. Это необязательно.

Каждое событие аудита проверяется для каждого элемента подавления. это подавляется, если все указанные атрибуты соответствуют событию аудита.

Так что в вашем случае вы могли бы сделать что-то вроде:

<suppressions>
   <suppress checks="JavadocStyleCheck" files="*Test.java"/>
</suppressions>

Я не уверен, действительно ли JavadocStyleCheck - это чек, который вы хотите удалить, но посмотрите в документации больше.

1 голос
/ 05 октября 2015

Вы можете добавить это перед каждым методом или только один раз перед классом, содержащим их:

@SuppressWarnings("checkstyle:javadocmethod")
0 голосов
/ 31 марта 2017

@ SuppressWarnings ("checkstyle: javadocmethod") - это аннотация, используемая для подавления предупреждений для методов получения и установки или любого метода в Java, где вам не нужен javadoc

...