关于您的问题的最常见情况与 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'
]
)
尽管您的代码也应该可以工作(插件确实支持以前的版本),但存在错误的可能性更大。