中暑虚脱

注册

 

发新话题 回复该主题

基于知识图谱的GIt存储库初步研究 [复制链接]

1#

摘要-知识图谱,在年由谷歌创建,它能够连接来自各种来源的信息,近年来非常出名。我们社区的研究人员利用知识图谱来实现各种目的,如改进API注意事项可访问性、生成对开发人员问题的答案以及推理常见的软件弱点等。在本工作中,我们希望利用知识图谱来帮助开发人员和项目经理理解软件存储库。为此,我们设计并实现了一个名为GitGraph的原型工具,它以一个Git存储库作为输入,并自动构建一个与存储库相关联的知识图谱。我们的初步实验结果表明,GitGraph可以正确地为Git项目生成知识图谱,生成的图也有助于用户理解项目。更具体地说,知识图谱一方面提供了一个图形界面,以便用户可以交互地探索集成的人工产物,如提交和更改的方法,另一方面为用户搜索不同人工产物之间的高级关系提供了方便的手段。

1引言

由LinusTorvalds于年为管理Linux内核的源代码而创建的Git已经成为世界上最流行的版本控制系统,它被用于跟踪软件系统开发过程中一般计算机文件的变化。与CVS和Subversion等将软件项目的完整历史仅存储在服务器中的传统的的客户端-服务端版本控制系统不同,Git有一个成熟的存储库(例如,完整的版本跟踪能力),它存储本地和重要的完整历史记录,这使其成为挖掘数据的有前景的存储库。

随着开源项目的激增,Git对开发人员和研究人员来说变得更加普遍。基于Web的版本控制服务(例如GitHub和BitBucket)将Git作为管理软件系统的默认机制,这一服务的引入让Git更受欢迎。这些基于Web的Git服务一方面简化了使用Git存储库的过程,另一方面为开发人员和项目经理提供了一个用户友好的界面,以便于理解项目。由于这些优势,基于网络的版本控制系统已经取得了巨大的成功。例如,GitHub已经吸引了超过万的用户,他们总共贡献了超过万的存储库,其中包括安卓Android框架代码库等流行的代码库。

尽管基于Web的Git系统取得了巨大的成功,但目前的机制没有为开发人员和管理人员提供足够的信息来快速和容易地理解项目。事实上,目前基于Web的Git系统的图形用户界面并没有为用户提供交互式可视化,用户无法直观地探索不同软件人工产物之间的关系。此外,当前图形界面提供的信息也是有限的。更具体地说,对项目(或程序文件)所做的更改信息通常可以通过提交列出,但无法提供关于总体更改的统计数据。例如,项目经理不能直接观察大多数更改的程序文件,这可能是Bug经常被引入的痛点。

为了解决上述限制,在本工作中,我们将知识图谱与Git项目相关联,为开发人员和项目经理提供理解项目的替代手段。知识图谱(KG),年谷歌在其搜索引擎中集成KG时引入的一个新术语,它由一组相互连接的类型化实体及其属性组成。本文选择KG的原因是KG的图数据库支持频繁的模式更改、实时数据更新和查询响应,以及允许用户在图中推断间接事实,这些特性使它超越了传统的关系数据库。

为了补充现有的Git表示,我们设计并实现了一个名为GitGraph的原型工具,该工具以Git项目作为输入,并输出专门为项目构建的知识图谱。GitGraph的正确性和实用性会在后面的实验中被评估。具体地说,实验经验表明,生成的知识图谱能够(1)提供一个用户可以探索的交互式可视化概述。它将原始的松散文本结构转化为相关的物理结构。例如,研究人员可以直观地查看程序文件更改的细节,又例如,程序在总体上发生了什么程度的变化。(2)支持高级(或细粒度)Git查询语言(KG数据库支持的图形查询语言)的接口。例如,用户可以利用专用的查询脚本在图上搜索给定方法的修改历史记录,包括何时更改、谁更改了它,以及更改了什么。

我们在网上提供我们的实现,以及在

分享 转发
TOP
发新话题 回复该主题