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

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

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

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

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


person Ingo    schedule 21.01.2010    source источник


Ответы (3)


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

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

person Pascal Thivent    schedule 22.01.2010
comment
Большое спасибо за подробный ответ. Дело в том, что проекты все очень похожи в том, что все они генерируют исходный код, который не соответствует конфигурации checkstyle, и в этом тоже нет необходимости. Я пропущу это как удаленную настройку, я просто буду использовать точки расширения в eclipse-cs и включу конфигурацию в плагин, который я включу в дистрибутив. - person Ingo; 22.01.2010
comment
Пожалуйста. И теперь я понимаю лучше, это действительно имело бы смысл в вашем случае. Кстати: Обычный способ признать хороший ответ — это проголосовать за него ;-). - person Pascal Thivent; 22.01.2010
comment
Я новичок в Stackoverflow и получаю репутацию Vote Uprequires 15, я проголосую за нее, как только доберусь туда. Думаю, я должен внести свой вклад и ответить на некоторые сообщения сам;) Я буду иметь это в виду, спасибо - person Ingo; 22.01.2010

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

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

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

person Stephen Cooper    schedule 07.02.2012

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

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

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

person OTrain    schedule 30.01.2013