SonarQube 目录缠结索引的问题
Problems with the SonarQube Directory Tangle Index
我们正在使用最新版本 (5) 的 SonarQube 来分析我们的项目。我对它如何计算 Directory Tangle Index(以前称为 Package Tangle Index)有一些疑问,我无法在其他任何地方找到答案。
为什么SonarQube需要访问class个文件来计算缠结指数? java 文件中未包含的分析需要哪些信息?
上面指定class文件位置时,为什么要提供这么深的路径?我想指定 "project.sonar.java.binaries=/path/bin/" 而不是“...=/path/bin/com/company/project/a/b/”。我也可以使用 "...=/path/bin/**/*.class" 或其他一些通配符。为此,我是否需要为项目中的每个包指定一个单独的 class 文件位置?我们遇到的问题是,我们正在尝试通过自动化流程生成 SonarQube 配置文件,并且向下钻取以查找所有必要的路径是一个问题——当流程运行时,执行此操作所需的信息不可用。
为什么,当我点击 "Directory Tangle Index" 的 link 时,我得到的页面是否显示 "No DSM data available for the component"?我在某处读到,对于复杂的项目,SonarQube 无法提供有关哪些目录混乱的信息。为什么不?或者是我们只为每个项目指定一个 class 文件路径,而不是列出所有单独的子目录?
缠结索引听起来很有趣,但如果我不能深入了解哪些包显示缠结,那么它对改进我们的代码没有多大帮助。
所以这个问题实际上有三个问题:
这主要是历史原因造成的。 java 分析器中的语义分析是最近才开始的,在此之前,很难 100% 确定 class 中引用的类型(假设没有工具可以利用数据)。所以解决方案是依赖于对字节码的分析。
sonar.java.binaries
需要指向包含您的 .class
文件的目录,但它应该位于根包中,因为查找 class 假设包是来自 属性 中指定的目录之一的目录。 (因此,如果 sonar.java.binaries
被定义为指向 path/bin
,对于 class com.mycompany.A
我们将查找 path/bin/com/mycompany/A.class
文件)。
这需要更多信息才能提供详细帮助。 (就像你陈述的来源)。
我们正在使用最新版本 (5) 的 SonarQube 来分析我们的项目。我对它如何计算 Directory Tangle Index(以前称为 Package Tangle Index)有一些疑问,我无法在其他任何地方找到答案。
为什么SonarQube需要访问class个文件来计算缠结指数? java 文件中未包含的分析需要哪些信息?
上面指定class文件位置时,为什么要提供这么深的路径?我想指定 "project.sonar.java.binaries=/path/bin/" 而不是“...=/path/bin/com/company/project/a/b/”。我也可以使用 "...=/path/bin/**/*.class" 或其他一些通配符。为此,我是否需要为项目中的每个包指定一个单独的 class 文件位置?我们遇到的问题是,我们正在尝试通过自动化流程生成 SonarQube 配置文件,并且向下钻取以查找所有必要的路径是一个问题——当流程运行时,执行此操作所需的信息不可用。
为什么,当我点击 "Directory Tangle Index" 的 link 时,我得到的页面是否显示 "No DSM data available for the component"?我在某处读到,对于复杂的项目,SonarQube 无法提供有关哪些目录混乱的信息。为什么不?或者是我们只为每个项目指定一个 class 文件路径,而不是列出所有单独的子目录?
缠结索引听起来很有趣,但如果我不能深入了解哪些包显示缠结,那么它对改进我们的代码没有多大帮助。
所以这个问题实际上有三个问题:
这主要是历史原因造成的。 java 分析器中的语义分析是最近才开始的,在此之前,很难 100% 确定 class 中引用的类型(假设没有工具可以利用数据)。所以解决方案是依赖于对字节码的分析。
sonar.java.binaries
需要指向包含您的.class
文件的目录,但它应该位于根包中,因为查找 class 假设包是来自 属性 中指定的目录之一的目录。 (因此,如果sonar.java.binaries
被定义为指向path/bin
,对于 classcom.mycompany.A
我们将查找path/bin/com/mycompany/A.class
文件)。这需要更多信息才能提供详细帮助。 (就像你陈述的来源)。