В настоящее время я хочу запустить статический анализ для уже существующего проекта. Поскольку проект создается и поставляется сторонней компанией, я не могу радикально изменить процесс сборки.
Проект разбит на множество подмодулей, расположенных в разных местах. Для других инструментов анализа (JDepend, Google Testability Explorer и т. Д.) Я динамически обнаружил все файлы JAR сборки в элементе path
следующим образом:
<path id="built-libs">
<fileset dir="${overall-base}">
<include name="${some-common-base}/**/lib/*.jar" />
</fileset>
</path>
<property name="built-libs-string" refid="built-libs" />
Для некоторых инструментов я использую build-libs
, для других - строку (в форме classpath; x.jar;y.jar
).
Проблема в том, что FindBugs использует совершенно другой формат, чем любой другой;
<class location="x.jar"/>
<class location="y.jar"/>
...
Теперь я мог бы перечислить все файлы JAR вручную, но затем рискнул бы, чтобы этот список не синхронизировался со списками другого инструмента или вводил опечатки.
Другая сложность заключается в том, что я также хочу запускать отчеты в Jenkins, в этом случае каталог извлечения для отдельных модулей будет зависеть от задания, которое ранее создавало модуль (конвейерные сборки, модули, извлеченные из SCM и построенные параллельно, отчетность происходит в конце трубопровода).
I может вызвать ОС для запуска FindBugs, передавая JAR-файлы в виде списка, разделенного пробелами (как в Вызов FindBugs из Ant: передача списка файлов, разделенных пробелами в Ява ). Тем не менее, я предпочитаю, решение Ant, взломать OS <exec...
.
Примечание Я знаю, что у меня есть похожая проблема для элемента sourcepath
, однако я предполагаю, что решение проблемы элемента class
также решает проблему sourcepath
.