任何重要的决定都应基于数据,对于信息项目和软件开发亦是如此。如果你不仔细查看描述项目演进的数据就无法了解项目的健康状况,并给出合理的改进措施。为了分析和挖掘这些信息,我们可以从Git存储库和项目所在的代码托管平台(例如GitHub,Gitlab)获取一些有意义的数据。然而从Git/GitHub轻松获取数据实际也不是一件简单的事情。本文虫虫就给大家介绍一些Git/GitHub开源分析工具供大家学习参考。
GitHubAPI
首先要说的是Github的官方API,这是获取GitHub仓库详细的最佳方式。API非常好用,你可以使用curl或者其他任何语言打包库,获取仓库的所有信息(其他公共在线Git托管平台或者自建的Gitlab都有类似的API)。然而,讨厌的是Github对API的调用做了限制,每小时的请求数量是有限制的(匿名用户60次,授权用户次),如果你要分析大型项目(或对其中一些进行全局分析),则使用API并不是一个好的解决方案。但是,一般用来对个别构建专注于单个项目或贡献者的某种仪表板是不会受到影响的。
通过GithubAPI,你基本上获得访问浏览项目Github仓库时看到的所有信息,但是对仓库的Git信息内部信息有限(例如,想知道在最近的一天修改了哪些代码行)。你需要clone仓库后通过git命令才能获得完全信息。
GHCrawler
GHCrawler是由微软开发的一个健壮的GitHubAPI爬虫,可遍历GitHub实体和消息,对其进行搜索和跟踪。如果要对某一组织或者项目的活动进行分析,则GHCrawler特别有用。GHCrawler也受GithubAPI请求次数的限制,但是GHCrawler通过使用令牌池和轮换来优化API令牌的使用。GHCrawler支持命令行式调用,同时也支持一个Web端界面操作(ghcrawler-dashboard)
GHArchive
GHArchive是一个开源的一个项目,用于记录公共GitHub时间轴,对其进行存档,并使其易于访问以进行进一步分析。GitHubArchive获取所有的GitHubevents信息存储在一组JSON文件中,以便根据需要下载并脱机处理。
另外,GitHubArchive也可以作为公共数据集在GoogleBigQuery上使用。该数据集每小时自动更新一次,可以在几秒钟内对整个数据集运行任意类似SQL的查询。
GHTorren
和GHArchive类似,GHTorrent项目也用来监视Github公共事件时间表信息。对于每个事件,它都详尽地检索其内容和相互依赖性。然后将结果JSON的信息存储到MongoDB数据库,同时还将其结构提取到MySQL数据库中。
GHTorrent和GHArchive有点类似,两者区别是GHArchive旨在提供更详尽的事件集合,按小时频率获取信息。而GHTorrent则以更结构化的方式提供事件数据,以使更轻松地获取所有事件有关事件的信息,数据获取频率为月。
Kibble
ApacheKibble是一套用于收集,汇总和可视化软件项目中活动的工具。Kibble架构由一个中央Kibble服务器和一组专门用于处理特定类型资源的扫描应用程序(一个gitrepo,一个邮件列表,一个JIRA实例等)并将已编译的数据对象推送到Kibble服务器。
根据这些数据,可以自定义一个仪表板,其中包含许多显示项目数据的小部件(语言分类,主要贡献者,代码演变等)。从这个意义上讲,Kibble更像是一种工具,可以帮助创建项目数据信息展示Web端。
CHAOSS
CHAOSS是Linux基金会下项目,致力于创建数据析和指标定义以帮助一个健康的开源社区。CHAOSS计划项目有很多工具可以挖掘和计算项目所需的指标数据:
Augur是一个Python库、FlaskWeb应用程序和REST服务器,用于提供有关开源软件开发项目运行状况和可持续性的指标。目标是作为CHAOSS社区感兴趣的新指标的快速原型制作。
Cregit则专注于生成视图以可视化代码更改的出处
GrimoireLabBitergia旗下迄今为止最成熟和雄心勃勃的工具。GrimoireLab的目的是提供一个开源平台实现:
1.几乎可以从任何与开源开发相关的工具(数据源)中收集自动和增量数据(源代码管理,问题跟踪系统,论坛等)
自动丰富数据以清理和扩展上面收集的数据(合并重复的身份,添加有关贡献者隶属关系,计算延迟,地理数据等的其他信息)
数据可视化,按时间范围,项目,存储库,贡献者等进行过滤搜索。
GrimoireLab使用Kibana在收集的数据之上提供所有这些出色的可视化效果。
Sourced
Sourced自称为开发生命周期的数据平台。与以前的工具相比,它更多地