Sonar Gerrit插件不报告结果

时间:2018-02-09 13:49:53

标签: sonarqube jenkins-plugins jenkins-pipeline gerrit-trigger sonar-gerrit

我们使用管道,在构建成功完成后,我们运行以下内容:

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。

Build log

其他帖子表明它可能没有找到报告,但我认为不是这样,因为它发现了一些问题。非常感谢任何管道配置建议。

我们使用的是Sonar Gerrit插件版本2.2.1,Gerrit Trigger 2.27.3和Jenkins Enterprise版本是2.60.3.1。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

另一件事,我不明白为什么在设置“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'
        ]
    )

虽然您的代码也应该可以使用(插件确实支持以前的版本),但可能存在错误的可能性更大。

答案 1 :(得分:-1)

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

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

Gerrit with logs

中未加载问题

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