Проверьте стиль, PMD, FindBugs в инкрементных сборках
Я планирую постепенно проверять стиль моего проекта. Представьте, что мой CI-сервер выполняет инкрементные сборки, то есть выполняет модульное тестирование только для измененных файлов и зависимостей. Но что касается стиля проверки, PMD, Findbugs, мы запускаем весь проект, а не только измененные файлы.
Мне нужно запустить эти инструменты статического анализа для всего проекта для первой сборки, а после этого для каждой инкрементной сборки запускать только измененный набор файлов. И объединить результаты измененных файлов, чтобы завершить результаты таким образом, чтобы я узнал, считается ли валидация инструмента.
Есть ли какие-либо задачи муравья для вышеуказанного требования?
2 ответа
Если ваша система CI может создать список файлов, которые она считает измененными (я полагаю, что это возможно, поскольку она использовала такой список для компиляции), то вы сможете достичь результата хотя бы частично.
Для CheckStyle и PMD их задачи ant принимают наборы файлов, которые дают файлы, по которым должен выполняться анализ. Дайте им только измененные файлы.
FindBugs, по крайней мере, согласно документации, не может этого сделать. Это имеет смысл, потому что есть много детекторов FindBugs, которые читают файлы, отличные от проверенных, чтобы выполнить свою работу. Таким образом, анализы FindBugs могут давать разные результаты для одного и того же файла в зависимости от других файлов, доступных для анализа.
Вы не получите сводный отчет в конце. Вместо этого ваши отчеты из инструментов будут содержать только информацию о проверенных файлах. Этого, вероятно, достаточно, чтобы решить, потерпеть ли неудачу сборку.
[Если вы хотите сделать это в более широком масштабе, отслеживать разработку правил, технический долг и т. Д., Я рекомендую бесплатный инструмент SonarQube. SonarQube также интегрируется с вашей системой CI. Это не будет делать дополнительные прогоны, хотя. Обновление: Начиная с версии SonarQube 4.0, возможен инкрементальный анализ. Смотрите здесь в разделе "Инкрементальный анализ".]
Я не уверен, доступен ли прямой вариант решения вашей проблемы. У инструментов нет возможности динамически идентифицировать только измененные файлы, а не запускать инструмент по полному пути, указанному в конфигурациях (например, исходный путь / двоичный путь). Поскольку вы хотите сохранить предыдущие результаты, это немного сложно.
Сначала нужно выяснить, есть ли способ получить список измененных файлов во время пошагового выполнения сборки. Если это возможно, вы можете изменить ant target, чтобы копировать только измененные файлы во временную папку. местоположение и укажите это на инструменты.
Затем, чтобы объединиться с предыдущими отчетами, во-первых, вам нужно будет создать резервную копию существующих отчетов перед выполнением вышеуказанной муравьиной цели. Затем напишите xsl, чтобы заменить информацию в существующем отчете информацией, содержащейся в новом отчете. Создайте отдельный отчет, выполнив xsl с помощью ant. Так что этот отчет будет содержать результаты, которые вам нужны.