Я только что обнаружил одну вводящую в заблуждение проблему в 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) помечены последними. Если в качестве проблемы с комментарием ее следует исправить наtrue
с протестированными значениями было получено:
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
Iя не эксперт по javascript, просто нашел интересным, у кого-нибудь есть идея, if there is any reason why the last if should be everytime true
?Потому что я так не думаю, рег.тестирование данных.
Если вы поместите возврат в первые два IF, которые будут иметь место, то код будет продолжен в двух случаях: - если установлены обе переменные, или если обе переменные равны NULL, но if (null, null)
должен вернуть undefined, не так ли?
Спасибо за любые разъяснения