Как определить подавления-определения для checkstyle, которые работают как с муравьем, так и с затмением - PullRequest
8 голосов
/ 31 марта 2009

Я использую в проекте контрольный стиль и определил SuppressionFilter в моей конфигурации контрольного стиля. Я использую Apache ant для автоматической сборки через Continuous Integration.

Мои проблемы возникают из-за следующей ситуации: я не хочу заполнять слишком много файлов в базе данных проекта, поэтому checkstyle.xml и suppressions.xml находятся в подкаталоге с именем conf (для конфигурации для сборки) , Теперь Ant и Eclipse работают по-разному для поиска suppressions.xml.

Ant использует project-basedir в качестве basedir для поиска файла suppressions.xml, после того как я объявил ant-задачу для поиска checkstyle.xml с базовой конфигурацией checkstyle. Этот checkstyle.xml теперь содержит следующее:

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

Таким образом, ant-build находит файл suppressions.xml, потому что baseir сборки - это каталог проекта.

Теперь использование checkstyle-plugin для Eclipse приносит проблему. Он ищет файл suppressions.xml, начиная с пути, который имеет checkstyle.xml (conf). Для Eclipse объявление должно было выглядеть так:

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

РЕДАКТИРОВАТЬ: Даже это не работает, Eclipse, кажется, всегда нужен абсолютный путь.

Я хочу знать, как Eclipse и Ant могут работать с одной и той же конфигурацией checkstyle. Кто-то знает решение этой проблемы? Абсолютные пути не являются решением, потому что каждый разработчик и CI-Server имеют разные пути для каталога проекта.

Ответы [ 2 ]

10 голосов
/ 03 октября 2011

Этот вопрос довольно старый, но я нашел лучший способ сделать это, используя свойства Checkstyle Advanced :

Для плагина Eclipse Checkstyle свойство ${samedir} раскрывается в каталог, в котором находится файл конфигурации:

В вашем случае конфигурация вашего модуля будет выглядеть так:

<module name="SuppressionFilter">
    <property name="file" value="${samedir}/conf/suppressions.xml" />
</module>

Цель Ant также установит свойство samedir:

<checkstyle config="${checkstyle.tool.dir}/checks.xml" failOnViolation="false">
    <fileset dir="${src.dir}" includes="**/*.java" />
    <property key="samedir" value="${checkstyle.tool.dir}/conf" />
</checkstyle>
6 голосов
/ 06 апреля 2009

Используйте расширение свойства Checkstyle . В вашем checkstyle.xml объявите свой SupressionFilter как:

<module name="SuppressionFilter">
    <property name="file" value="${checkstyle.suppressions.file}" default="suppressions.xml"/>
</module>

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

<checkstyle config="conf/checkstyle.xml">
    <fileset dir="src" includes="**/*.java"/>
    <property key="checkstyle.suppressions.file" value="conf/suppressions.xml"/>
</checkstyle>
...