【问题标题】:Problems with the SonarQube Directory Tangle IndexSonarQube 目录缠结索引的问题
【发布时间】:2015-04-16 17:46:44
【问题描述】:

我们正在使用最新版本 (5) 的 SonarQube 来分析我们的项目。我对它如何计算 Directory Tangle Index(以前的 Package Tangle Index)有一些疑问,我无法在其他任何地方找到答案。

  1. 为什么 SonarQube 需要访问类文件来计算缠结指数?该分析需要哪些 Java 文件中未包含的信息?

  2. 在指定上面的类文件位置时,为什么我们必须提供这么深的路径?我想指定“project.sonar.java.binaries=/path/bin/”而不是“...=/path/bin/com/company/project/a/b/”。我也可以使用“...=/path/bin/**/*.class”或其他通配符。为此,我是否需要为项目中的每个包指定单独的类文件位置?我们遇到的问题是,我们正试图通过自动化过程生成 SonarQube 配置文件,并且向下钻取以找到所有必要的路径是一个问题——当过程运行时,所需的信息不可用。

  3. 为什么,当我单击“Directory Tangle Index”链接时,会看到一个页面显示“没有可用于组件的 DSM 数据”?我在某处读到,对于复杂的项目,SonarQube 无法提供有关哪些目录被纠缠的信息。为什么不?还是我们只是为每个项目指定一个类文件路径,而不是列出所有单独的子目录?

缠结索引听起来很有趣,但如果我无法深入了解哪些包显示缠结,那么它对改进我们的代码没有多大帮助。

【问题讨论】:

  • 能否请您准确说明您正在使用的 sonar-java-plugin 版本?

标签: java sonarqube


【解决方案1】:

所以这个问题实际上有三个问题:

  1. 这主要是由于历史原因。 java 分析器中的语义分析是最近才出现的,在此之前,很难 100% 确定源中类中引用的类型(假设没有工具可以利用数据)。所以解决方案是依靠对字节码的分析。

  2. sonar.java.binaries 需要指向包含您的 .class 文件的目录,但它应该位于根包中,因为假设包是来自属性中指定的目录之一。 (所以如果sonar.java.binaries 被定义为指向path/bin,对于com.mycompany.A 类,我们将查找path/bin/com/mycompany/A.class 文件。

  3. 这需要更多信息才能提供详细帮助。 (就像你声明的来源)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-15
    • 2017-03-16
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 2016-12-02
    相关资源
    最近更新 更多