能够通过预提交钩子运行SonarQube分析吗?

11

我读到了stackoverflow上的几篇文章,指出将Sonar用作预提交分析工具效率低下,因为它必须运行整个项目的编译、分析等操作。

然而,Sonarqube的手册说明有一个sonar.inclusions属性,用于设置要运行分析的文件列表。因此,我考虑在提交前钩子上对已更改/修改的文件运行分析并在添加太多问题的情况下中止提交。

据我所理解,可以通过svnlook获取修改和添加的文件列表;还可以将Sonar分析器指向具体的.properties文件(例如,指向仅包含编码规则和圆形复杂度以及LCOM4度量的配置文件)。

但是,我不明白如何在预提交钩子脚本中获取Sonar分析的结果,并提供链接到分析结果。这是否可能?是否有任何现实世界或至少是相关的实例可供参考?

提前感谢您的回答。

2个回答

5
然而,我不知道如何在pre-commit hook脚本中获取Sonar分析结果并提供比如链接到分析结果,这是否有可能?
从pre-commit来说,不可能。至少如果你想提交完成的话是不行的。如果pre-commit向客户端返回任何内容,则提交将被拒绝。 pre-commit只应用于检查提交以验证是否满足要求 - 检查提交消息是否已提供,如果与缺陷跟踪器集成,请确保输入了有效的缺陷ID,可能进行一些内置路径授权无法处理的安全性检查。
所有挂钩脚本都应尽可能短且高效。 特别是长时间运行的pre-commit会阻止提交者和试图在其后提交的任何其他人。
对于您的用途,post-commit hook可以工作(除非它无法向客户端发送反馈,因此您将无法提供URL),但更好的解决方案是使用持续集成服务器。 此工具将监视仓库的变化,并在符合条件的提交发生时执行您告诉它的操作。 使用该系统执行您的检查并发送带有结果的电子邮件。

2
确实,将其集成到CI流程中是个好主意;但是,我想要的是一个能够由于编码规则合规性而失败提交的系统。所以,基本上,如果分析没有达到某个阈值 - 我不需要返回任何东西;然而,如果提交的代码中有3个关键问题,我希望失败提交并将提交者链接到一个结果页面。我知道这些脚本必须轻量级;如果它们不能满足这个标准 - 没关系,但我想知道是否可能实现这样的行为。 - jiallombardo

0

我不知道这个帖子是否还活着,但是我正在处理类似的情况,因此回复一下。

Issues Report plugin 可以生成一个 HTML 文件,然后可以解析它(作为 Jenkins 任务的一部分,我使用 shell 脚本和正则表达式)来确定是否报告了新问题,如果是,则可以返回失败。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接