我最近开始在我正在做的Java构建中使用findbugs静态分析工具。第一份报告返回了带有高优先级警告的负载。作为一种强迫症的人,我准备好将他们全部淘汰。但是,我一定会丢失一些东西。比较事物时,我会收到大多数警告。如下面的代码:

   public void setSpacesPerLevel(int value)
   {
      if( value >= 0)
      {
         spacesPerLevel = value;
      }
      else
      {
         spacesPerLevel = 0;
      }
   }

在读取的if语句中产生高优先级警告。

文件:Indenter.java,行:60,类型:
BIT_AND_ZZ,优先级:高,类别:
正确性检查是否((...)&
0)== 0英寸
sample.Indenter.setSpacesPerLevel(int)

我正在将一个int与一个int进行比较,这似乎很普通。通过类似的简单比较,我得到了很多此类错误。

对于看似简单的代码块,我还有很多其他高优先级警告。我在这里想念什么吗?我意识到静态分析会产生误报,但我看到的错误对于案例而言似乎微不足道,无法成为误报。

这个也让我挠头。
    for(int spaces = 0;spaces < spacesPerLevel;spaces++)
    {
       result = result.concat(" ");
    }

给出以下findbugs警告:
File: Indenter.java, Line: 160, Type: IL_INFINITE_LOOP, Priority: High, Category: CORRECTNESS

There is an apparent infinite loop in sample.Indenter.indent()

This loop doesn't seem to have a way to terminate (other than by perhaps throwing an exception).

有任何想法吗?

因此,基本上我有一些文件和与上述类似的50-60个高优先级警告。我正在使用findbugs 1.3.9并从findbugs ant任务中调用它

更新:
我有一个由hudson服务器执行的构建,并且Clover正在检测代码以进行代码覆盖。当我将其关闭时,我所有的高优先级警告都消失了。现在这很有意义。感谢您的反馈。

最佳答案

更新:我有一个 hudson 服务器正在执行此构建,并且Clover正在检测代码以进行代码覆盖。当我将其关闭时,我所有的高优先级警告都消失了。现在这很有意义。感谢您的反馈。

08-05 18:01
查看更多