Sonar扫描报错“函数复杂度过高”怎么解决?
我们项目接入了Sonar代码扫描,最近提交时老是被拦住,提示“Function has a complexity of 18 which is greater than 10”。我看了下就是个普通的表单校验函数,用了几个 if-else,但确实嵌套有点多。尝试拆成小函数,但有些逻辑又不好抽离,有没有更合理的处理方式?
比如下面这段代码就被标红了:
function validateForm(data) {
if (data.name) {
if (data.name.length < 2) return false;
if (data.email) {
if (!/^S+@S+$/.test(data.email)) return false;
if (data.phone) {
if (!/^1[3-9]d{9}$/.test(data.phone)) return false;
if (data.agreeToTerms) {
return true;
}
}
}
}
return false;
}
暂无解答