字符串常量在SuppressWarnings注释中不起作用

时间:2014-05-14 19:41:46

标签: java annotations pmd

我有几个junit测试没有任何assert语句。 Junit刚刚通过或

预计exception。但是由于这个PMD抱怨测试应该包括assert

或验证PMD.JUnitTestsShouldIncludeAssertOrVerify

所以我定义了一个静态的最终字符串常量,因为有很多方法。

private static final String PMD_WARNING = "PMD.JUnitTestsShouldIncludeAssertOrVerify";

@SuppressWarnings(PMD_WARNING)
public void test...{
}

但这似乎不起作用。它正在编译正常,但PMD检查不再识别SuppressWarnings注释而失败。如果我直接将文字字符串作为参数包含在SuppressWarnings注释中而不是使用常量,那么它可以正常工作。

它有什么理由不起作用吗?

1 个答案:

答案 0 :(得分:1)

包括@SupressWarnings在内的所有注释都将在编译时进行评估。

但是第一次加载此类时会计算静态最终值。

所以在@SupressWarnings评估期间的编译时,你的常量字符串尚未加载并且可用。