8

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

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

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

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

Таким образом, муравей-сборки находит suppressions.xml, потому что имя_базовой_папки билда является проект-каталог.

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

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

EDIT: Даже это не работает, Eclipse, кажется, нужно всегда абсолютный путь.

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

ответ

6

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

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

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

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

Спасибо, что работает. Единственное исключение - моя ошибка в описании, Eclipse, похоже, нуждается в абсолютном пути. – Mnementh

9

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

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

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

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

Муравей цель будет также установить 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> 
+0

Приобретено. $ {samedir} - это то, чем я был. –

+1

Вы можете использовать '$ {basedir}' (см. Ссылку для дополнительных возможностей пути) для относительного пути к проекту. Это позволяет использовать общий 'checkstyle.xml' для многих проектов, но при этом хранить файлы подавления с каждым проектом. –

+0

Есть ли способ использовать $ {samedir} в градиенте checkstyle-plugin? http://stackoverflow.com/questions/29602867/using-samedir-in-gradle-and-eclipse – Edward

 Смежные вопросы

  • Нет связанных вопросов^_^