Вопрос по java – Как подавить все проверки для файла в Checkstyle?

51

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

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

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

это все здесьcheckstyle.sourceforge.net/config.html#SuppressionFilter Blundell

Ваш Ответ

6   ответов
17

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

    <suppressions>
        <suppress checks="[a-zA-Z0-9]*" files="[\\/]jaxb[\\/]" />
    </suppressions>
Вы можете просто использовать.* заchecks а также/jaxb/ заfiles если ваш символ разделителя пути/.
0

защищенные от записи. Или файлы в пакете.

Я использую checkstyle через Eclipse. Для этого есть свойство проекта.
Знаете ли вы команду, используемую для игнорирования файлов в пакете? Alceu Costa
57

используете ли вы командную строку или 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>

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

[a-zA-Z0-9]* кажется чрезмерным, почему бы и нет? вы просто используете.*?
Чтобы пропустить все проверки во всех файлах в каталогах (пакетах) с именем & quot; генерируется & quot ;, необходимо использовать шаблон регулярных выражений<suppress checks="[a-zA-Z0-9]*" files="[\\/]generated[\\/]" />   Мне было действительно немного трудно найти правильный шаблон дляfiles параметр.
Не помогает мне. У вас нет доступа к серверу, и архитекторы вряд ли его предоставят. Надеялся на что-то вроде @SupressWarnings (& quot; com.puppycrawl.tools. * & Quot;)
Хм ... ты используешь IDE? Я боюсь, что не могу вам больше помочь, потому что вышеизложенное в основном является упрощенной версией того, что я настроил для своей текущей работы - в основном это была группа сгенерированных классов с одинаковыми именами, которые мы хотим, чтобы Checkstyle игнорировал, поэтому мы проигнорировали особый шаблон в названии.
Это именно то, что я ищу. Но это не сработало. Должен ли я установить конфигурацию контрольного стиля где-нибудь, чтобы использовать «файлы»? и «чеки»; атрибуты как регулярные выражения? Я вижу, что в уже существующих тегах suppres 'не используется' file 'apos; атрибут как регулярное выражение: т.е. файлы = & quot; MyClass.java & quot; а не файлы = & quot; MyClass \ .java & quot ;. Alceu Costa
0

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

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

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

2

хотя он не работает в моем проекте. Чтобы подавить любые предупреждения, которые checkstyle ищет в Foo.java, согласноссылка на сайт, если используется 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 не существует).

23

добавив тег SuppressionCommentFilter в свой файлcs.xml:

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

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

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

<module name="SuppressionCommentFilter"/>

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

// CHECKSTYLE:OFF
Спасибо за информацию @ Michael0x2a
не работал. не знаю почему
Поскольку это сбило меня с толку только сейчас - комментарий @ MatanRubin верен для версий checkstyle вплоть до 8.0. Тем не менее, checkstyle 8.1 и 8.2 внесли некоторые обратно несовместимые изменения: сейчас нужно сделать правильноSuppressionCommentFilter быть подTreeWalker,FileContentsHolder модуль, по-видимому, был полностью удален - в этом больше нет необходимости.
Энрике, обратите внимание, чтоFileContentsHolder должно быть подTreeWalker в то время какSuppressionCommentFilter должно быть подChecker, Если вы положите их обоих подTreeWalker или оба подChecker - это не будет работать. Для получения дополнительной информации см.checkstyle.sourceforge.net/…

Похожие вопросы