【问题标题】:maven ignoring findbugs suppressFBWarnings annotationmaven 忽略 findbugs suppressFBWarnings 注释
【发布时间】:2013-02-19 17:47:12
【问题描述】:

我有 2 个项目正在使用 maven 中的 FindBugs 插件来识别错误。我还使用@SuppressFBWarnings 注释来忽略特定的错误。

在第一个项目中,我将依赖项添加到 pom.xml 中,findbugs 报告和注释都运行良好。在第二个项目中,生成了报告,但它仍然识别出我使用注释抑制的错误。

我运行 mvn clean install site 在我的机器上的 build 文件夹中生成报告。

我提到的两个项目中的每一个都有子项目,在它们的子目录中都有自己的 pom.xml 文件,所以在父目录中,我也有一个 pom.xml。此目录布局在两个主要项目中完全相同。

这是我在 <reporting> 标签下添加到父 pom 中的 XML:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <xmlOutput>true</xmlOutput>
        <findbugsXmlOutput>true</findbugsXmlOutput>
        <fork>true</fork>
        <threshold>Low</threshold>
        <effort>Min</effort>
    </configuration>
</plugin>

另外,在同一个父 pom 中,我将其添加到 &lt;dependencyManagement&gt;&lt;dependencies&gt; 部分:

<dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>annotations</artifactId>
        <version>2.0.1</version>
</dependency>

这在两个主要项目 pom 中是相同的。

现在,在我实际使用@SuppressFBWarnings 注释的子项目中,并且仅在那个特定的子项目中,我在&lt;dependencies&gt; 下有这个:

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>annotations</artifactId>
    <version>2.0.1</version>
</dependency>

此外,这反映在其他工作项目中。我直接复制粘贴了。

一个项目完美运行,我可以成功抑制误报。另一个项目完全忽略了@SuppressFBWarnings 注释,我似乎无法修复它。

这里有什么我遗漏的吗?

我认为如果没有找到注释,而不是给出错误,它会忽略它?我怎么知道它是否找不到?

希望这是一个简单的修复。

谢谢。

【问题讨论】:

    标签: maven maven-plugin findbugs


    【解决方案1】:

    @SuppressFBWarnings 是在版本 3 中随注解引入的。这就是它应该看起来像这样的原因:

    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>annotations</artifactId>
        <version>3.0.1</version>
    </dependency>
    

    【讨论】:

      【解决方案2】:

      尝试将注解 artifcat 添加到插件依赖项:

      <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>findbugs-maven-plugin</artifactId>
          <version>2.3.2</version>
          <configuration>
              <xmlOutput>true</xmlOutput>
              <findbugsXmlOutput>true</findbugsXmlOutput>
              <fork>true</fork>
              <threshold>Low</threshold>
              <effort>Min</effort>
          </configuration>
          <dependencies>
              <dependency>
                  <groupId>com.google.code.findbugs</groupId>
                  <artifactId>annotations</artifactId>
                  <version>2.0.1</version>
              </dependency>
          </dependencies>
      </plugin>
      

      【讨论】:

      • 嗨 Omar,感谢您的回复,但是当我尝试这样做时,我收到此错误:cvc-complex-type.2.4.a: Invalid content was found starting with element 'dependencies'. One of '{"http://maven.apache.org/POM/4.0.0":inherited, "http://maven.apache.org/POM/4.0.0":reportSets}' is expected.
      • 文件中可能有不可见的字符。尝试用你的文本编辑器(notpad++,例如)显示隐藏的字符
      • 我忘了跟进。基本上,我通过使用普通的 findbugs SuppressWarnings 而不是 SuppressFBWarnings 让它工作。我认为标准 SuppressWarnings 注释和 findbugs 注释存在问题,可能与 JAR 问题相结合。
      • eoinzy:意味着你根本没有让它与 SuppressFBWarnings 一起工作?当我按照此处所述尝试时,它对我不起作用。
      【解决方案3】:

      确保添加的依赖项位于依赖项标记之间。 像这样:

      <dependencies>
        <dependency>
           <groupId>something</groupId>
           <artifactId>something</artifactId>
            <version>something</version>
        </dependency>
      <dependencies>
      

      【讨论】:

        猜你喜欢
        • 2017-02-15
        • 2011-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-22
        • 2014-07-19
        • 2021-05-11
        相关资源
        最近更新 更多