У меня была такая же проблема с конфигурацией подавления Checkstyle, когда я шел туда и обратно между Linux и Windows. Вот как я решил это в моей системе сборки на основе Ant:
В принципе, я вставляю правильное значение для конкретной платформы в основной файл конфигурации Checkstyle, настраивая файл свойств Checkstyle с помощью скрипта сборки Ant.
В моем основном конфигурационном файле Checkstyle есть объявление модуля SuppressionFilter
, как показано ниже. Значение checkstyle-suppressions-file
собственности исходит из свойств Checkstyle файла:
<module name="SuppressionFilter">
<property name="file" value="${checkstyle-suppressions-file}"/>
</module>
свойства файла Checkstyle не статична, она порождается Ant сценарий сборки из файла свойств шаблона называется template-checkstyle.properties
. Вот то, что шаблон выглядит для свойства сдерживание файла:
[email protected][email protected]/checkstyle_suppressions.xml
Моего Ant копии сборки сценария этого файл в файл с именем checkstyle.properties
. Копия имеет специальный маркер заменяется на исправном каталог, в котором находится файл сдерживание:
<copy file="${scm.dir}/template-checkstyle.properties" tofile="${scm.dir}/checkstyle.properties">
<filterset>
<filter token="SCM_DIR" value="${scm.dir.unix}"/>
</filterset>
</copy>
Теперь, где же значение scm.dir.unix
взялось? Ну, это , полученный из свойства моей сборки, читайте дальше. Вам нужно указать такое значение со значениями каталога, которые вы упомянули.
Обратите внимание, что существует одна слегка неочевидная проблема, связанная с тем, как вы указываете этот каталог. Я говорю, что значение scm.dir.unix
получено из свойства build, потому что я заметил, что основной файл конфигурации Checkstyle не может содержать обратную косую черту, то есть символы разделителя путей Windows, в значении свойства file
модуля SuppressionFilter
. Например, указание чего-то типа C:\foo\bar\baz
приводит к сообщению об ошибке Checkstyle, в котором указано, что C:foobarbaz
не найден.Я работаю вокруг этого «преобразования» накопление собственности scm.dir
каталога в формате «Юникс» с Ant в pathconvert
задачи:
<pathconvert targetos="unix" property="scm.dir.unix">
<path location="${scm.dir}"/>
</pathconvert>
Тогда я называю checkstyle
Ant задачу так:
<checkstyle config="${scm.dir}/checkstyle_checks.xml"
properties="${scm.dir}/checkstyle.properties">
<!-- details elided -->
</checkstyle>
ВЫЗОВ МАСТЕРА к задаче checkstyle
вводит пары ключ/значение, содержащиеся в файле checkstyle.properties
, в основную конфигурацию Checkstyle.
Если вы хотите, вы можете увидеть полные сценарии here
Надеется, что это помогает
Спасибо за советы, моя муравейная сборка теперь прекрасна, игнорируя магические числа в тестовых классах (это начало!). Мне нужно было внести одно изменение в прилагаемый вами код (для справки кому-либо еще, кто может прийти к нему позже), задача отсутствует «filtering = true»; по крайней мере, при работе с моей версией муравья. –