Findbug - ANT xslt 样式表源代码参考 [英] Findbug - ANT xslt stylesheet source code references

查看:32
本文介绍了Findbug - ANT xslt 样式表源代码参考的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 ANT 目标,它在同一源代码上运行 findbugs 两次以生成 xml 和 html 报告

I have an ANT target that runs findbugs twice on the same source code to generate a xml and html report

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

这很愚蠢,因为可以使用 xml 报告生成 html 报告

This is dumb since the html report can be generated from the xml report using

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

但生成的 html 报告没有正确的源代码引用.关于如何使其工作并避免重复的 findbugs 调用的任何想法?

but the generated html report doesn't have the correct source code references. Any ideas on how I can get this working and avoid the duplicate findbugs call?

回答后更新

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>

推荐答案

output="xml:withMessages"

来自文档

如果设置为xml"(默认值),则输出为 XML 格式.如果设置为xml:withMessages",则输出为 XML 格式,并带有人类可读的消息.(如果您打算使用 XSL 样式表生成报告,则应使用此格式.)

If set to "xml" (the default), output is in XML format. If set to "xml:withMessages", output is in XML format augmented with human-readable messages. (You should use this format if you plan to generate a report using an XSL stylesheet.)

这篇关于Findbug - ANT xslt 样式表源代码参考的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆