0

我们利用管道,构建成功完成后,我们正在运行以下命令:

bat "mvn sonar:sonar -B -s ${buildSettings} -Dsonar.analysis.mode=preview -Dsonar.skipDesign=true -Dsonar.report.export.path=sonar-report.json"

sonarToGerrit(severity: 'Major', postScore: true, category: 'Code-Review', newIssuesOnly: true, issuesScore: '0', noIssuesScore: '0', changedLinesOnly: true)

下面的构建日志显示它发现了很多问题,但要评论的问题是 0。

构建日志

其他帖子表明它可能找不到该报告,但我不认为是这种情况,因为它发现了许多问题。任何管道配置建议将不胜感激。

我们正在使用 Sonar Gerrit 插件版本 2.2.1、Gerrit Trigger 2.27.3 和 Jenkins Enterprise 版本是 2.60.3.1。

4

2 回答 2

1

关于您的问题的最常见情况与 SonarQube 检查整个项目这一事实有关,而不管在特定更改中所做的更改量如何。创建新报告时,它会将结果与存储在其数据库中的结果(与以前在预览以外的模式中发现的问题)进行比较。因此,声纳将之前不知道的所有问题标记为新问题(如果您根本不将此信息存储在 SonarQube 中 - 所有问题都将被标记为新问题)。但是 sonar-gerrit 插件只能将问题发布到受它正在验证的更改影响的文件中。因此,即使您将设置“newIssuesOnly”和“changedLinesOnly”设置为“false”,文件中不受更改影响的所有问题都将被忽略。

很快,检查您的声纳报告中标记为“isNew”=“true”的问题是否实际更改(对于 changedLinesOnly=true)或位于您尝试检查的提交中的已更改文件中(对于 changedLinesOnly = false)。

另一个可能的原因是项目配置设置。如果您的文件是子模块的一部分,则需要将子模块名称包含到项目基本目录 set中。或者您可能想尝试使用 “允许自动匹配”功能 。该功能尝试自动将 SonarQube 模块与 Gerrit 名称匹配(自 2.1 起可用)。


与您的问题无关的有关您的管道代码的建议:

目前,严重性(和其他枚举值)的设置识别是区分大小写的。事实上,该插件会忽略您的“主要”设置,因为它无法识别它,并将其替换为默认的“信息”值。

另一件事,我不明白为什么在设置“issuesScore”= 0 和“noIssuesScore”= 0 时将“postScore”设置为 true。为简单起见,您可以设置 postScore=false 并跳过这些设置以及“类别”。

另外,如果您使用 2.0 以上版本的插件,请注意 API 略有更改,现在使用下一个结构:

sonarToGerrit (
        reviewConfig: [ 
            issueFilterConfig: [
                severity: 'MAJOR', 
                newIssuesOnly: false, 
                changedLinesOnly: false
                ], 
            noIssuesTitleTemplate: 'Your text here',
            someIssuesTitleTemplate: 'Your text here',
            issueCommentTemplate: 'Your text here'
        ]
    )

尽管您的代码也应该可以工作(插件确实支持以前的版本),但存在错误的可能性更大。

于 2018-02-13T15:50:02.490 回答
-1

我也面临与 Sonar-Gerrit jenkins 插件相同的问题。从 Jenkins 插件站点下载它。使用 Sonar-Gerrit 插件 2.2.1,并针对 jenkins 工作区分析声纳扫描。

对于一个示例,仅更改了一个文件并将项目基础目录提供到该文件的路径,并在问题模式下运行声纳分析。

Gerrit 中未使用日志加载问题

报告已加载并包含 759 个问题 要评论的问题:0 要参与分数计算的问题:0 已发送评论

于 2018-02-28T08:13:46.440 回答