Sonar Gerrit插件不报告结果

问题描述 投票:0回答:2

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

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。

sonarqube jenkins-plugins jenkins-pipeline gerrit-trigger sonar-gerrit
2个回答
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
投票

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

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

Gerrit中没有加载日志问题

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

© www.soinside.com 2019 - 2024. All rights reserved.