FindBugs сканирует внешние банки

Я использую следующую ссылку для создания ant-скрипта для запуска findbugs в веб-приложении: Глава 6. Использование задача FindBugs ™ Ant

Я устанавливаю параметр auxClasspath для своей папки jars.

Но когда я запускаю задачу с помощью ant findbugs из командной строки, это занимает очень много времени (~ 45 минут), а выходной xml содержит анализ jar-файлов в auxClasspath а также мой исходный код.

Я хочу, чтобы анализировали только мой исходный код.

Это код в моем build.xml:

<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>
<property name="findbugs.home" value="C:/Software/FindBugs" />
<target name="findbugs" >
    <echo message="Finding Bugs From ${basedir}/src/java"/>
    <findbugs home="${findbugs.home}"
              output="xml:withMessages"
              outputFile="${basedir}\findbugs.xml"
              stylesheet="fancy-hist.xsl"
              timeout="6000000"
              jvmargs="-Xmx1200m">
        <auxClasspath path="${basedir}/Jars/*.jar" />
        <sourcePath path="${basedir}/src/java"/>
        <class location="${basedir}/build/myApp-1.0.jar" />
    </findbugs>
</target>

Я добавил findbugs-ant.jar в библиотеку моей установки ant. Каталог findbugs существует.

Другая информация:
IDE: Netbeans 7.3
ОС: Microsoft Windows XP
Ant Версия: 1.8.4
Поиск ошибок Версия: 2.0.2

Обновить

Если я пропущу эту строку:

<auxClasspath path="${basedir}/Jars/*.jar" />

Я получаю желаемый результат (т.е. анализ только моего исходного кода). Но возникает предупреждение:

[findbugs] The following classes needed for analysis were missing:
[findbugs]   javax.servlet.http.HttpServlet
[findbugs]   javax.servlet.http.HttpServletRequestWrapper
[list continues]....

Любая идея, почему найти ошибки, анализирует jar-файлы, которые он не должен анализировать (согласно документации)


person Shiva    schedule 09.04.2013    source источник


Ответы (3)


Я попытался отследить, какие Jar-файлы используются в исходном коде.

В выводе findbugs xml я обнаружил строку: $ {basedir} \ Jars \ antlr-2.7.2.jar

Отчет об анализе findbugs показал, что все остальные jar-файлы (кроме antlr-2.7.2.jar) отсутствовали.

Больше нет записей auxClassPath. Решил эту проблему, указав каждую запись пути к классу в отдельной строке.

Если у кого-то есть идеи получше, любезно внесите свой вклад.

person Shiva    schedule 21.05.2013

Я использовал следующие настройки auxClasspath, чтобы вытащить все свои банки в мою папку lib и все банки в каталогах в моей папке lib.

<auxClasspath>
    <fileset dir="${lib.dir}">
        <include name="*/**"/>
        <include name="*.jar"/>
    </fileset>
</auxClasspath>

Поместите его в тег findbugs.

person Mason T.    schedule 26.03.2015

Попробуйте удалить эту строчку

<class location="${basedir}/build/myApp-1.0.jar" />

Теперь, чтобы попытаться проанализировать как jar-файлы, так и исходные файлы, это занимает так много времени.

Эта строка необходима и используется для поиска класса, если он встречается во время анализа вашего источника.

<auxClasspath path="${basedir}/Jars/*.jar" />

Может быть, можно ограничить его только действительно необходимыми банками, а не всеми в папке.

person Nikolay Kuznetsov    schedule 09.04.2013
comment
Эта строка предназначена для указания местоположения моих исходных файлов, чтобы окончательный выходной xml содержал подробную информацию о коде, для которого findbugs вызывает предупреждение. - person Shiva; 09.04.2013
comment
Это написал я. Вы имеете в виду какое-то другое обновление? - person Shiva; 09.04.2013
comment
@ShivanandaSahu, в моем ответе. - person Nikolay Kuznetsov; 09.04.2013
comment
Исходя из того, что вы сказали, я попытался отследить, какие Jar-файлы используются в исходном коде. В выводе findbugs xml я обнаружил строку: <AuxClasspathEntry>${basedir}\Jars\antlr-2.7.2.jar</AuxClasspathEntry> Отчет об анализе findbugs содержал анализ для всех других jar-файлов. Больше нет записей auxClassPath. Мы должны указать каждую запись пути к классу в отдельной строке. - person Shiva; 09.04.2013