Sonarqube 无法在sonar差异视图中分析主干和分支

Sonarqube 无法在sonar差异视图中分析主干和分支,sonarqube,Sonarqube,我有一个巨大的代码库,我正在通过声纳进行分析。我在CI构建过程中集成了声纳分析,当前结构如下所示: ---Prod build--- -ProjectKey: abc-Prod -ProjectVersion: 2.0 -ProjectName:abc ---Feature1--- -ProjectKey: abc-Feature1 -ProjectVersion: 2.0.1 -ProjectName:abc --Feature2--- -ProjectKey: abc-Feature2

我有一个巨大的代码库,我正在通过声纳进行分析。我在CI构建过程中集成了声纳分析,当前结构如下所示:

---Prod build---
-ProjectKey: abc-Prod
-ProjectVersion: 2.0
-ProjectName:abc
---Feature1---
-ProjectKey: abc-Feature1
-ProjectVersion: 2.0.1
-ProjectName:abc

--Feature2---
-ProjectKey: abc-Feature2
-ProjectVersion: 2.0.2
-ProjectName:abc
现在,我在所有特性分支上都有每晚运行的构建过程(我不希望将此更改为预览分析,也希望在所有这些分支上有一个完整的声纳)。此夜间分支分析如下所示:

---Prod build---
-ProjectKey: abc-Prod
-ProjectVersion: 2.0
-ProjectName:abc
---Feature1---
-ProjectKey: abc-Feature1
-ProjectVersion: 2.0.1
-ProjectName:abc

--Feature2---
-ProjectKey: abc-Feature2
-ProjectVersion: 2.0.2
-ProjectName:abc
我的问题是:在这样的结构中,我无法执行产品构建和功能构建之间的差异分析。我知道有“比较”选项来比较具有不同键的项目,但这对于我的案例来说还不够,因为我们希望看到新特性中添加的确切的新问题,而不是prod构建

我是否可以重新构造它,使用与Prod构建相同的代码库对特性构建进行差异分析

注意:我不能使用相同的项目密钥,因为我有一些仪表盘,shuold总是能够调出产品构建以及每个功能构建的最新分析,并且覆盖相同项目密钥的版本号会将所有结果更新为最后的分析结果


有什么建议吗?谢谢

我面临同样的问题,我计划尝试使用声纳API: 首先,将分支名称和提交id作为“sonar.projectVersion”。然后可以使用API:projects/index?search=&versions=true获取所有版本

第二:为声纳设置差分视图参数。如果可以在上一步的结果中找到分支名称,请按如下方式设置differential view参数:

 <property name="sonar.timemachine.period1" value="latest version of current branch" />
 <property name="sonar.timemachine.period4" value="latest version of current branch" />
 <property name="sonar.timemachine.period5" value="latest version of current branch" />; 
<property name="sonar.timemachine.period1" value="parent branch.commit id" />
<property name="sonar.timemachine.period4" value="parent branch.commit id" />
<property name="sonar.timemachine.period5" value="parent branch.commit id" />

; 
否则,应将项目设置为与父分支进行比较,并将差异视图参数设置为:

 <property name="sonar.timemachine.period1" value="latest version of current branch" />
 <property name="sonar.timemachine.period4" value="latest version of current branch" />
 <property name="sonar.timemachine.period5" value="latest version of current branch" />; 
<property name="sonar.timemachine.period1" value="parent branch.commit id" />
<property name="sonar.timemachine.period4" value="parent branch.commit id" />
<property name="sonar.timemachine.period5" value="parent branch.commit id" />

如何查找父分支:请参阅,

如何获取最新的提交id。请参见

您是否尝试使用
sonar.branch
属性?您可以在sonar后期构建步骤的jenkin配置页面中直接设置它。是的,sonar.branch属性执行与我实现的相同的操作。它使用sonar.branch值为要素分支项目分配一个新的项目键,如:,从而将每个要素代码库存储为不同的项目。这也有同样的限制:无法看到功能库和产品代码库之间的差异视图,因为它们都有不同的项目键。这似乎是SonarQube的一个很大的限制。在今天的功能分支和拉取请求的工作流中,该工具似乎无法真正地很好地集成。你找到替代方案了吗?像代码气候这样的工具已经存在,但我还没有看到任何适用于C#或Java的工具。