我们使用管道,在构建成功完成后,我们运行以下内容:
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。
答案 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 评论已发送