gpt4 book ai didi

每个循环的 Java 都被 PMD 标记为 UR 异常

转载 作者:IT老高 更新时间:2023-10-28 21:01:25 27 4
gpt4 key购买 nike

我想确认这是否是 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 异常标记很有用。

最佳答案

您似乎遇到了 PMD 中的错误。 DataflowAnomalyAnalysis rule 似乎没有捕捉到所有可能类型的变量定义(找到另一个示例 here )。UR 代表“ undefined reference ”,这显然是不正确的。

那么,你能做什么呢?

由于问题似乎主要影响规则的 UR 部分,您可以禁用它并继续使用 DU 和 DD 部分。您需要一个相当新的 PMD 版本来执行此操作。在您的规则集文件中,抑制 UR 的发现,如下所示:

<rule ref="rulesets/java/controversial.xml/DataflowAnomalyAnalysis">
<properties>
<property name="violationSuppressRegex" value="^Found 'UR'-anomaly.*"/>
</properties>
</rule>

更新: 对于 PMD 6.+,规则 ref 已更改(感谢 ZuziaKru):

<rule ref="category/java/errorprone.xml/DataflowAnomalyAnalysis">
<properties>
<property name="violationSuppressRegex" value="^Found 'UR'-anomaly.*"/>
</properties>
</rule>

在我看来,整个 UR 检查有点过头了,因为编译器不会接受 undefined reference 。而如今,运行编译器已不再是什么大不了的事。

关于每个循环的 Java 都被 PMD 标记为 UR 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592497/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com