Giter VIP home page Giter VIP logo

findbugs-maven-plugin's Introduction

Findbugs Maven Plugin

Build Status Maven central Apache 2

Status

**Note: ** Since Findbugs is no longer maintained, please use Spotbugs which has a Maven plugin. It is located here

Latest Snapshot

Please download latest snapshots from here

Building findbugs-maven-plugin Requirements

Java 7 is required. This will allow analysis of bytecode up to Java 8

findbugs-maven-plugin

Maven Mojo Plug-In to generate reports based on the FindBugs Analyzer

Run all tests

mvn -DtestSrc=remote -Prun-its clean install -D"invoker.parallelThreads=4"

Skip tests

mvn -DskipTests=true clean install

Run tests on findbugs test source code that is local instead of from FindBugs github repository

mvn -DtestSrc=local -DlocalTestSrc=/opt/findBugs -Prun-its clean install -D"invoker.parallelThreads=4"

Run selected tests

mvn -DtestSrc=remote -Prun-its -Dinvoker.test=build-*,basic-1,check-nofail clean install -D"invoker.parallelThreads=4"

Run tests in debugger

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE" -Prun-its clean install 

Run selected tests in debugger

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djava.compiler=NONE" -Prun-its -Dinvoker.test=build-*,basic-1,check clean install

Run gui with a specific version

mvn org.codehaus.mojo:findbugs-maven-plugin:3.0.6-SNAPSHOT:gui 

findbugs-maven-plugin's People

Contributors

christianschulte avatar gaul avatar gleclaire avatar h3xstream avatar hazendaz avatar iandarwin avatar lqc avatar romani avatar vorburger avatar vsevolodgolovanov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

findbugs-maven-plugin's Issues

Most integration tests fail out-of-the-box (mvn -Prun-its clean install)

While developing a fix for #55, I wanted to executed the integration tests, as advertised in the README.md:

mvn -Prun-its clean install

Unfortunately, most integration tests fail for me on the (unmodified) master branch:

[INFO] --- maven-invoker-plugin:1.5:run (integration-test) @ findbugs-maven-plugin ---
[INFO] Building: basic-1/pom.xml
[INFO] ..SUCCESS (26.3 s)
[INFO] Building: check/pom.xml
[INFO] ..FAILED (6.2 s)
[INFO]   The post-build script did not succeed. Expression: findbugXdoc.exists()
…
[INFO] -------------------------------------------------
[INFO] Build Summary:
[INFO]   Passed: 8, Failed: 37, Errors: 0, Skipped: 0
[INFO] -------------------------------------------------

IMHO, this should work out-of-the-box.

Source encoding not taken into account by the GUI

Say the source contains cyrillic symbols in UTF-8:

// провокация бага
public static SimpleDateFormat df = new SimpleDateFormat();

The platform encoding is the default Cp1251, so let's explicitly set all the possible encoding options in the pom:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>3.0.4-SNAPSHOT</version>
            <configuration>
                <jvmArgs>-Dfile.encoding=UTF-8</jvmArgs>
                <encoding>UTF-8</encoding>
                <sourceEncoding>UTF-8</sourceEncoding>
                <outputEncoding>UTF-8</outputEncoding>

Nope:
enc0

Let's check the GUI's JVM arguments with Visual VM:
jvmargs

It's got file.encoding (and others) set twice, and one of those is Cp1251. I suspect the duplicates come from clonevm=true.

mvn findbugs:gui log

Just to be sure that the source is right, let's force the encoding using the environment variable:

set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

Now it works:
enc1

Find out source folder for SourceLine

I am running FindBugs using the maven plugin in both the source and the test source folders. Now the plugin generates XML in the format:

<SourceLine role='SOURCE_LINE_DEREF' endBytecode='5' classname='nl.tudelft.jpacman.board.DirectionTest' start='47' end='47' sourcepath='nl/tudelft/jpacman/board/DirectionTest.java' sourcefile='DirectionTest.java' startBytecode='5' primary='true'>

For this source line, I want to know if it's from src/main/java or src/test/java. I can't find this information in the XML. Is there something I'm missing?

select report language ?

Hi,

I didn't find a way to select in which the report is generated.
Is there one ?

Basically, my PC is in French, but I'd like the report to be written in English.

FindBugs 3.0.1 maven plugin doesn't work with Java 8

Hi,

When I tried to upgrade to Java 8 and findbugs 3.0.1 maven plugin, findbugs report is not generated using maven clean site. I have findbugs maven plugin added in the reporting section and not under build section in pom.xml. It does seem to generate report when I add the plugin element in build section.

Appreciate your help,
Thanks
A

Details for plugin contributed bugs should not link to findbugs details page.

Currently in the Findbugs report, all reported bugs link to the findbugs descriptions page[1]. This also includes bugs that are the results of plugins. This causes some frustration when trying to drill into the details of the bug.

I imagine that this is the case since there doesn't seem to be an easy way to determine where to link to. The findbugsXml.xml file certainly doesn't contain this information.

However, the findbugsXml.xml file DOES contain the details for each bug reported. It would be more useful to create a third section in the report that contains the details and then point the links to sections within that details section.

[1] http://fb-contrib.sourceforge.net/bugdescriptions.html

Please add bug short name in build output

Hello,

it would be extremely useful for me if you could add the name of the findbugs exception in the maven console output along with it's description, so that I can instantly know what to add in my @SuppressFBWarnings annotation. At the moment you are only outputing the description but not the short name.

Cheers,
Sakis

Adding to AuxClasspath - wrong behaviour

Hi All,

I have an OSGi Project that also pulls a dependency jar with Maven.

When I run a maven findbugs:findbugs on the project, I get the debug Message:
[java] The following errors occurred during analysis:
[java] File not found: filesystem:%MyProjectDir%\lib\commons-net.jar%MyProjectDir%\lib\commons-net.jar

The debug of the run reveals:
[DEBUG] Adding to AuxClasspath ->%MyProjectDir%\lib\commons-net.jar
[DEBUG] Adding to AuxClasspath ->%MyProjectDir%\lib\commons-net.jar
[DEBUG] AuxClasspath is ->%MyHomeDir%.m2\repository\org\codehaus\mojo\findbugs-maven-plugin\3.0.4\findbugs-maven-plugin-3.0.4.jar;%MyHomeDir%.m2\repository\com\google\code\findbugs\findbugs\3.0.1\findbugs-3.0.1.jar;%MyHomeDir%.m2\repository\net\jcip\jcip-annotations\1.0\jcip-annotations-1.0.jar;%MyHomeDir%.m2\repository\com\google\code\findbugs\jsr305\2.0.1\jsr305-2.0.1.jar;%MyHomeDir%.m2\repository\com\google\code\findbugs\bcel-findbugs\6.0\bcel-findbugs-6.0.jar;%MyHomeDir%.m2\repository\com\google\code\findbugs\jFormatString\2.0.1\jFormatString-2.0.1.jar;%MyHomeDir%.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;%MyHomeDir%.m2\repository\xml-apis\xml-apis\1.0.b2\xml-apis-1.0.b2.jar;%MyHomeDir%.m2\repository\org\ow2\asm\asm-debug-all\5.0.2\asm-debug-all-5.0.2.jar;%MyHomeDir%.m2\repository\org\ow2\asm\asm-commons\5.0.2\asm-commons-5.0.2.jar;%MyHomeDir%.m2\repository\org\ow2\asm\asm-tree\5.0.2\asm-tree-5.0.2.jar;%MyHomeDir%.m2\repository\org\ow2\asm\asm\5.0.2\asm-5.0.2.jar;%MyHomeDir%.m2\repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;%MyHomeDir%.m2\repository\com\apple\AppleJavaExtensions\1.4\AppleJavaExtensions-1.4.jar;%MyHomeDir%.m2\repository\jaxen\jaxen\1.1.6\jaxen-1.1.6.jar;%MyHomeDir%.m2\repository\org\apache\ant\ant\1.9.4\ant-1.9.4.jar;%MyHomeDir%.m2\repository\org\apache\ant\ant-launcher\1.9.4\ant-launcher-1.9.4.jar;%MyHomeDir%.m2\repository\org\codehaus\groovy\groovy\2.4.7\groovy-2.4.7.jar;%MyHomeDir%.m2\repository\org\codehaus\groovy\groovy-ant\2.4.7\groovy-ant-2.4.7.jar;%MyHomeDir%.m2\repository\org\apache\ant\ant-antlr\1.9.4\ant-antlr-1.9.4.jar;%MyHomeDir%.m2\repository\org\codehaus\groovy\groovy-groovydoc\2.4.7\groovy-groovydoc-2.4.7.jar;%MyHomeDir%.m2\repository\org\codehaus\groovy\groovy-templates\2.4.7\groovy-templates-2.4.7.jar;%MyHomeDir%.m2\repository\org\apache\ant\ant-junit\1.9.4\ant-junit-1.9.4.jar;%MyHomeDir%.m2\repository\org\codehaus\groovy\groovy-xml\2.4.7\groovy-xml-2.4.7.jar;%MyHomeDir%.m2\repository\org\apache\maven\reporting\maven-reporting-impl\2.1\maven-reporting-impl-2.1.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-project\2.0.10\maven-project-2.0.10.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-settings\2.0.10\maven-settings-2.0.10.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-profile\2.0.10\maven-profile-2.0.10.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-plugin-registry\2.0.10\maven-plugin-registry-2.0.10.jar;%MyHomeDir%.m2\repository\org\codehaus\plexus\plexus-interpolation\1.1\plexus-interpolation-1.1.jar;%MyHomeDir%.m2\repository\commons-validator\commons-validator\1.2.0\commons-validator-1.2.0.jar;%MyHomeDir%.m2\repository\commons-beanutils\commons-beanutils\1.7.0\commons-beanutils-1.7.0.jar;%MyHomeDir%.m2\repository\commons-digester\commons-digester\1.6\commons-digester-1.6.jar;%MyHomeDir%.m2\repository\commons-logging\commons-logging\1.0.4\commons-logging-1.0.4.jar;%MyHomeDir%.m2\repository\oro\oro\2.0.8\oro-2.0.8.jar;%MyHomeDir%.m2\repository\org\apache\maven\reporting\maven-reporting-api\3.0\maven-reporting-api-3.0.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-plugin-api\2.0\maven-plugin-api-2.0.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-plugin-descriptor\2.2.1\maven-plugin-descriptor-2.2.1.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-artifact\2.2.1\maven-artifact-2.2.1.jar;%MyHomeDir%.m2\repository\org\apache\maven\doxia\doxia-core\1.4\doxia-core-1.4.jar;%MyHomeDir%.m2\repository\org\apache\maven\doxia\doxia-logging-api\1.4\doxia-logging-api-1.4.jar;%MyHomeDir%.m2\repository\org\codehaus\plexus\plexus-component-annotations\1.5.5\plexus-component-annotations-1.5.5.jar;%MyHomeDir%.m2\repository\xerces\xercesImpl\2.9.1\xercesImpl-2.9.1.jar;%MyHomeDir%.m2\repository\org\apache\httpcomponents\httpclient\4.0.2\httpclient-4.0.2.jar;%MyHomeDir%.m2\repository\commons-codec\commons-codec\1.3\commons-codec-1.3.jar;%MyHomeDir%.m2\repository\org\apache\httpcomponents\httpcore\4.0.1\httpcore-4.0.1.jar;%MyHomeDir%.m2\repository\org\apache\maven\doxia\doxia-sink-api\1.4\doxia-sink-api-1.4.jar;%MyHomeDir%.m2\repository\org\apache\maven\doxia\doxia-decoration-model\1.4\doxia-decoration-model-1.4.jar;%MyHomeDir%.m2\repository\org\apache\maven\doxia\doxia-site-renderer\1.4\doxia-site-renderer-1.4.jar;%MyHomeDir%.m2\repository\org\apache\maven\doxia\doxia-module-xhtml\1.4\doxia-module-xhtml-1.4.jar;%MyHomeDir%.m2\repository\org\apache\maven\doxia\doxia-module-fml\1.4\doxia-module-fml-1.4.jar;%MyHomeDir%.m2\repository\org\codehaus\plexus\plexus-i18n\1.0-beta-7\plexus-i18n-1.0-beta-7.jar;%MyHomeDir%.m2\repository\org\codehaus\plexus\plexus-velocity\1.1.7\plexus-velocity-1.1.7.jar;%MyHomeDir%.m2\repository\org\apache\velocity\velocity\1.5\velocity-1.5.jar;%MyHomeDir%.m2\repository\org\apache\velocity\velocity-tools\2.0\velocity-tools-2.0.jar;%MyHomeDir%.m2\repository\commons-chain\commons-chain\1.1\commons-chain-1.1.jar;%MyHomeDir%.m2\repository\sslext\sslext\1.2-0\sslext-1.2-0.jar;%MyHomeDir%.m2\repository\org\apache\struts\struts-core\1.3.8\struts-core-1.3.8.jar;%MyHomeDir%.m2\repository\antlr\antlr\2.7.2\antlr-2.7.2.jar;%MyHomeDir%.m2\repository\org\apache\struts\struts-taglib\1.3.8\struts-taglib-1.3.8.jar;%MyHomeDir%.m2\repository\org\apache\struts\struts-tiles\1.3.8\struts-tiles-1.3.8.jar;%MyHomeDir%.m2\repository\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;%MyHomeDir%.m2\repository\org\apache\maven\shared\maven-doxia-tools\1.2.1\maven-doxia-tools-1.2.1.jar;%MyHomeDir%.m2\repository\commons-io\commons-io\1.4\commons-io-1.4.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-artifact-manager\2.0.6\maven-artifact-manager-2.0.6.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-repository-metadata\2.0.6\maven-repository-metadata-2.0.6.jar;%MyHomeDir%.m2\repository\org\apache\maven\maven-model\2.0.6\maven-model-2.0.6.jar;%MyHomeDir%.m2\repository\org\codehaus\plexus\plexus-container-default\1.0-alpha-9\plexus-container-default-1.0-alpha-9.jar;%MyHomeDir%.m2\repository\classworlds\classworlds\1.1-alpha-2\classworlds-1.1-alpha-2.jar;%MyHomeDir%.m2\repository\org\codehaus\plexus\plexus-resources\1.0-alpha-7\plexus-resources-1.0-alpha-7.jar;%MyHomeDir%.m2\repository\org\codehaus\plexus\plexus-utils\1.5.6\plexus-utils-1.5.6.jar;%MyHomeDir%.m2\repository\org\sonatype\plexus\plexus-build-api\0.0.7\plexus-build-api-0.0.7.jar;%MyHomeDir%.m2\repository\commons-net\commons-net\3.3\commons-net-3.3.jar;%MyHomeDir%.m2\repository\p2\osgi\bundle\com.sap.hana.dp.adapterframework\1.2.5\com.sap.hana.dp.adapterframework-1.2.5.jar;%MyHomeDir%.m2\repository\p2\osgi\bundle\com.google.gson\2.1.0.v201203072145\com.google.gson-2.1.0.v201203072145.jar;%MyHomeDir%.m2\repository\p2\osgi\bundle\org.antlr.runtime\3.2.0.v201101311130\org.antlr.runtime-3.2.0.v201101311130.jar;%MyHomeDir%.m2\repository\p2\osgi\bundle\org.apache.log4j\1.2.15.v201012070815\org.apache.log4j-1.2.15.v201012070815.jar;%MyHomeDir%.m2\repository\p2\osgi\bundle\org.eclipse.osgi\3.9.1.v20140110-1610\org.eclipse.osgi-3.9.1.v20140110-1610.jar;%MyProjectDir%\lib\commons-net.jar%MyProjectDir%\lib\commons-net.jar
[DEBUG] File Encoding is UTF-8

So why is the Plugin Adding the libary commons-net.jar TWICE to the AuxClasspath and due to that scrambles the AuxClasspath by not putting a comma between the 2 entries which results in the jar is not found on the classpath.

findbugs-maven-plugin ignores the configuration inside the <execution> node

The following is my project structure:

|-- etc
|   `-- excludeFilter.xml
|-- pom.xml
|-- src
|   |-- main
|   |   |-- java
|   |   |   `-- org
|   |   |       `-- rainbow
|   |   |           `-- test
|   |   |               `-- BugController.java
|   |   `-- resources
|   `-- test
|       `-- java

The content of BugController.java is:

package org.rainbow.test;

public class BugController {
    public void test() {
        int a = 1 / 0;
    }
}

The pom.xml is like the following at the beginning:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.rainbow</groupId>
    <artifactId>fb-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>3.0.4</version>
                <executions>
                    <execution>
                        <id>check</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

Then, I ran the command:

mvn clean compile

Obviously, the findbugs failed, and it printed out the reason:

[INFO] Dead store to a in org.rainbow.test.BugController.test() [org.rainbow.test.BugController] At BugController.java:[line 5] DLS_DEAD_LOCAL_STORE

Then, I wanted to ignore this bug. After reading the Filter File Doc, I just wrote the following exclude-file (named excludeFilter.xml, showed in the project structure):

<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
    <Match>
        <Class name="~.*"/>   <!-- ignore all bug warnings -->
    </Match>
</FindBugsFilter>

And I added a configuration to the plugin execution as following:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>3.0.4</version>
    <executions>
        <execution>
            <configuration>
                <effort>default</effort>
                <failOnError>true</failOnError>
                <excludeFilterFile>${project.basedir}/etc/excludeFilter.xml</excludeFilterFile>
            </configuration>
            <id>check</id>
            <phase>compile</phase>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Then I ran the command again:

mvn clean compile

I thought the bug should be ignored, but unfortunately, it was still there.

And then I ran the command again with -X option to see the detail:

mvn clean compile -X

The following is a snippet from the output of the above command:

[INFO] --- findbugs-maven-plugin:3.0.4:check (check) @ fb-test ---
[DEBUG] Configuring mojo org.codehaus.mojo:findbugs-maven-plugin:3.0.4:check from plugin realm ClassRealm[plugin>org.codehaus.mojo:findbugs-maven-plugin:3.0.4, parent: sun.misc.Launcher$AppClassLoader@d16e5d6]
[DEBUG] Configuring mojo 'org.codehaus.mojo:findbugs-maven-plugin:3.0.4:check' with basic configurator -->
[DEBUG]   (s) classFilesDirectory = /home/rainbow/workspace/study/fb-test/target/classes
[DEBUG]   (s) compileSourceRoots = [/home/rainbow/workspace/study/fb-test/src/main/java]
[DEBUG]   (s) debug = false
[DEBUG]   (s) effort = default
[DEBUG]   (s) excludeFilterFile = /home/rainbow/workspace/study/fb-test/etc/excludeFilter.xml
[DEBUG]   (s) failOnError = true
[DEBUG]   (s) findbugsXmlOutput = true
[DEBUG]   (s) findbugsXmlOutputDirectory = /home/rainbow/workspace/study/fb-test/target
[DEBUG]   (s) fork = true
[DEBUG]   (s) includeTests = false
[DEBUG]   (s) localRepository =       id: local

We can see that the check execution goal got the configuration excludeFilterFile, but it still printed out the bug:

[DEBUG] Executing findbugs:check
[DEBUG] Here goes...............Executing findbugs:check
[INFO] BugInstance size is 1
[INFO] Error size is 0
[INFO] Total bugs: 1
[INFO] Dead store to a in org.rainbow.test.BugController.test() [org.rainbow.test.BugController] At BugController.java:[line 5] DLS_DEAD_LOCAL_STORE
[INFO] 

And at last, I tried to move the configuration to be outside of the execution node, as following:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>3.0.4</version>
    <configuration>
        <effort>default</effort>
        <failOnError>true</failOnError>
        <excludeFilterFile>${project.basedir}/etc/excludeFilter.xml</excludeFilterFile>
    </configuration>
    <executions>
        <execution>
            <id>check</id>
            <phase>compile</phase>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

And the plugin worked fine, and the bug was ignored.

So, my question is: Is the way of configuration I tried a bug? Or, I misconfigured something? Or, I misunderstood the configuration of maven plugin?

"outputEncoding" config not work

how to specify findbugsXml.xml file encoding?
Otherwise, an error will occur while generating reports by Invalid byte 1 of 1-byte UTF-8 sequence.

The findbugs-maven-plugin and its dependencies must not be added to the auxClasspath

(Note: This is a copy of mojohaus#2.)

FindBugs distinguishes between the JARs/directories to analyze and the auxiliary classpath, as specified by the -auxClasspath* set of command-line options. According to the documentation

[The auxiliary classpath] should include all jar files and directories containing classes that are part of the program being analyzed but you do not want to have analyzed for bugs.

Unfortunately, the findbugs-maven-plugin (tested in version 3.0.3) does put itself and all its transitive dependencies on the auxiliary classpath. This is logically wrong and can, in some circumstances, slow things down: If a findbugs detector needs to calculate some information, e.g., a class hierarchy, based on the application’s entire classpath (application + auxiliary classpath), then it wastes a lot of time looking at findbugs-maven-plugin-3.0.3.jar, findbugs-3.0.1.jar, etc.

To demonstrate:

mvn archetype:generate -DgroupId=org.apache.maven.archetypes -DartifactId=maven-archetype-quickstart -Dpackage=org.example -DinteractiveMode=false
cd maven-archetype-quickstart
mvn package org.codehaus.mojo:findbugs-maven-plugin:3.0.3:check -X | grep -i auxclasspath

The entire classpath passed to FindBugs can also be viewed in the target/findbugsXml.xml file, which contains a lot of <AuxClasspathEntry>s.

"Invalid byte tag in constant pool: 18" on Java 8 classes

Using version 3.0.4 I'm seeing stack traces like the one below when checking some classes - I'm assuming ones which use Java 8 constructs

org.apache.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 18
	at org.apache.bcel.classfile.Constant.readConstant(Constant.java:146)
	at org.apache.bcel.classfile.ConstantPool.<init>(ConstantPool.java:67)
	at org.apache.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:222)
	at org.apache.bcel.classfile.ClassParser.parse(ClassParser.java:136)
	at org.apache.maven.shared.jar.classes.JarClassesAnalysis.analyze(JarClassesAnalysis.java:92)
	at org.apache.maven.report.projectinfo.dependencies.Dependencies.getJarDependencyDetails(Dependencies.java:255)
	at org.apache.maven.report.projectinfo.dependencies.renderer.DependenciesRenderer.hasSealed(DependenciesRenderer.java:1454)
	at org.apache.maven.report.projectinfo.dependencies.renderer.DependenciesRenderer.renderSectionDependencyFileDetails(DependenciesRenderer.java:536)
	at org.apache.maven.report.projectinfo.dependencies.renderer.DependenciesRenderer.renderBody(DependenciesRenderer.java:263)
	at org.apache.maven.reporting.AbstractMavenReportRenderer.render(AbstractMavenReportRenderer.java:79)
	at org.apache.maven.report.projectinfo.DependenciesReport.executeReport(DependenciesReport.java:186)
	at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:190)
	at org.apache.maven.plugins.site.ReportDocumentRenderer.renderDocument(ReportDocumentRenderer.java:219)
	at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.renderModule(DefaultSiteRenderer.java:319)
	at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.render(DefaultSiteRenderer.java:135)
	at org.apache.maven.plugins.site.SiteMojo.renderLocale(SiteMojo.java:175)
	at org.apache.maven.plugins.site.SiteMojo.execute(SiteMojo.java:138)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

includeFilterFile doesn't work in execution element

The configured file isn't used:

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>3.0.3</version>
                <executions>
                    <execution>
                        <id>findbugs-always</id>
                        <configuration>
                            <includeFilterFile>findbugs-always.xml</includeFilterFile>
                        </configuration>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
[DEBUG] Configuring mojo 'org.codehaus.mojo:findbugs-maven-plugin:3.0.3:findbugs' with basic configurator -->
[DEBUG]   (s) classFilesDirectory = \classes
[DEBUG]   (s) compileSourceRoots = [\java]
[DEBUG]   (s) debug = false
[DEBUG]   (s) effort = Default
[DEBUG]   (s) failOnError = true
[DEBUG]   (s) findbugsXmlOutput = true
[DEBUG]   (s) findbugsXmlOutputDirectory = \target
[DEBUG]   (s) fork = true
[DEBUG]   (s) includeTests = false
[DEBUG]   (s) maxHeap = 512

"Error processing opcode invokestatic" over Jenkins with IBM JDK 8

During building my Project over Jenkins using IBM JDK 8 I get following errors:

[INFO] --- findbugs-maven-plugin:3.0.4:findbugs (default-cli) @ ... ---
[INFO] Fork Value is true

	 [java] The following errors occurred during analysis:
	 [java]   Error processing opcode invokestatic @ 0 in java.lang.String.<clinit> : ()V
	 [java]     java.lang.NullPointerException
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.processMethodCall(OpcodeStack.java:2637)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.sawOpcode(OpcodeStack.java:2103)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack$JumpInfoFactory$JumpStackComputation.sawOpcode(OpcodeStack.java:2846)
	 [java]       At edu.umd.cs.findbugs.visitclass.DismantleBytecode.visit(DismantleBytecode.java:883)
	 [java]       At edu.umd.cs.findbugs.visitclass.BetterVisitor.visitCode(BetterVisitor.java:218)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitCode(PreorderVisitor.java:235)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack$JumpInfoFactory$JumpStackComputation.visitCode(OpcodeStack.java:2832)
	 [java]       At org.apache.bcel.classfile.Code.accept(Code.java:135)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.doVisitMethod(PreorderVisitor.java:307)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack$JumpInfoFactory.computeJumpInfo(OpcodeStack.java:2876)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack$JumpInfoFactory.analyze(OpcodeStack.java:2806)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack$JumpInfoFactory.analyze(OpcodeStack.java:2789)
	 [java]       At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.analyzeMethod(AnalysisCache.java:369)
	 [java]       At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getMethodAnalysis(AnalysisCache.java:322)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.getJumpInfo(OpcodeStack.java:3007)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.resetForMethodEntry(OpcodeStack.java:2978)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.visitCode(OpcodeStackDetector.java:62)
	 [java]       At org.apache.bcel.classfile.Code.accept(Code.java:135)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.doVisitMethod(PreorderVisitor.java:307)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitJavaClass(PreorderVisitor.java:395)
	 [java]       At org.apache.bcel.classfile.JavaClass.accept(JavaClass.java:215)
	 [java]       At edu.umd.cs.findbugs.BytecodeScanningDetector.visitClassContext(BytecodeScanningDetector.java:38)
	 [java]       At edu.umd.cs.findbugs.DetectorToDetector2Adapter.visitClass(DetectorToDetector2Adapter.java:76)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1089)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:283)
	 [java]       At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)
	 [java]   Error processing opcode invokestatic @ 14 in java.lang.String.toLowerCase : (Ljava.util.Locale;)Ljava.lang.String;
	 [java]     java.lang.NullPointerException
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.processMethodCall(OpcodeStack.java:2637)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.sawOpcode(OpcodeStack.java:2103)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.afterOpcode(OpcodeStackDetector.java:79)
	 [java]       At edu.umd.cs.findbugs.visitclass.DismantleBytecode.visit(DismantleBytecode.java:885)
	 [java]       At edu.umd.cs.findbugs.detect.FieldItemSummary.visit(FieldItemSummary.java:129)
	 [java]       At edu.umd.cs.findbugs.visitclass.BetterVisitor.visitCode(BetterVisitor.java:218)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitCode(PreorderVisitor.java:235)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.visitCode(OpcodeStackDetector.java:63)
	 [java]       At org.apache.bcel.classfile.Code.accept(Code.java:135)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.doVisitMethod(PreorderVisitor.java:307)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitJavaClass(PreorderVisitor.java:395)
	 [java]       At org.apache.bcel.classfile.JavaClass.accept(JavaClass.java:215)
	 [java]       At edu.umd.cs.findbugs.BytecodeScanningDetector.visitClassContext(BytecodeScanningDetector.java:38)
	 [java]       At edu.umd.cs.findbugs.DetectorToDetector2Adapter.visitClass(DetectorToDetector2Adapter.java:76)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1089)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:283)
	 [java]       At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)
	 [java]   Error processing opcode invokestatic @ 14 in java.lang.String.toUpperCase : (Ljava.util.Locale;)Ljava.lang.String;
	 [java]     java.lang.NullPointerException
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.processMethodCall(OpcodeStack.java:2637)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.sawOpcode(OpcodeStack.java:2103)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.afterOpcode(OpcodeStackDetector.java:79)
	 [java]       At edu.umd.cs.findbugs.visitclass.DismantleBytecode.visit(DismantleBytecode.java:885)
	 [java]       At edu.umd.cs.findbugs.detect.FieldItemSummary.visit(FieldItemSummary.java:129)
	 [java]       At edu.umd.cs.findbugs.visitclass.BetterVisitor.visitCode(BetterVisitor.java:218)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitCode(PreorderVisitor.java:235)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.visitCode(OpcodeStackDetector.java:63)
	 [java]       At org.apache.bcel.classfile.Code.accept(Code.java:135)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.doVisitMethod(PreorderVisitor.java:307)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitJavaClass(PreorderVisitor.java:395)
	 [java]       At org.apache.bcel.classfile.JavaClass.accept(JavaClass.java:215)
	 [java]       At edu.umd.cs.findbugs.BytecodeScanningDetector.visitClassContext(BytecodeScanningDetector.java:38)
	 [java]       At edu.umd.cs.findbugs.DetectorToDetector2Adapter.visitClass(DetectorToDetector2Adapter.java:76)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1089)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:283)
	 [java]       At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)
	 [java]   Error processing opcode invokestatic @ 0 in java.lang.String.<clinit> : ()V
	 [java]     java.lang.NullPointerException
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.processMethodCall(OpcodeStack.java:2637)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.sawOpcode(OpcodeStack.java:2103)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.afterOpcode(OpcodeStackDetector.java:79)
	 [java]       At edu.umd.cs.findbugs.visitclass.DismantleBytecode.visit(DismantleBytecode.java:885)
	 [java]       At edu.umd.cs.findbugs.detect.FieldItemSummary.visit(FieldItemSummary.java:129)
	 [java]       At edu.umd.cs.findbugs.visitclass.BetterVisitor.visitCode(BetterVisitor.java:218)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitCode(PreorderVisitor.java:235)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.visitCode(OpcodeStackDetector.java:63)
	 [java]       At org.apache.bcel.classfile.Code.accept(Code.java:135)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.doVisitMethod(PreorderVisitor.java:307)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitJavaClass(PreorderVisitor.java:395)
	 [java]       At org.apache.bcel.classfile.JavaClass.accept(JavaClass.java:215)
	 [java]       At edu.umd.cs.findbugs.BytecodeScanningDetector.visitClassContext(BytecodeScanningDetector.java:38)
	 [java]       At edu.umd.cs.findbugs.DetectorToDetector2Adapter.visitClass(DetectorToDetector2Adapter.java:76)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1089)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:283)
	 [java]       At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)
	 [java]   Error processing opcode invokestatic @ 14 in java.lang.String.toUpperCase : (Ljava.util.Locale;)Ljava.lang.String;
	 [java]     java.lang.NullPointerException
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.processMethodCall(OpcodeStack.java:2637)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.sawOpcode(OpcodeStack.java:2103)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.afterOpcode(OpcodeStackDetector.java:79)
	 [java]       At edu.umd.cs.findbugs.visitclass.DismantleBytecode.visit(DismantleBytecode.java:885)
	 [java]       At edu.umd.cs.findbugs.detect.FunctionsThatMightBeMistakenForProcedures.visit(FunctionsThatMightBeMistakenForProcedures.java:155)
	 [java]       At edu.umd.cs.findbugs.visitclass.BetterVisitor.visitCode(BetterVisitor.java:218)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitCode(PreorderVisitor.java:235)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.visitCode(OpcodeStackDetector.java:63)
	 [java]       At org.apache.bcel.classfile.Code.accept(Code.java:135)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.doVisitMethod(PreorderVisitor.java:307)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitJavaClass(PreorderVisitor.java:386)
	 [java]       At org.apache.bcel.classfile.JavaClass.accept(JavaClass.java:215)
	 [java]       At edu.umd.cs.findbugs.BytecodeScanningDetector.visitClassContext(BytecodeScanningDetector.java:38)
	 [java]       At edu.umd.cs.findbugs.DetectorToDetector2Adapter.visitClass(DetectorToDetector2Adapter.java:76)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1089)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:283)
	 [java]       At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)
	 [java]   Error processing opcode invokestatic @ 14 in java.lang.String.toLowerCase : (Ljava.util.Locale;)Ljava.lang.String;
	 [java]     java.lang.NullPointerException
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.processMethodCall(OpcodeStack.java:2637)
	 [java]       At edu.umd.cs.findbugs.OpcodeStack.sawOpcode(OpcodeStack.java:2103)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.afterOpcode(OpcodeStackDetector.java:79)
	 [java]       At edu.umd.cs.findbugs.visitclass.DismantleBytecode.visit(DismantleBytecode.java:885)
	 [java]       At edu.umd.cs.findbugs.detect.FunctionsThatMightBeMistakenForProcedures.visit(FunctionsThatMightBeMistakenForProcedures.java:155)
	 [java]       At edu.umd.cs.findbugs.visitclass.BetterVisitor.visitCode(BetterVisitor.java:218)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitCode(PreorderVisitor.java:235)
	 [java]       At edu.umd.cs.findbugs.bcel.OpcodeStackDetector.visitCode(OpcodeStackDetector.java:63)
	 [java]       At org.apache.bcel.classfile.Code.accept(Code.java:135)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.doVisitMethod(PreorderVisitor.java:307)
	 [java]       At edu.umd.cs.findbugs.visitclass.PreorderVisitor.visitJavaClass(PreorderVisitor.java:386)
	 [java]       At org.apache.bcel.classfile.JavaClass.accept(JavaClass.java:215)
	 [java]       At edu.umd.cs.findbugs.BytecodeScanningDetector.visitClassContext(BytecodeScanningDetector.java:38)
	 [java]       At edu.umd.cs.findbugs.DetectorToDetector2Adapter.visitClass(DetectorToDetector2Adapter.java:76)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1089)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:283)
	 [java]       At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
	 [java]       At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)
	 [java] Warnings generated: 5
[INFO] Done FindBugs Analysis....
[FINDBUGS] Searching for all files in ... that match the pattern findbugsXml.xml
[FINDBUGS] Parsing 1 file in ...
[FINDBUGS] Successfully parsed file /.../findbugsXml.xml of module ... with 5 unique warnings and 0 duplicates.
[FINDBUGS] Computing warning deltas based on reference build #301

My Jenkins is installed on a Linux and I'm using IBM JDK 8 with following version information:

java version "1.8.0"
Java(TM) SE Runtime Environment (build pxa6480-20150129_02)
IBM J9 VM (build 2.8, JRE 1.8.0 Linux amd64-64 Compressed References 20150116_231420 (JIT enabled, AOT enabled)
J9VM - R28_Java8_GA_20150116_2030_B231420
JIT  - tr.r14.java_20150109_82886.02
GC   - R28_Java8_GA_20150116_2030_B231420_CMPRSS
J9CL - 20150116_231420)
JCL - 20150123_01 based on Oracle jdk8u31-b12

Spotbugs Project

@gleclaire

Spotbugs is a community replacement of findbugs. Information can be followed over on spotbugs.

A couple of months ago, there was some talk about what to do with findbugs maven plugin since spotbugs is drop in place replacement. Since I already had a fork, the decision was made to use a branch there and get that released. Everything is in RC status currently with spotbugs. In order to be as compliant or close to findbugs maven plugin as possible I raised a few pull requests to apply additional work I was doing. Two versions have been released for spotbugs at this point with second one ironing out some issues the updates I had been working for newer maven presented to findbugs plugins (in new PR today against this repo). Now quite a number of projects are using spotbugs maven plugin or spotbugs variation (checkstyle, fbcontrib, findsecbugs). The first official release of spotbugs-maven-plugin occurred on 6/29. Already there are 200 downloads shown on central statistics which I suspect is greatly going to grow as word gets out.

Yesterday all my current pull requests were merged into findbugs maven plugin. I have since rebased and sent another pull request while releasing another spotbugs maven plugin picking up other changes in recent week to this project.

Yesterday I was invited into the spotbugs project and asked to donate the code to them or keep versions sync'd. So my thought initially was that I wasn't getting any real traction here and probably would completely flip the repo over to them but still keep it showing it's original roots forked from here. At that point the master there would become all about spotbugs. Now that my PRs are merged, I still think that is appropriate but before doing anything wanted to get some feedback if it makes sense to have two separate repos for the needs here where any issues on legacy at least for some time are addressed here at findbugs maven plugin then consumed over on spotbugs maven plugin, or if this project should just entirely flip over to spotbugs.

I did release spotbugs-maven-plugin today aligning with their version scheme.

Thoughts?

Add html report generation

The issue (and possible workarounds) I faced with is explained here.
Briefly the problem is if FindBugs plugin is configured with <failOnError>true</failOnError> property there is no easy solution to generate html reports as explained in this answer 'cos html transformation task executed after FindBugs check goal
Xml reports as they are right now are barely readable.

Not able to run integrations tests on clean checkout

After running:

mvn -DtestSrc=remote -Prun-its clean install

I get:

Building: prime/pom.xml
          prime/pom.xml .................................... FAILED (12.3 s)
  The build exited with code 1. See [...]/findbugs-maven-plugin/target/it/prime/build.log for details.

And inside is this message

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.922 s
[INFO] Finished at: 2017-10-13T17:47:24+02:00
[INFO] Final Memory: 15M/246M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project prime: Could not resolve dependencies for project findbugs-maven-plugin.it:prime:jar:testing: Could not find artifact org.codehaus.mojo:findbugs-maven-plugin:jar:3.0.6-SNAPSHOT  in local.central (...) -> [Help 1]

I'm not sure why "it-tools" are run in a separate execution in "pre-integration-test" phase, so I'm not sure how to fix this.

Edit: pasted the log from spotbugs by accident which has the same problem.

Invalid byte ... of ...-byte UTF-8 sequence.

If you have a class with german umlauts in its name, like "Testör", it will be written in the findbugsXml.xml as it is, meaning with characters > 7F (hex) - so the file will be encoded in ANSI.
But it is expected to be UTF-8, so the parsing of the file fails.

Tested with 3.0.4-Snapshot version of the maven plugin.

Build is not failing on project with only test sources root

FindBugs Maven Plugin behaves differently depending whether src/main/java is empty or not. If it doesn't exist (module is test-only and contains only src/test/java) build is not failing:

[INFO] --- findbugs-maven-plugin:3.0.3:findbugs (findbugs) @ findbugs-fail-build ---
[INFO] Fork Value is true
     [java] Warnings generated: 1
[INFO] Done FindBugs Analysis....
[INFO] 
[INFO] <<< findbugs-maven-plugin:3.0.3:check (findbugs) < :findbugs @ findbugs-fail-build <<<
[INFO] 
[INFO] --- findbugs-maven-plugin:3.0.3:check (findbugs) @ findbugs-fail-build ---

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

When there is some production code in module (src/main/java not empty) the build fails:

[INFO] --- findbugs-maven-plugin:3.0.3:findbugs (findbugs) @ findbugs-fail-build ---
[INFO] Fork Value is true
     [java] Warnings generated: 1
[INFO] Done FindBugs Analysis....
[INFO] 
[INFO] <<< findbugs-maven-plugin:3.0.3:check (findbugs) < :findbugs @ findbugs-fail-build <<<
[INFO] 
[INFO] --- findbugs-maven-plugin:3.0.3:check (findbugs) @ findbugs-fail-build ---
[INFO] BugInstance size is 1
[INFO] Error size is 0
[INFO] Total bugs: 1
[INFO] Private method io.github.mkordas.ClassWithFindBugsViolationInTest.unusedPrivateMethod() is never called [io.github.mkordas.ClassWithFindBugsViolationInTest] At ClassWithFindBugsViolationInTest.java:[line 5] UPM_UNCALLED_PRIVATE_METHOD
[INFO] 
To see bug detail using the Findbugs GUI, use the following command "mvn findbugs:gui"
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

I think it is bug in FindbugsViolationCheckMojo there's an if checking whether 'main' classes exist and if not, plugin assumes that there was nothing analyzed and code to fail the build is not invoked.

There are two workarounds:

  • add
    <classFilesDirectory>${project.build.testOutputDirectory}</classFilesDirectory>
    to configuration
  • add any code to src/main/java

Plugin does not work with Java 9

Trying to run the plugin with Java 9 fails:

[INFO] 
[INFO] >>> findbugs-maven-plugin:3.0.5:check (default) > :findbugs @ Java >>>
[INFO] 
[INFO] --- findbugs-maven-plugin:3.0.5:findbugs (findbugs) @ Java ---
[INFO] Fork Value is true
     [java] WARNING: An illegal reflective access operation has occurred
     [java] WARNING: Illegal reflective access by org.dom4j.io.SAXContentHandler (file:/Users/james/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar) to method com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser$LocatorProxy.getEncoding()
     [java] WARNING: Please consider reporting this to the maintainers of org.dom4j.io.SAXContentHandler
     [java] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
     [java] WARNING: All illegal access operations will be denied in a future release
     [java] Warning: Unknown version of Java
     [java] edu.umd.cs.findbugs.JavaVersionException: Could not parse Java version string: 9
     [java] 	at edu.umd.cs.findbugs.JavaVersion.<init>(JavaVersion.java:68)
     [java] 	at edu.umd.cs.findbugs.JavaVersion.<clinit>(JavaVersion.java:44)
     [java] 	at edu.umd.cs.findbugs.DetectorFactory.isEnabledForCurrentJRE(DetectorFactory.java:248)
     [java] 	at edu.umd.cs.findbugs.FindBugs.isDetectorEnabled(FindBugs.java:256)
     [java] 	at edu.umd.cs.findbugs.FindBugs2$3.choose(FindBugs2.java:906)
     [java] 	at edu.umd.cs.findbugs.plan.ExecutionPlan.build(ExecutionPlan.java:168)
     [java] 	at edu.umd.cs.findbugs.FindBugs2.createExecutionPlan(FindBugs2.java:935)
     [java] 	at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:241)
     [java] 	at edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
     [java] 	at edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)

findbugs maven plugin not support for Java 10

[java] Unable to get XClass for com/Test
[java] java.lang.IllegalArgumentException
[java] At org.objectweb.asm.ClassReader.(ClassReader.java:170)
[java] At org.objectweb.asm.ClassReader.(ClassReader.java:153)
[java] At edu.umd.cs.findbugs.asm.FBClassReader.(FBClassReader.java:35)
[java] At edu.umd.cs.findbugs.classfile.engine.asm.ClassReaderAnalysisEngine.analyze(ClassReaderAnalysisEngine.java:48)
[java] At edu.umd.cs.findbugs.classfile.engine.asm.ClassReaderAnalysisEngine.analyze(ClassReaderAnalysisEngine.java:34)
[java] At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:262)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:75)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
[java] At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:262)
[java] At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:673)
[java] At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:966)
[java] At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:877)
[java] At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:225)
[java] At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
[java] At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)

<plugins> are not added to the findbugs:gui classpath

When adding custom findbugs plugins via <plugins> they seem to be copied to the target/ directory when calling findbugs:findbugs, but not included in the configuration file for loading when calling findbugs:gui or simply calling findbugs:check.

It would be good to support the <plugins> section on both findbugs:check and findbugs:gui.

Am I missing any setting? From the javadoc, it would appear that only findbugs:findbugs supports <plugins>?

Could not parse Java version string: 9-ea

With command:
/opt/jdk/bin/java --permit-illegal-access -cp /opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven33-agent-1.8.1.jar:/opt/maven/boot/plexus-classworlds-2.5.2.jar:/opt/maven/conf/logging jenkins.maven3.agent.Maven33Main /opt/maven/ /opt/apache-tomcat-8.5.4/webapps/jenkins/WEB-INF/lib/remoting-3.7.jar /opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.8.1.jar /opt/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.8.1.jar 44527

I get the following error:

     [java] Warning: Unknown version of Java
     [java] edu.umd.cs.findbugs.JavaVersionException: Could not parse Java version string: 9-ea
     [java] 	at edu.umd.cs.findbugs.JavaVersion.<init>(JavaVersion.java:68)
     [java] 	at edu.umd.cs.findbugs.JavaVersion.<clinit>(JavaVersion.java:44)
     [java] 	at edu.umd.cs.findbugs.DetectorFactory.isEnabledForCurrentJRE(DetectorFactory.java:248)
     [java] 	at edu.umd.cs.findbugs.FindBugs.isDetectorEnabled(FindBugs.java:256)
     [java] 	at edu.umd.cs.findbugs.FindBugs2$3.choose(FindBugs2.java:906)
     [java] 	at edu.umd.cs.findbugs.plan.ExecutionPlan.build(ExecutionPlan.java:168)
     [java] 	at edu.umd.cs.findbugs.FindBugs2.createExecutionPlan(FindBugs2.java:935)
     [java] 	at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:241)
     [java] 	at edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:402)
     [java] 	at edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1200)

Invalid byte 2 of 3-byte UTF-8 sequence with version 3.0.1

Hello,

I've got the following error on my project using findbugs-maven-plugin 3.0.1, whereas I don't have any problem with 3.0.0 or even older versions.
It seems that whereas I use UTF-8 for output/source/report encoding in the Maven build, the generated findbugsXml.xml file uses my local encoding (Cp1252). I can see it because the findbugs explanation messages in it are in french, and the non-ASCII french letters (e.g. é, è...) are not encoded in UTF-8 but in Cp1252.

[ERROR] Invalid byte 2 of 3-byte UTF-8 sequence. -> [Help 1]
org.xml.sax.SAXParseException; systemId: file://c/CommonFolder/workspace/project/module1/target/findbugsXml.xml; lineNumber: 2; columnNumber: 14266; Invalid byte 2 of 3-byte UTF-8 sequence.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at groovy.util.XmlSlurper.parse(XmlSlurper.java:205)
at groovy.util.XmlSlurper.parse(XmlSlurper.java:223)
at groovy.util.XmlSlurper$parse.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
at org.codehaus.mojo.findbugs.FindBugsMojo.generateXDoc(FindBugsMojo.groovy:723)
at org.codehaus.mojo.findbugs.FindBugsMojo.execute(FindBugsMojo.groovy:687)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.xerces.impl.io.MalformedByteSequenceException: Invalid byte 2 of 3-byte UTF-8 sequence.
at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.scanContent(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanContent(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
... 31 more

findbugs maven plugin not support for Java 1.8

findbugs maven plugin will crash with exception as below when build using java 1.8. And with findbugs 3.0.0 release, it actually supports Java 1.8. Should the maven plugin match the progress?:
[java] The following errors occurred during analysis:
[java] Unable to get XClass for java/lang/StringBuilder
[java] java.lang.ArrayIndexOutOfBoundsException: 5747
[java] At org.objectweb.asm.ClassReader.readClass(Unknown Source)
[java] At org.objectweb.asm.ClassReader.accept(Unknown Source)
[java] At edu.umd.cs.findbugs.asm.FBClassReader.accept(FBClassReader.java:44)
[java] At org.objectweb.asm.ClassReader.accept(Unknown Source)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:110)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:587)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:76)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
[java] At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:268)
[java] At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:652)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addInheritanceEdge(Subtypes2.java:1260)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addSupertypeEdges(Subtypes2.java:1233)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addClassAndGetClassVertex(Subtypes2.java:275)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addClass(Subtypes2.java:244)
[java] At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:941)
[java] At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:997)
[java] At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:225)
[java] At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:393)
[java] At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1317)
[java] Unable to get XClass for java/lang/String
[java] java.lang.ArrayIndexOutOfBoundsException: 5747
[java] At org.objectweb.asm.ClassReader.readClass(Unknown Source)
[java] At org.objectweb.asm.ClassReader.accept(Unknown Source)
[java] At edu.umd.cs.findbugs.asm.FBClassReader.accept(FBClassReader.java:44)
[java] At org.objectweb.asm.ClassReader.accept(Unknown Source)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:110)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:587)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:76)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
[java] At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:268)
[java] At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:652)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addInheritanceEdge(Subtypes2.java:1260)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addSupertypeEdges(Subtypes2.java:1233)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addClassAndGetClassVertex(Subtypes2.java:275)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addClass(Subtypes2.java:244)
[java] At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:941)
[java] At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:997)
[java] At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:225)
[java] At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:393)
[java] At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1317)
[java] Unable to get XClass for java/lang/Class
[java] java.lang.ArrayIndexOutOfBoundsException: 207
[java] At org.objectweb.asm.ClassReader.a(Unknown Source)
[java] At org.objectweb.asm.ClassReader.readUTF8(Unknown Source)
[java] At org.objectweb.asm.ClassReader.readClass(Unknown Source)
[java] At org.objectweb.asm.ClassReader.accept(Unknown Source)
[java] At edu.umd.cs.findbugs.asm.FBClassReader.accept(FBClassReader.java:44)
[java] At org.objectweb.asm.ClassReader.accept(Unknown Source)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:110)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:587)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:76)
[java] At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
[java] At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:268)
[java] At edu.umd.cs.findbugs.ba.XFactory.getXClass(XFactory.java:652)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addInheritanceEdge(Subtypes2.java:1260)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addSupertypeEdges(Subtypes2.java:1233)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addClassAndGetClassVertex(Subtypes2.java:275)
[java] At edu.umd.cs.findbugs.ba.ch.Subtypes2.addClass(Subtypes2.java:244)
[java] At edu.umd.cs.findbugs.ba.AnalysisContext.setAppClassList(AnalysisContext.java:941)
[java] At edu.umd.cs.findbugs.FindBugs2.setAppClassList(FindBugs2.java:997)
[java] At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:225)
[java] At edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:393)
[java] At edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1317)
[java] Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 40705
[java] at org.objectweb.asm.ClassReader.readClass(Unknown Source)
[java] at org.objectweb.asm.ClassReader.accept(Unknown Source)
[java] at edu.umd.cs.findbugs.asm.FBClassReader.accept(FBClassReader.java:44)
[java] at org.objectweb.asm.ClassReader.accept(Unknown Source)
[java] at edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:110)
[java] at edu.umd.cs.findbugs.classfile.engine.ClassParserUsingASM.parse(ClassParserUsingASM.java:587)
[java] at edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:76)
[java] at edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
[java] at edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:268)
[java] at edu.umd.cs.findbugs.ba.npe.TypeQualifierNullnessAnnotationDatabase.getXMethod(TypeQualifierNullnessAnnotationDatabase.java:363)
[java] at edu.umd.cs.findbugs.ba.npe.TypeQualifierNullnessAnnotationDatabase.addMethodParameterAnnotation(TypeQualifierNullnessAnnotationDatabase.java:425)
[java] at edu.umd.cs.findbugs.ba.DefaultNullnessAnnotations.addDefaultNullnessAnnotations(DefaultNullnessAnnotations.java:69)
[java] at edu.umd.cs.findbugs.ba.npe.TypeQualifierNullnessAnnotationDatabase.loadAuxiliaryAnnotations(TypeQualifierNullnessAnnotationDatabase.java:460)
[java] at edu.umd.cs.findbugs.ba.AnalysisContext.updateDatabases(AnalysisContext.java:962)
[java] at edu.umd.cs.findbugs.FindBugs2.analyzeApplication(FindBugs2.java:1154)
[java] at edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:282)
[java] at edu.umd.cs.findbugs.FindBugs.runMain(FindBugs.java:393)
[java] at edu.umd.cs.findbugs.FindBugs2.main(FindBugs2.java:1317)

Findbugs fails with Maven 3.6.0

reactor: Unable to parse configuration of mojo org.codehaus.mojo:findbugs-maven-plugin:3.0.0:findbugs for parameter pluginArtifacts: Cannot assign configuration entry 'pluginArtifacts' with value '$æplugin.artifactså' of type java.util.Collections.UnmodifiableRandomAccessList to property of type java.util.ArrayList

Add bug IDs to the build stdout

Currently Output looks like:

BugInstance size is 1
Error size is 0
Total bugs: 1
Method com.pimco.popcorn.camel.rest.MyClass.method(String) declares RuntimeException in throws clause [package.MyClass] At MyClass.java:[line 16]

if would be nice if every bug instance the BUG_ID would be displayed as well. Currently when I have to figure that out, I have to go through the extra step of running the findbugs:gui.

this should be something easy to implement...

Plugins from repos besides central

I wasn't able to configure this plugin with its nested plugins option to use any repository in my POM or settings.xml - it seems to always assume Maven central.

Changelog?

Where do I find the change log for this project? The releases don't seem to have them, and there doesn't seem to be a CHANGELOG file in the repo.

maxRank ignored by goal check?

The parameter does not seem to have any effect. I'm also slightly confused by the naming. Does the parameter actually determine the maximum rank to be concerned with? A minimum rank to be concerned with would make more sense IMO, although lower rank ~ higher number. It might be that I am completely misunderstanding the parameter.

FindBugs runs too slow

My project has 1000+ classes and it takes FindBugs about 5 minutes to check it.
How can I improve the performance and make it run faster?
Thanks.

Add ability to audit exclusions

When configuring exclusions there may be a time when refactoring code removes the need to have the exclusion. It would be nice if there was an optional flag to audit the exclusions and warn on any exclusions that did not actually suppress anything.

findbugs:gui doesn't load plugins

The plugin with detectors is supplied via dependency. The check goal sees and uses the plugged in detectors. But the GUI starts without the plugin and this messes up bug descriptions and relevant info:
fbgui_noplugins

Failure on java 9(-ea+159): Unable to make private java.io.File(java.lang.String,java.io.File) accessible

Given the environment:

$ mvn -X
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 9-ea, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.12.3", arch: "x86_64", family: "mac"

my commons-text build referencing org.apache.maven.plugins:maven-site-plugin:3.6, which in turn utilizes our version of the findbugs-maven-plugin, currently 3.0.0 (but I have also tried the HEAD of master, 3.0.5-SNAPSHOT), seems to fail with the following error trace:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.6:site (default-site) on project commons-text: Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.6:site failed: No signature of method: java.io.File.exists() is applicable for argument types: () values: []
[ERROR] Possible solutions: write(java.lang.String), with(groovy.lang.Closure), print(java.io.PrintWriter), is(java.lang.Object), print(java.lang.Object), printf(java.lang.String, java.lang.Object)
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.6:site (default-site) on project commons-text: Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.6:site failed: No signature of method: java.io.File.exists() is applicable for argument types: () values: []
Possible solutions: write(java.lang.String), with(groovy.lang.Closure), print(java.io.PrintWriter), is(java.lang.Object), print(java.lang.Object), printf(java.lang.String, java.lang.Object)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:547)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-site of goal org.apache.maven.plugins:maven-site-plugin:3.6:site failed: No signature of method: java.io.File.exists() is applicable for argument types: () values: []
Possible solutions: write(java.lang.String), with(groovy.lang.Closure), print(java.io.PrintWriter), is(java.lang.Object), print(java.lang.Object), printf(java.lang.String, java.lang.Object)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
	... 20 more
Caused by: groovy.lang.MissingMethodException: No signature of method: java.io.File.exists() is applicable for argument types: () values: []
Possible solutions: write(java.lang.String), with(groovy.lang.Closure), print(java.io.PrintWriter), is(java.lang.Object), print(java.lang.Object), printf(java.lang.String, java.lang.Object)
	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
	at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:49)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
	at org.codehaus.mojo.findbugs.FindBugsMojo.canGenerateReport(FindBugsMojo.groovy:534)
	at org.apache.maven.reporting.exec.MavenReportExecution.canGenerateReport(MavenReportExecution.java:89)
	at org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports(AbstractSiteRenderingMojo.java:267)
	at org.apache.maven.plugins.site.render.SiteMojo.execute(SiteMojo.java:115)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	... 21 more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.