【发布时间】:2019-01-16 20:58:09
【问题描述】:
我想确认这是否是 PMD 的错误?如果是,我如何提交票证。
public static void main(final String[] args) {
for (final String string : args) {
string.getBytes(); //UR Anomaly
}
for (int i = 0; i < args.length; i++) {
args[i].getBytes();
}
}
第 1-3 行被标记为 UR 异常,而重写它以使用局部变量进行迭代很好。
希望消除尽可能多的 PMD 违规,但不得不求助于旧循环构造作为解决方法很不方便。
虽然存在争议,但我不希望禁用此规则,因为我发现 DD 和 DU 异常标记很有用。
【问题讨论】:
-
@bmargulies,我知道使用 String.getBytes()。 UR 不代表“未使用的结果”。这甚至不是问题,我可以简单地使用经过 SOP 处理的字符串,但我想要一个 SSCCE,其中只有我感兴趣的 UR 异常违规被标记为。
-
@jeremyjjbrown,我觉得它很有用,您不能更改迭代器变量。仅供参考,这不是 PMD 抱怨的原因;)
-
@jeremyjjbrown 有一个不可变的迭代值很有用(上面代码中的字符串不是迭代器,而是迭代值),这样您就知道迭代值(字符串)被设置一次并且不能被意外更改。
-
没关系,我明白你的意思。字符串仅在循环范围内是最终的。
标签: java for-loop code-analysis static-analysis pmd