什么是NPath复杂度以及如何避免它?

问题描述 投票:8回答:2

在此行:

public Map getAll(BusinessTargetPK pkBusinessTargetId) throws Exception

我收到此错误:

NPath复杂度为32,768(最大允许为200)

并且在这一行:

public Map getAll( Long  RLE_ROLE_ID  ) throws Exception {

我收到此错误:

方法getAll()的NPath复杂度为2048

我完全不知道什么是NPath复杂度及其含义。

有人可以提供建议如何避免这种类型的错误吗?

java sonarqube pmd
2个回答
15
投票
此链接:https://modess.io/npath-complexity-cyclomatic-complexity-explained/

很好解释:

方法的NPath复杂度是通过该方法的非循环执行路径的数量。

这意味着您应该避免使用带有(嵌套)if / else语句的长函数。

所以我的建议是:

    将功能拆分为较小的功能
  1. 如果可能,消除无用的if / else语句

3
投票
[这是一个旧线程,Wolverine789现在可能已经找到了答案,但是对于那些仍然在Google搜索结果中找到该线程的人,我发现Niklas Modess对错误的以下描述很有帮助:

https://modess.io/npath-complexity-cyclomatic-complexity-explained/

© www.soinside.com 2019 - 2024. All rights reserved.