10 多个工具可帮助您可视化 GitHub 和 Git 项目数据

2025-06-09

10 多个工具可帮助您可视化 GitHub 和 Git 项目数据

任何重要的决策都应以数据为基础。任何影响软件项目的决策都应如此。在没有仔细研究描述项目演变(不仅包括代码变更,还包括社区变化,尤其是在开源项目中)的数据之前,您不应该就项目的健康状况或改进措施得出任何结论。大多数情况下,这意味着需要从 Git 存储库和项目所在的代码托管平台(例如 GitHub)中获取一些有意义的数据。

问题就在这里。实际上,从 Git/GitHub 轻松获取数据相当困难。如果你想分析多个项目(例如,了解你的项目与其他“类似”项目相比的进展),如果不投入大量时间,几乎不可能实现。这并非因为人们对挖掘这些数据缺乏兴趣。许多研究人员(包括我们自己)专注于从挖掘的数据中开发新的软件工程理论。甚至还有一个专门针对这一研究领域的会议。

但到目前为止,我还没能找到一个工具

  • 涵盖项目周围的大量数据源(当然包括 Git 和问题/错误跟踪器,还有其他导入器,例如来自社区可能正在使用的沟通渠道)
  • 支持“按需”从多个项目中提取数据。如果该工具能够帮助我找到我想深入了解的项目(使用基于项目语言、规模、受欢迎程度等的搜索工具),那就更好了。
  • 让我决定如何分析数据(而不是将其限制在一些预先定义的可视化方法中)。如果数据具有时间维度就更好了。
  • 无需花费数周时间准备运行该过程的脚本(并花费更多周时间等待它们完成)

虽然我还没有找到(对我来说)完美的工具,但至少我们确实有一些不错的工具可以帮助你为软件数据准备这种ETL 流程。根据你的场景,其中一个工具可能就足够了。或者你可以组合使用它们。让我们看看我所了解的 Git 和/或 GitHub 分析工具(并告诉我我可能遗漏了哪些工具)。和往常一样,这篇文章并不打算对这些工具进行详尽而完美的分析,而只是对我在多个地方记录的大量笔记和想法进行一些整理。

GitHub API

这是最显而易见的选择。GitHub 本身提供了一个公共 API来查询任何项目。遗憾的是,每小时的请求数量有限制 ,因此,如果您要分析大型项目(或对多个项目进行全局分析),使用该 API 并非理想之选。但如果您想构建某种专注于单个项目或贡献者的仪表板,那么这已经足够了。一个不错的方面是,您还可以订阅,以便在项目中发生某些事件后收到通知。这正是我们在stargazer 机器人中使用的策略

请记住,通过此 API,您可以访问浏览项目的 GH 存储库时看到的基本所有信息,但您对“项目 Git 端”内部的了解有限(例如,如果您想知道最后一天修改了哪些代码行)。

微软 GHCrawler

GHCrawler是一款强大的 GitHub API爬虫,它遍历 GitHub 实体队列,以传递方式检索和存储其内容。如果您需要跟踪一组组织和代码库,GHCrawler 尤其有用。请注意,之前的速率限制仍然适用,但 GHCrawler 采用令牌池和轮换机制来优化 API 令牌的使用(如果您能够从“亲朋好友”那里收集到多个令牌)。

GitHub 档案

GitHub Archive是一个用于记录 GitHub 公共时间线、进行归档并方便进一步分析的项目。GH Archive 将所有GitHub 事件存储在一组 JSON 文件中,您可以根据需要下载并离线处理这些文件。

另外,GH Archive 也可以作为Google BigQuery上的公共数据集使用 :该数据集每小时自动更新一次,让您能够在几秒钟内对整个数据集运行 任意类似 SQL 的查询。请参阅以下查询示例

GHTorrent

GHTorrent 监控Github 公开事件时间线。对于每个事件,它会详尽地检索其内容及其依赖关系。然后,它将 JSON 响应存储到MongoDB 数据库,同时将其结构提取到 MySQL 数据库

如您所见,它的目标与 GH Archive 相似。GH Archive 旨在提供更详尽的事件集合,而 GH Torrent 则更致力于以更结构化的方式提供事件数据,以便您更轻松地获取与事件相关的所有信息。请参阅本文以进行更深入的比较

吉塔娜

Gitana是我们为解决构建用户友好且通用的软件数据分析解决方案而自主研发的尝试。使用 Gitana,您可以将 Git 仓库及其相关的 GitHub 数据导入关系数据库,然后只需使用 SQL 查询即可获取所需数据。我们还构建了即时通讯和论坛导入器,以全面了解项目状态。

Gitana 数据模型

你可能已经注意到了,我用的是过去式来描述这个工具。这是因为它我们的工具列表中属于已归档类别。

粗粒谷物

Apache Kibble是一套用于收集、聚合和可视化软件项目活动的工具。它采用与 Gitana(实际上也与列表中的其他几款工具)类似的架构,包含一个中央 Kibble 服务器和一组专门用于处理特定类型资源(例如 git repo、邮件列表、JIRA 实例等)的扫描器应用程序,并将编译后的数据对象推送到 Kibble 服务器。

基于这些数据,您可以自定义一个仪表板,其中包含多个小部件来显示项目数据(语言细分、主要贡献者、代码演变等)。从这个意义上讲,Kibble 更像是一个帮助您创建显示项目数据的网站的工具。

混乱

CHAOSS是 Linux 基金会的一个项目,致力于创建分析和指标来帮助定义社区健康状况。作为该计划的一部分,我们可以找到一些旨在挖掘计算此类健康指标所需数据的工具:

  • Augur是一个 Flask Web 应用程序、  Python 库 和 REST 服务器,用于呈现开源软件开发项目健康状况和可持续性的指标。其目标是帮助 CHAOSS 社区快速构建感兴趣的新指标原型。
  • Cregit专注于生成视图以可视化代码更改的来源
  • BitergiaGrimoireLab是目前为止最成熟、最雄心勃勃的工具。GrimoireLab 的目标是提供一个开源平台,用于:
    1. 从几乎任何与开源开发贡献(源代码管理、问题跟踪系统、论坛等)相关的工具(数据源)自动和增量收集数据
    2. 自动数据丰富,以清理和扩展上述收集的数据(合并重复的身份,添加有关贡献者隶属关系、计算延迟、地理数据等的附加信息)
    3. 数据可视化,允许按时间范围、项目、存储库、贡献者等进行过滤。GrimoireLab 使用Kibana在收集的数据上实现所有这些炫酷的可视化(见下图)
  • Prospector也曾有过类似的意图,但现在已经放弃。

来源

Sourced自称是“开发生命周期的数据平台”。与之前的工具相比,它更注重项目本身的代码,而不是社区的协作。得益于其通用的 AST,您可以以与语言无关的方式查询代码库的具体细节。

Sourced GitHub 组织中,你可以找到几个有趣的数据分析项目。我最喜欢的是go-git(用纯 Go 编写的高度可扩展的 git 实现库)、Hercules(用于对仓库的完整提交历史记录执行分析任务)和gitbase(Git 仓库的 SQL 数据库接口)。

哈勃

Hubble将GitHub Enterprise 的协作、使用情况和健康数据可视化 。因此,它专注于帮助大公司了解其内部组织、项目和贡献者如何分布和协作。

Hubble Enterprise 由两个组件组成。 更新程序组件 是一个 Python 脚本,它每天从 GitHub Enterprise 设备查询相关数据,并将结果存储在 Git 存储库中。 文档组件 是一个 Web 应用程序,用于可视化收集到的数据,并托管在 GitHub Pages上。

还有更多

您还可以参考一些闭源商业工具:SnootWaydev。同样令人好奇的是,就连亚马逊(OSS Dashboard)、Netflix(OSSTracker)和 PayPal(Gander)都曾拥有自己的软件数据分析平台。现在它们都被废弃了。CatWatch 也是如此

您可能还想看看StackAnalytics (围绕OpenStack社区数据的一项有趣举措)、Git2Net (有助于从 git 存储库中提取共同编辑网络的 Python 包)和AboutCode(一组旨在揭示代码库不同方面(包括许可证信息)的工具)

鏂囩珷鏉ユ簮锛�https://dev.to/jcabot/10-tools-to-help-you-mine-and-analyze-your-github-and-git-project-data-2k1e
PREV
使用 React 的无头 WordPress
NEXT
放手让软件开发人员更出色!📺 观看或🎧 收听