【问题标题】:Can SonarQube perform retrospective analysis of past commits?SonarQube 可以对过去的提交进行回顾性分析吗?
【发布时间】:2018-04-14 18:43:55
【问题描述】:

我正在考虑为我们团队的项目实施代码质量工具。

SonarQube 似乎是一个不错的选择。我还没有弄清楚理想的工作流程(我们使用 SVN 和 Maven 项目,并且有一个 Jenkins 服务器在每次提交时运行测试)。

除了能够分析当前提交质量的重要性之外,历史演变也很有趣。

鉴于我们已经有几年的提交,是否有可能在设置项目时要求对这些提交进行回顾性分析,或者 SonarQube 是否仅适用于来自从哪一天开始安装?

【问题讨论】:

    标签: sonarqube software-quality


    【解决方案1】:

    SonarQube 仅显示扫描仪上传的数据。您可以签出任何提交(在此处阅读更多内容:Checkout a specific revision from Subversion from the command line),然后执行扫描程序。使用的扫描仪取决于您使用哪种构建工具:

    分析结果将被推送到 SonarQube 服务器。不幸的是,它总是被视为应用程序的最后一个版本,因此您不能将一些旧提交的分析“插入”到项目历史中。但是你真的需要吗?扫描仪总是分析所有来源。如果有人在三年前添加了一些代码并且没有人删除它,那么它将在服务器上可用。如果代码被删除,那么您不应该花时间分析不再存在的东西。这就是为什么 SonarQube 总是显示项目的最后状态。

    您可以阅读Fabrice Bellingrad(2016 年 4 月 6 日)写的一篇好博文:Stop planning; fix the leak!

    阅读更多关于SonarQube Architecture and Integration的信息。

    【讨论】:

    • 感谢您的提示!您能否在此响应的基础上进一步澄清以下内容:1.“签出任何提交并执行扫描程序”是什么意思。 2. 如果扫描器有可能将结果发布到同一个项目中,使用原始提交号/日期(即将历史数据添加到同一个项目)。
    • @mmalmeida 我扩展了答案。我希望现在更清楚。
    【解决方案2】:

    是的,这可以使用sonar.projectDate 分析参数来实现。它的目的正是您所要求的。

    引用自docs

    为分析指定一个日期。此参数仅在您需要追溯创建之前未分析项目的历史记录时才有用。格式为 yyyy-MM-dd,例如:2010-12-01。由于您无法执行数据库中最近一次之前的分析,因此您必须按时间顺序重新创建项目历史记录,最旧的在前。

    例如,您可以按时间顺序查看最近的 10 个版本标签(最旧的在前!)。对于每个标签运行分析,sonar.projectDate 设置为标签的创建日期。

    【讨论】:

      猜你喜欢
      • 2013-10-05
      • 2015-11-27
      • 2017-04-02
      • 2017-04-02
      • 1970-01-01
      • 2020-12-30
      • 2015-12-08
      • 2021-10-19
      • 2021-12-15
      相关资源
      最近更新 更多