spotbugs / spotbugs

SpotBugs is FindBugs' successor. A tool for static analysis to look for bugs in Java code.

Home Page:https://spotbugs.github.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Stylesheet not working in 4.8.4

esabol opened this issue · comments

We use stylesheet="fancy-hist.xsl" to generate our SpotBugs reports in our CI/CD pipeline, which builds using ant. Our build.xml has the following:

    <taskdef
        resource="edu/umd/cs/findbugs/anttask/tasks.properties"
        classpath="${spotbugs.home}/lib/spotbugs-ant.jar"/>
 
    <target name="spotbugs">
        <spotbugs home="${spotbugs.home}"
                  output="html"
                  outputFile="${dist.dir}/spotbugs.html"
                  stylesheet="fancy-hist.xsl" >
            <auxclasspath path="${basedir}/../libs" />
            <sourcePath path="${basedir}/src/java" />
            <class location="${build.web.dir}/WEB-INF/classes" />
        </spotbugs>
    </target>

This all worked for us just fine with SpotBugs 4.8.3. After upgrading to 4.8.4, however, the SpotBugs report generated by the same exact build.xml is clearly not using fancy-hist.xml. And, yes, spotbugs.home is defined properly in project.properties (which hasn't changed) and we are using the spotbugs-ant.jar from the 4.8.4 release.

Any idea as to what the problem is or what the solution might be? Thanks!

Hello @Vogel612, I'm not sure how this was working but I was wondering if this could be a side effect of #2894

Maybe it can be because of #2915. Can you please share the fancy-hist.xml? Is there any error logged about this?

I think the xsl is part of SpotBugs: https://github.com/spotbugs/spotbugs/blob/master/spotbugs/src/xsl/fancy-hist.xsl
I was wondering about the version change for the filter xsd too, that might be the problem

Yes, the fancy-host.xsl we are using is the one provided by SpotBugs, as @gtoison indicated. We haven't modified it or moved it.

I'm not seeing any error messages. Where would they be logged to in this scenario?

My colleague additionally tested it with SpotBugs 4.8.2, and the stylesheet worked.

Also tested 4.8.4 with stylesheet="${spotbugs.home}/src/xsl/fancy-hist.xsl" instead of stylesheet="fancy-hist.xsl". Still didn't work.

4.8.3 works with either of those two stylesheet attribute values.

Hello @Vogel612, I'm not sure how this was working but I was wondering if this could be a side effect of #2894

The changeset you mention should only affect the filepaths, although I did touch the stylesheet assignment so I can't exclude it with any degree of certainty. Judging by the syntax of the options, the code contributed with that changeset should be working as intended and not mess with the stylesheets, assuming generating an XML report withMessages also works as intended...

I haven't checked the release yet, but unfortunately this seems like my changes are a more likely culprit than the filter XSD namespace changes...

assuming generating an XML report withMessages also works as intended...

When I diff SpotBugs XML output between 4.8.2 and 4.8.5, having set output to xml:withMessages, the shortMessage and longMessage blocks are missing from the bugInstance.

<     <ShortMessage>Redundant nullcheck of value known to be non-null</ShortMessage>
<     <LongMessage>Redundant nullcheck of maxuptime, which is known to be non-null in new com.example.Test(boolean, String[])</LongMessage>

Additionally, the <SourceLine> blocks, <LocalVariable>, etc blocks are self-closing instead of including a <Message>.