Sonar扫描报错“函数复杂度过高”怎么解决?

码农思捷 阅读 2

我们项目接入了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;
}
我来解答 赞 2 收藏
二维码
手机扫码查看
暂无解答

暂无解答