【问题标题】:Is it Possible to Run SonarQube Analysis Through Pre-commit Hooks是否可以通过预提交挂钩运行 SonarQube 分析
【发布时间】:2013-10-05 12:45:56
【问题描述】:

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

然而,sonarqube 的手册指出有一个 sonar.inclusions 属性用于设置要运行分析的文件列表。因此,我正在考虑对已更改/修改为预提交挂钩的文件进行分析,并在添加太多问题的情况下使提交失败。

据我了解,可以通过svnlook获取修改和添加的文件列表;还可以将声纳分析器指向具体的 .properties 文件(例如,指向只有编码规则、圈复杂度和 LCOM4 指标的配置的文件)。

但是,我不明白如何在预提交钩子脚本中获取 Sonar 分析的结果,并提供分析结果的链接。有可能吗?是否有任何现实世界或至少远程相关的此类做法示例?

提前致谢。

【问题讨论】:

    标签: svn sonarqube pre-commit-hook sonar-runner


    【解决方案1】:

    我不知道这个帖子是否还活着,但正在处理类似的情况并因此做出响应。

    Issues Report plugin 支持生成一个 html,然后可以对其进行解析(一个单独的过程 - 我正在使用 shell 脚本和正则表达式,作为 jenkins 作业的一部分)以确定是否报告了新问题,如果是,可能会返回失败。

    【讨论】:

      【解决方案2】:

      但是,我不明白如何在预提交钩子脚本中获取 Sonar 分析的结果,并提供分析结果的链接。有可能吗?

      从预提交,不。如果您希望完成提交,至少不会。如果 pre-commit 返回 anything 给客户端,则提交被拒绝。

      预提交只能用于检查提交以验证是否满足要求 - 检查是否提供了提交消息,如果您与错误跟踪器集成,请确保输入了有效的错误 ID,也许做一些内置的基于路径的授权无法处理的安全检查。

      所有钩子脚本应该尽可能的简短和高效。一个长期运行的预提交尤其会阻止提交者和任何其他试图在他后面提交的人。

      对于您的使用,提交后挂钩可能会起作用(除了它无法向客户端发送反馈,因此您将无法提供 URL),但更好的解决方案是使用持续集成服务器。此工具将监视存储库的更改,并在每次合格提交发生时执行您告诉它的操作。使用该系统执行检查并发送包含结果的电子邮件。

      【讨论】:

      • 确实,融入CI流程是个好主意;然而,我想要的是一个由于编码规则合规而导致提交失败的系统。所以,基本上,如果分析没有达到某个阈值——我不需要返回任何东西;但是,如果提交的代码中有 3 个关键问题,我希望提交失败并将提交者链接到带有结果的页面。我知道这些脚本必须是轻量级的;如果他们不符合这个标准 - 好的,但我想知道是否有可能实现这样的行为。
      猜你喜欢
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多