Как подавить все проверки для файла в Checkstyle? - PullRequest
52 голосов
/ 18 июня 2009

Я делаю переопределение для стороннего класса и хочу отменить все проверки для него (поскольку я сохраняю его только до тех пор, пока патч не будет принят).

Есть ли способ подавить все проверки файла?

Я пытался использовать "*", но это не удалось.

Ответы [ 7 ]

57 голосов
/ 19 июня 2009

Не знаю, используете ли вы командную строку или IDE, но вам, в основном, понадобится файл с расширениями. Если вы редактируете файл конфигурации Checkstyle вручную, добавьте в него новый модуль:

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

Ваш mysuppression.xml может быть что-то вроде:

<?xml version="1.0"?>

<!DOCTYPE suppressions PUBLIC
    "-//Puppy Crawl//DTD Suppressions 1.1//EN"
    "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">

<suppressions>
    <suppress files="TheClassToIgnore\.java" checks="[a-zA-Z0-9]*"/>
</suppressions>

Значение атрибута "files" в основном является регулярным выражением для ваших исходных файлов, а значение атрибута "checks" является регулярным выражением для проверки, что пропустить ("[a-zA-Z0-9]*" в основном означает пропустить все) , Я думаю, это тот шаблон, который вы ищете?

24 голосов
/ 19 июня 2009

Мне удалось подавить проверки в файле, добавив тег SuppressionCommentFilter в свой файлcs.xml:

Сначала я добавил тег FileContentHolder в качестве дочернего элемента тега TreeWalker (этот шаг не необходим с версии 8.1 com.puppycrawl.tools:checkstyle):

<module name="TreeWalker">
    ...
    <module name="FileContentsHolder"/>
    ...
</module>

Затем я добавил SuppressionCommentFilter в check.xml (начиная с версии 8.1 com.puppycrawl.tools:checkstyle - под узлом «TreeWalker»):

<module name="SuppressionCommentFilter"/>

В каждый файл, который я хотел подавить проверки, я вставил следующий комментарий в первую строку файла:

// CHECKSTYLE:OFF
17 голосов
/ 24 февраля 2012

Ответ aberrant80 очень помог. С его подсказкой - используя сопоставление с образцом регулярных выражений, я также смог подавить контрольный стиль для всего пакета, добавив его в файл checkstyle-suppressions.xml. Например, чтобы пропустить проверки контрольного стиля для всех автоматически сгенерированных java-файлов в пакете jaxb,

    <suppressions>
        <suppress checks="[a-zA-Z0-9]*" files="[\\/]jaxb[\\/]" />
    </suppressions>
7 голосов
/ 18 июня 2009

Если вы используете плагин Checkclipse Eclipse для Checkstyle, вы можете включить или исключить шаблоны файлов (включая каталоги), перейдя на вкладку Checkclipse> File Filter под свойствами проекта. Например, мой проект содержит каталоги src и test на верхнем уровне. Я хочу, чтобы Checkstyle применялся только к файлам в каталоге src (без учета test ), поэтому я добавил шаблон включения, который выглядит так:

src/.+java$

Как видите, он использует синтаксис в стиле регулярных выражений для спецификации шаблона.

2 голосов
/ 17 января 2018

@ aberrant80 очень вдохновляет, хотя в моем проекте это не сработало. Чтобы подавить любые предупреждения, которые checkstyle ищет в Foo.java, в соответствии с link , если используется maven:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    ...
        <configuration>
            ...
            <configLocation>checkstyle.xml</configLocation>
            <suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
            ...
        </configuration>                
    ...
</plugin>

И в checkstyle-suppressions.xml

<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <suppress files="Foo.java" checks="[a-zA-Z0-9]*" />
</suppressions>

Пока самая высокая версия 1.1 (1.2 не существует).

0 голосов
/ 19 июня 2009

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

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

Если вы немного погуглите - возможно, вы найдете несколько файлов свойств конфигурации Checkstyle, в которых есть примеры того, что вы ищете. Я бы посоветовал после того, как вы это сделаете - сохранить его как небольшой шаблон, чтобы вы могли обратиться к нему в будущих ситуациях

0 голосов
/ 18 июня 2009

Существует возможность игнорировать файлы, защищенные от записи. Или файлы в пакете.

...