如何使用 Sonar 重​​新分析项目的完整历史?

Posted

技术标签:

【中文标题】如何使用 Sonar 重​​新分析项目的完整历史?【英文标题】:How to re-analyze complete history of a project using Sonar? 【发布时间】:2011-07-24 19:32:59 【问题描述】:

我想将自项目启动以来的整个项目历史加载到 Sonar 中。

我基本上想执行这样的代码:

0) 从 Subversion 签出版本 1 1) 从 Subversion 签出下一个版本 2) 如果提交日期与前一个日期是同一天 - 转到 1 3) 运行 mvn sonar:sonar,用提交时间覆盖构建时间 4)如果不是最后一次提交 - 转到 1

是否已经有工具可以做到这一点?有没有办法说服 Sonar 使用与当前日期不同的日期?

【问题讨论】:

我有同样的问题,我对带有“sonar.projectDate”的脚本非常感兴趣。这个脚本是你写的吗?提前致谢 【参考方案1】:

这是来自邮件列表:

确实,要导入历史数据,您必须使用“sonar.projectDate”属性(格式为 yyyy-MM-dd,例如 2010-12-25)[1] 并在每个标签/分支上启动声纳分析你想在你的项目历史中看到。

http://sonarqube.15.x6.nabble.com/re-ordering-historical-data-td3191565.html

还有一个额外的Blogpost 可以进一步解释这一点。

【讨论】:

【参考方案2】:

我只是在搜索完全相同的东西,并在 GitHub 中找到了一个方便的 bash 脚本:

https://gist.github.com/aslakknutsen/2422117

脚本检查每个标签(从作为参数给出的特定标签开始),将标签日期设置为 sonar.projectDate 并对其运行声纳分析。非常便利。我想我可能需要稍微修改一下,因为我们在 repo 中没有那么多标签,也许每周做一次分析之类的。

【讨论】:

【参考方案3】:

Python 工具,用于加载自给定日期以来每个月/周的快照。

https://gist.github.com/Cassus/6229929

【讨论】:

【参考方案4】:

只要找出来自@adam-banko 的脚本不再适用于我(因为它已经 8 岁了)。

这是一个更新的 Python3 脚本,用于上传 maven 项目的历史快照: https://gist.github.com/hughluo/c51b14cfcd9afe3f89149f478c1a65d5

用法

    更改脚本中的日期范围以满足您的需要。

    将脚本放到你的项目根pom.xml所在的文件夹中并运行

SONAR_HOST=<sonar.host.url> SONAR_LOGIN=<sonar.login> SONAR_PROJECT=<sonar.projectKey> python3 upload_snapshots_sonar.py

【讨论】:

以上是关于如何使用 Sonar 重​​新分析项目的完整历史?的主要内容,如果未能解决你的问题,请参考以下文章

质量检测工具sonar如何排除指定的目录

sonar-maven-plugin:如何在包含模式中使用项目相对路径?

Jenkins+Gradle+Sonar进行Java项目代码分析

如何正确配置属性“sonar.java.binaries”?

Git:如何分析具有多文件历史记录的代码?

Mac-Sonar系统执行代码分析