gpt4 book ai didi

Javascript IF( Sonar 误报?)

转载 作者:行者123 更新时间:2023-12-03 00:13:06 29 4
gpt4 key购买 nike

我刚刚在 SonarQube 中发现了一个误导性问题,我们的代码如下(JS)

{…}
function test(searchQuery, role) {

console.log("inputs: " +searchQuery + ", " + role );
if (!searchQuery && role) {
console.log("first");
}
if (searchQuery && !role) {
console.log("sec");
}
if (searchQuery && role) {
console.log("3");
}
console.log("END");
}
{…}

Sonarqube (6.7.4) 将最后一个 If 标记为带有注释的问题,应该修复它以避免每次 true(在第一个IF中实际上有一个返回,我修改了代码以进行测试)

根据测试值,输出为:

inputs: aaa, fff
test.txt.html:14 3
test.txt.html:16 END
test.txt.html:6 inputs: null, fff
test.txt.html:8 first
test.txt.html:16 END
test.txt.html:6 inputs: null, null
test.txt.html:16 END

我不是 javascript 专家,只是发现有趣的是,有人知道吗,是否有任何理由为什么最后一个 if 应该每次都为 true?因为我不这么认为,reg。测试数据。

If you will place returns into first two IFs to be in place, then the code will continue in two cases: - if both variables are set, or if both are null, but if (null, null) should return undefined, not?

感谢您的澄清

最佳答案

如果您提供实际分析的代码以及您在 SonarQube 中遇到的精确问题,那么帮助您会更容易。我无法使用您发布的代码重现任何问题,但我可以在每个 if block 中使用 return 语句重现问题(基于消息末尾的注释) )。

function test(searchQuery, role) {
if (!searchQuery && role) {
return;
}
if (searchQuery && !role) {
return;
}
if (searchQuery && role) {
return;
}
}

SonarQube 然后在第三个 if 语句的条件中突出显示 role 并引发以下问题:重构此代码,以便该表达式并不总是计算为正确。

searchQuery 为 true 并且 role 为 false 时,第二个 if 语句的条件为 true,第二个 return 语句被执行。这意味着当 searchQuery 在第三个 if 语句的条件下为真时,role 不能为假。换句话说,可以从第三个 if 语句的条件中删除 role 而不会影响行为。

关于Javascript IF( Sonar 误报?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54633692/

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