gpt4 book ai didi

java - findBug intellij 中不兼容的位掩码

转载 作者:行者123 更新时间:2023-12-01 09:29:05 25 4
gpt4 key购买 nike

我在下面的代码上运行 findbugs,它给出了以下错误

不兼容的位掩码此方法将 (e | C) 形式的表达式与 D 进行比较。由于常量 C 和 D 的特定值,该表达式始终比较不相等。这可能表示逻辑错误或拼写错误。通常,出现此错误的原因是代码想要在位集中执行成员资格测试,但使用按位 OR 运算符(“|”)而不是按位 AND(“&”)。

  if (!conditionplace.isEmpty()) 
{
for (Place place : conditionplace) {
parent.writeWithModificationType(
condId,
place.getId(),
place.getDisplay()

);
}
}

我还使用 clover 进行测试覆盖

谁能帮我解决这个问题吗?

最佳答案

您遇到的错误与 Clover 的工作方式密切相关。它检测每一行代码以记录其执行情况。当它检测分支条件时,它会添加附加条件来记录真实的分支执行,从而使逻辑条件保持不变。所以在你的情况下它会做这样的事情

if (
(!conditionplace.isEmpty()) && (__CLR4_2_000ito7x4bh.R.iget(9)!=0|true) // if true
||
(__CLR4_2_000ito7x4bh.R.iget(10)==0&false) //else
) {
//code

它使用非电路运算符来确保其代码被执行,并且能够记录条件中所有表达式的执行(可能有很多)。

一般来说,Clover 添加了大量奇怪的机器生成代码(您可以检测 Java 类并查看结果),因此不建议对检测的源代码运行任何类型的静态代码分析。

关于java - findBug intellij 中不兼容的位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39599380/

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