Eclipse Checkstyle с конфигурацией и SuppressionFilter на сервере

Я настроил свой Eclipse для использования конфигурации удаленного контрольного стиля, расположенной на сервере, к которому я подключаюсь по HTTP. Это работает нормально, но конфигурация содержит:

<module name="SuppressionFilter">
<property name="file" value="${basedir}/checkstyle-filter.xml"/>
</module>

Поэтому я пытаюсь установить дополнительное свойство "basedir", которое указывает на тот же каталог, где находится конфигурация. Когда я пытаюсь запустить контрольный стиль в проекте, я получаю сообщение об ошибке: не удается инициализировать модуль SuppressionsFilter - Невозможно установить свойство 'file' в модуле SuppressionFilter равным 'http: //"my Url"/checkstyle-filter.xml'

Любые предложения о том, как настроить Eclipse для использования конфигурации контрольного стиля с сервера, даже если он содержит SuppressionFilter? Я не хочу ставить checkstyle-фильтр в каждом проекте...

3 ответа

Решение

В настоящее время это невозможно, так как в файлах удаленной конфигурации нельзя использовать SuppressionFilter - ID: 2018081. На самом деле, проблема в Checkstyle, который использует java.io.File объект для внешнего файла SuppressionFilter (и, следовательно, установка значения, начинающегося с http: //, не будет работать). В Checkstyle есть запрос на изменение этой функции (см. Разрешить удаленные ссылки на дополнительную конфигурацию файла - ID: 2018608). Но не ожидайте, что эти изменения произойдут очень скоро (если только вы не начнете над этим работать:)

При этом, несмотря на то, что я прекрасно понимаю необходимость создания корпоративного файла конфигурации в стиле контрольного стиля, меня больше удивляет необходимость общего файла SuppressionFilter. В конце концов, его содержание зависит от проекта, не так ли? Итак, я думаю, что вы должны использовать другое свойство, например ${workspace} (или ваше собственное свойство, я понимаю, что расширение поля заполнителей свойств заключается в том, что .properties файл также должен работать с удаленной конфигурацией) и попросить каждый проект предоставить свой собственный файл со своим SuppressionFilter, на который будет ссылаться из рабочей области. На основании соглашения это должно работать.

На самом деле, вы можете использовать фильтр подавления. Я настроил его таким образом с помощью удаленного конфига, используя плагин 5.6 eclipse checkstyle. Просто поместите файл подавления в тот же удаленный каталог, что и файл checkstyle.xml, а затем используйте следующее:

<property name="file" value="${config_loc}/suppression.xml" />

Затем он будет работать с затмением. В основном просто замените ${base_dir} на ${config_loc}

Мне не удалось добавить патч к исходному запросу функции, поэтому я создал новый запрос функции здесь: https://sourceforge.net/tracker/?func=detail&atid=397081&aid=3485185&group_id=29721

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

Я протестировал его с версией eclipse-cs 5.5, исправив файл jar для плагина, и он работает довольно хорошо.

Другие вопросы по тегам