2010-10-15 1 views
3

У меня есть цель ANT, который работает FindBugs дважды на тот же исходный код для создания отчета XML и HTMLFindbug - ANT XSLT источник стилей код ссылки

<delete dir="${findbugs.dir}"/> 
<mkdir dir="${findbugs.dir}"/>   
<findbugs 
    home="${findbugs.home}" 
    output="xml" 
    outputFile="${findbugs.dir}/findbugs.xml" 
    jvmargs="${findbugs.jvmargs}" 
    timeout="${findbugs.timeout}" 
    effort="${findbugs.effort}"> 
    <sourcePath path="${src.dir}"/> 
    <class location="${build.classes.dir}"/> 
</findbugs> 

<findbugs 
    home="${findbugs.home}" 
    output="html" 
    outputFile="${findbugs.dir}/findbugs.html" 
    jvmargs="${findbugs.jvmargs}" 
    timeout="${findbugs.timeout}" 
    effort="${findbugs.effort}"> 
    <sourcePath path="${src.dir}"/> 
    <class location="${build.classes.dir}"/> 
</findbugs> 

Это немой, так как отчет HTML может быть получен из отчет xml с использованием

<xslt in="${findbugs.dir}/findbugs.xml" out="${findbugs.dir}/findbugs.html" style="${findbugs.home}/default.xsl"/> 

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

Обновленный после ответа

with output="xml" 

<BugInstance type="REC_CATCH_EXCEPTION" priority="2" abbrev="REC" category="STYLE"> 
    <Class classname="com.x.y.aggregate.AggregationProperties"> 
     <SourceLine classname="com.x.y.aggregate.AggregationProperties" start="20" end="788" sourcefile="AggregationProperties.java" sourcepath="com/x/y/aggregate/AggregationProperties.java"/> 
    </Class> 
    <Method classname="com.x.y.aggregate.AggregationProperties" name="setAggregateProperties" signature="()V" isStatic="true"> 
     <SourceLine classname="com.x.y.aggregate.AggregationProperties" start="86" end="148" startBytecode="0" endBytecode="489" sourcefile="AggregationProperties.java" sourcepath="com/x/y/aggregate/AggregationProperties.java"/> 
    </Method> 
    <SourceLine classname="com.x.y.aggregate.AggregationProperties" start="140" end="140" startBytecode="308" endBytecode="308" sourcefile="AggregationProperties.java" sourcepath="com/x/y/aggregate/AggregationProperties.java"/> 
</BugInstance> 

with 'xml:withMessages' 

<BugInstance type="REC_CATCH_EXCEPTION" priority="2" abbrev="REC" category="STYLE" instanceHash="b7a7c8f292d2a8432680a1c971fb93b3" instanceOccurrenceNum="0" instanceOccurrenceMax="0"> 
    <ShortMessage>Exception is caught when Exception is not thrown</ShortMessage> 
    <LongMessage>Exception is caught when Exception is not thrown in com.x.y.aggregate.AggregationProperties.setAggregateProperties()</LongMessage> 
    <Class classname="com.x.y.aggregate.AggregationProperties" primary="true"> 
     <SourceLine classname="com.x.y.aggregate.AggregationProperties" start="20" end="788" sourcefile="AggregationProperties.java" sourcepath="com/x/y/aggregate/AggregationProperties.java" relSourcepath="com/x/y/aggregate/AggregationProperties.java"> 
     <Message>At AggregationProperties.java:[lines 20-788]</Message> 
     </SourceLine> 
     <Message>In class com.x.y.aggregate.AggregationProperties</Message> 
    </Class> 
    <Method classname="com.x.y.aggregate.AggregationProperties" name="setAggregateProperties" signature="()V" isStatic="true" primary="true"> 
     <SourceLine classname="com.x.y.aggregate.AggregationProperties" start="86" end="148" startBytecode="0" endBytecode="489" sourcefile="AggregationProperties.java" sourcepath="com/x/y/aggregate/AggregationProperties.java" relSourcepath="com/x/y/aggregate/AggregationProperties.java"/> 
     <Message>In method com.x.y.aggregate.AggregationProperties.setAggregateProperties()</Message> 
    </Method> 
    <SourceLine classname="com.x.y.aggregate.AggregationProperties" primary="true" start="140" end="140" startBytecode="308" endBytecode="308" sourcefile="AggregationProperties.java" sourcepath="com/x/y/aggregate/AggregationProperties.java" relSourcepath="com/x/y/aggregate/AggregationProperties.java"> 
     <Message>At AggregationProperties.java:[line 140]</Message> 
    </SourceLine> 
</BugInstance> 

ответ

2

output="xml:withMessages"

documentation С,

Если установлено значение "XML" (по умолчанию), вывод в формате XML. Если установлено значение «xml: withMessages», вывод находится в формате XML, дополненном человеко-читаемыми сообщениями. (Этот формат следует использовать, если вы планируете генерировать отчет с использованием таблицы стилей XSL.)