如何处理bug"死存储到本地变量或#34;在java?

时间:2014-04-11 05:37:10

标签: java debugging findbugs

我写了一个简单的测试代码。这是一个圆圈。我想大多数人都可以想象什么是圆圈类,所以我不会粘贴它。

在测试代码中,我尝试使用无效点测试圆形构造函数,并假设抛出异常。但是发生了一个错误。我在线检查,但仍然不知道如何解决问题。有没有人可以帮助我?感谢

代码信息,bug在下面代码的最后一句

/**
 * Tests that the Circle constructor throws an exception for center Point. 
 */
@Test (expected = IllegalArgumentException.class)
public void testIllegalCenter() {
  //Instantiates a circle with an incorrect center point.
    @SuppressWarnings("unused")
    final Circle testCircle = new Circle(VALID_RADIUS, INVALID_POINT, VALID_COLOR);
}

错误报告

Bug:在CircleTest.testIllegalCenter()

中将test存储到testCircle

该指令为局部变量赋值,但不会在任何后续指令中读取或使用该值。通常,这表示错误,因为从未使用计算的值。

请注意,Sun的javac编译器通常会为最终的局部变量生成死存储。因为FindBugs是一个基于字节码的工具,所以没有简单的方法来消除这些误报。

1 个答案:

答案 0 :(得分:4)

只需删除变量并按如下方式调用构造函数:

@Test (expected = IllegalArgumentException.class)
public void testIllegalCenter() {
    new Circle(VALID_RADIUS, INVALID_POINT, VALID_COLOR);
}