принуди maven да провали изграждането на ненулеви нарушения

Имам простия код по-долу за тестване на анотацията findbugs NonNull с maven.

Изпълнявам "mvn clean install site" и получавам директория target/site/css и target/site/images, но нищо повече. Очаквах да получа отчет, който казва, че println(null) нарушава условието NonNull.

Какво трябва да направя, за да получа този отчет?

Освен това, има ли начин да се предотврати успехът на "mvn clean install", ако има нарушения на NonNull?


Забележка: Наясно съм, че мога да получа такъв отчет със Sonar; Въпреки това бих искал „mvn clean install“ да се провали, ако има такива грешки, без да е необходимо след това да се използва допълнителен инструмент Sonar.


src/main/java/test/Hello.java

package test;
import edu.umd.cs.findbugs.annotations.NonNull;
public class Hello {
    static public void print(@NonNull Object value) {
        System.out.println("value: " + value.toString());
    }

    static public void main(String[] args) {
        if (args.length > 0) {
            print(args[0]);
        } else {
            print(null);
        }
    }
}

и файла pom.xml:

<?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>hello</groupId>
  <artifactId>hello</artifactId>
  <version>1.0</version>

  <dependencies>
    <dependency>
      <groupId>net.sourceforge.findbugs</groupId>
      <artifactId>annotations</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>net.sourceforge.findbugs</groupId>
      <artifactId>jsr305</artifactId>
      <version>1.3.7</version>
    </dependency>
  </dependencies>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>2.5.2</version>
      </plugin>
    </plugins>
  </reporting>
</project>

---

Актуализация, решение

решение, базирано на отговора от Аугусто: Добавете това към файла pom.xml под проект:

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>2.5.2</version>
        <configuration>
          <includeTests>true</includeTests>
        </configuration>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
          <execution>
            <id>findbugs-test-compile</id>
            <phase>test-compile</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

С това "mvn clean install" ще се провали, ако има нарушение на NonNull.

Докладването не работеше за мен, защото използвам maven 3 и функцията за отчитане се промени в maven 3 (сега използва нормален плъгин за maven)


person David Portabella    schedule 08.11.2012    source източник
comment
Какво друго сте опитвали? Прочетохте ли ръчния запис, където се обяснява как да го направите? mojo.codehaus.org/findbugs-maven-plugin/plugin-info. html ?   -  person Augusto    schedule 08.11.2012
comment
благодаря Аугусто, това реши въпроса; моля, добавете отговор, за да мога да го приема.   -  person David Portabella    schedule 08.11.2012
comment
Просто добавих отговора. Благодаря!   -  person Augusto    schedule 08.11.2012
comment
Добър въпрос и отговор, но решението открива много повече грешки, отколкото само проблемите с поясненията. Как да огранича FindBugs да се интересуват само от анотациите?   -  person Daniel Kaplan    schedule 08.05.2014


Отговори (1)


Дейвид,

Отговорът на вашия въпрос е в документацията на приставката за maven findbugs (вижте findbugs:check )

person Augusto    schedule 08.11.2012