Есть ли плагин maven-git-checkstyle, который запускает цель checkstyle только для файлов git staged?

Мы работаем над унаследованной кодовой базой приложений и проводим поэтапную разработку, чтобы улучшить качество кода. Когда мы запустили цель проекта Maven Checkstyle, мы получили множество ошибок. Для постепенного решения проблем мы применяем подход к запуску checkstyle только для тех файлов, которые редактирует каждый разработчик, и перед их фиксацией.
Опции, с которыми я столкнулся при поиске решения, - это ловушки перед фиксацией, которые перед выполнением кода выполняют цель maven.
Рекомендации:
https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
https://hdpe.me/post/maven-checkstyle-pre-commit-hook/

Недостаток вышеуказанного подхода заключается в том, что его нельзя применять на каждом компьютере разработчика. Так как хуки не загружаются в хранилище. У нас есть свои ограничения (командная политика) в реализации серверных хуков.

Плагин IntelliJ checkstyle обладает именно той функциональностью, которую я ищу (Check All Modified Files).
Проверить все измененные файлы

Но не все разработчики в нашей команде используют IntelliJ, и его нельзя применять в процессе сборки.

Я думаю, что я пытаюсь спросить, есть ли способ вызвать ловушку перед фиксацией (логику) как цель maven?

1 ответ

Есть ли плагин maven-git-checkstyle, который запускает цель checkstyle только для файлов git staged?

Мне не известен ни один плагин, который бы делал это, но у вас есть 2 варианта, которые я могу придумать для достижения этой цели.

1) Checkstyle может быть расширен, чтобы вы могли реализовать свой собственный фильтр. Фильтры - это то, что позволяет игнорировать и скрывать определенные нарушения вместо отключения всей проверки. Интегрируйте JGit в свой Фильтр, и вы сможете получить доступ к списку промежуточных файлов и любым коммитам для репозитория. Просто имейте фильтр, подавляющий все нарушения для любых файлов, которые не появляются в списке промежуточных файлов. Вы можете настроить фильтр в соответствии с вашими потребностями.

2) Создайте список файлов, которые вы хотите подавить, используя SuppressionFilter, и сохраните их в уникальный устаревший файл подавления. Вы можете настроить список для требуемого типа подавления (например, только по файлу, по файлу и имени чека и т. Д.). По мере того, как ваши разработчики работают над проектом, удалите определенные ограничения для файлов, которые они изменяют. Вы можете применить это к UT, если вы снова интегрируете JGit и убедитесь, что ни один из измененных файлов не указан в устаревшем файле подавления.

Любой из маршрутов, по которым вы идете, после завершения обновления всех устаревших файлов, я рекомендую удалить эти устаревшие подавления и всегда работать в полном рабочем пространстве.

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