2013-04-09 3 views
1

Я использую следующую ссылку, чтобы создать муравья скрипт для запуска FindBugs на веб-приложения: Chapter 6. Using the FindBugs™ Ant taskFindBugs сканирование внешних баночки

я устанавливаю параметр auxClasspath в моей папке баночках.

Но когда я запустить задачу с помощью муравей FindBugs из командной строки, это занимает очень много времени (~ 45 минут) и вывод XML содержит анализ баночки в 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-подпапка в Lib моего муравья установки. Каталог findbugs существует.

Другая информация:
IDE: Netbeans 7,3
ОС: Microsoft Windows XP
Ant Версия: 1.8.4
Найти ошибки Версия: 2.0.2

Update

Если бы я не указывать эту строку:

<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].... 

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

ответ

3

Я пытался отслеживать, какие банки используются в исходном коде.

В выводе FindBugs XML, я нашел строку: $ {BASEDIR} \ баночки \ ANTLR-2.7.2.jar

В докладе анализ FindBugs показал, что все остальные банки (кроме Antlr-2.7.2 .jar).

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

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

0

Попытка удалить эту линию

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

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

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

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

Возможно, это можно ограничить только настоящими флягами, не все в папке.

+0

Эта строка предназначена для указания местоположения моих исходных файлов, так что конечный вывод xml содержит сведения о коде, для которого findbugs поднимает предупреждение. – Shiva

+0

@ShivanandaSahu, см. Обновление. –

+0

Это было написано мной. Вы имеете в виду какое-то другое обновление? – Shiva

1

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

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

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

Смежные вопросы