CN105718376A - 一种bug、commit、相关人员关系建立方法 - Google Patents
一种bug、commit、相关人员关系建立方法 Download PDFInfo
- Publication number
- CN105718376A CN105718376A CN201610093332.8A CN201610093332A CN105718376A CN 105718376 A CN105718376 A CN 105718376A CN 201610093332 A CN201610093332 A CN 201610093332A CN 105718376 A CN105718376 A CN 105718376A
- Authority
- CN
- China
- Prior art keywords
- bug
- commit
- personnel
- objects
- relation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种bug、commit、相关人员关系建立方法。本发明建立图形数据库,将bug、commit和人员的信息以节点的形式存储并将相互关联的节点连接起来可以有效的解决这一问题,图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。本发明克服了大多数的程序设计领域的问答网站存在的效率低下、不提供与之相关的commit与技术人员的信息以及需要进行大量的查询产生性能上的缺陷等。本发明构建了一个bug对象、commit对象和人员对象三者之间的对应关系,并以这三个对象为节点,以这三者关系为边的关系网络,快速高效的帮助用户了解问题、解决问题,向用户提供一个全面的知识网络,解决关系型数据库在处理大量数据时性能下降的问题。
Description
技术领域
本发明属于软件调试领域,特别涉及一种bug、commit、相关人员关系建立方法。
背景技术
由于软件复杂性的增加,软件开发和维护过程中出现的bug的数目不断增加;另外,软件开发公司的人员频繁的流动,经常会有开发人员遇到一些自己无法解决的bug,由此产生了很多程序设计领域的问答网站(如StackOverflow、bugzillaMozilla)。如何让用户快速准确的进行搜索,更快速解决自己所遭遇的问题成了急需解决的问题。
在本发明做出之前,大多数的程序设计领域的问答网站所提供的搜索功能都基于关系型数据库。他们实现的原理是由用户输入的搜索内容去数据库中查询与之类似的数据返回给用户。用户可以参考返回的结果对比自己的问题寻找解决问题的思路。但是这种方法却存在着以下的几个的缺陷:1、随着数据库中bug的数量、种类不断增加,复杂性不断加大,用户搜索的结果集经常有几十甚至上百条,用户需要在这个结果集中再次进行人工搜索,效率低下。2、系统所提供的结果仅仅包含类似的问题信息,而并不提供与之相关的commit与技术人员的信息。不能有效地帮助用户了解自己所面临的问题,用户需要再次搜索类似bug的commit才能解决自己的问题。3、当关系型数据库中数据量十分庞大时,需要进行大量的查询,产生性能上的问题。
发明内容
本发明的目的就在于克服上述缺陷,研制一种bug、commit和相关人员的关系建立方法。
本发明的技术方案是:
一种bug、commit、相关人员关系建立方法,其主要技术特征在于步骤如下:(1)抽取和识别bug源文件、commit源文件、人员源文件中每个bug、commit、人员的实体与属性,进行预处理,并分别建立bug对象、commit对象、人员对象;
(2)使用python的nltk包构建一个带监督的分类器,以bugzilla中的keywords列表中的关键词作为label构建训练语料库,在这个语料库的基础上构建分类器,对于输入的每一个bug对象、commit对象或人员对象,首先对它的描述信息经行分词,然后抽取其中的高频词对bug对象、commit对象和人员对象进行分类,生成bug对象、commit对象、人员对象的分类文件;
(3)根据bug对象与commit对象之间一个bug对象对应一个或多个commit对象的对应关系建立联系,根据bug对象的duplicate、dependson和block属性建立bug对象之间的联系,bug对象的reporter属性建立bug对象和人员对象之间的联系,根据commit对象的committer属性建立commit对象与人员对象之间的关系,根据人员对象的关注领域构建人员对象之间的联系,最后生成bug对象、commit对象、人员对象之间对应关系的文件;
(4)综合步骤(2)、步骤(3)的bug对象、commit对象、人员对象之间对应关系的文件给相似的bug对象、相似的commit对象之间建立联系,关注相似的bug对象或commit对象的人员对象之间建立联系,形成完整的bug对象、commit对象和人员对象之间的图形数据关系,最后将bug对象、commit对象、人员对象之间的相互关系以bug_id为序保存为csv格式文件;
(5)将步骤(4)生成的文件导入图形数据库软件,建立bug对象、commit对象、人员对象的节点,根据csv文件的内容连接各个节点,建立图形数据库。
本发明的优点和效果在于构建了一个bug对象、commit对象和人员对象三者之间的对应关系。提供给搜索问题的开发者一个以这三个对象为节点,以这三者关系为边的关系网络,快速高效的帮助用户了解问题、解决问题。同时解决了处理大量数据时关系型数据库性能衰退的问题。主要有如下一些优点:
(1)目前的大部分程序设计问答网站所提供的搜索功能只提供与用户所查询内容相关的类似问题,不能提供相关的其他信息(如相关知识、commit等)与关注类似领域的其他技术人员,这不利于用户了解并解决自己所遇到的问题。我们的方法构建了一个bug对象、commit对象与人员对象的关系网络,可以向用户提供一个全面的知识网络。
(2)本方法使用图形数据库而不是关系型数据库,将数据结构存储在网络中,在遍历各个节点和抽取节点信息时十分高效,解决了关系型数据库在处理大量数据时性能下降的问题。
附图说明
图1——本发明的流程示意图。
图2——本发明的bug属性关系示意图。
图3——本发明的commit属性关系示意图。
图4——本发明的人员属性关系示意图。
图5——本发明的bug源文件示意图,其中(1)是bug源文件1图,(2)是bug源文件2图,(3)是bug源文件3图。
图6——本发明的commit源文件示意图。
图7——本发明的neo4j图形数据库可视化界面示意图。
具体实施方式
本发明的技术思路是:
建立图形数据库,将bug、commit和人员的信息以节点的形式存储并将相互关联的节点连接起来可以有效的解决这一问题。图形数据库是一种非关系型数据库,它应用图形理论存储实体之间的关系信息。最常见的一个例子,就是社会网络中人与人之间的关系。关系型数据库用于存储“关系型”数据的效果并不好,其查询复杂、缓慢、超出预期,而图形数据库的独特设计恰恰弥补了这个缺陷。neo4j是一种图数据库。图形数据是以节点和边(关系)模式进行存储。每个节点可以包含一系列信息,通过Node类里面的setProperty()方法对节点信息进行存储,Node也可以使用createRelationshipTo()方法实现个节点和其他节点的联系,并且该方法返回的是一个Relationship对象,我们也可以对Relationship设置属性,也就是节点和节点之间的关系属性,以便在查找节点时对节点进行过滤。使用neo4j图形数据库自带可视化工具,其效果如图7,圆形和方形分别表示不同类型的节点,节点之间的连线表示节点之间的关系,不同的颜色表示节点的不同分类,可以简单直观的展现可能存在于各个节点之间多种多样的关系,进行节点的遍历和筛选。
本发明的方法是首先从bug、commit、人员的数据源文件中提取出bug、commit、人员的属性,建立bug、commit、人员的对象。通过分析bug对象、commit对象和人员对象的属性,构建出一个以bug对象、commit对象、人员对象为节点,以其相互之间的关系为边的图形数据关系,形成bug对象、commit对象、人员对象之间关系的图形数据库。
基于bug、commit和相关人员的图形数据关系是利用计算机将点、线、面等图形基本元素按一定数据结构进行存储的数据集合。它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。在图形数据库中,以“节点空间”来表达领域数据——相对于传统的模型表、行和列来说,节点空间是很多节点、关系和属性(键值对)构成的网络。相比于关系型数据库,图形数据库在遍历信息节点和柚取节点信息方面的能力十分强大,可以更有效的表示bug节点、commit节点和人员信息节点之间的关系。
下面具体说明本发明。
如图1-6所示,步骤如下:
步骤1).抽取和识别bug源文件(如图5,其中(1)包含bug_ID、bug_Msg、whiteboard、platform、status、component、product、assigned、Duplicates等与bug相关的属性,(2)包含Dependson、Blocks、report_time、reporter、modifiea_time、CCList等与bug相关的属性,(3)包含bug_pre、bug_comment等与bug相关的属性)、commit源文件(如图6包含commit_id、bug_id、committer等与commit相关的属性)、人员源文件中每个bug、commit、人员的实体与属性,进行预处理,分别建立bug对象、commit对象和人员对象。如:①根据图2中bug实体和属性的对应关系,抽取bug_id、bug描述信息:bug_msg和bug_pre、bug评论信息:bug_comment、bug应用平台:platform、bug产生的product、bug的分配信息assigned、报告人reporter、关注者CCList、是否存在类似的bug:duplicate、阻塞这个bug解决的bug和被这个bug阻塞的bug:dependson和blocks;②根据图3中commit实体和属性的对应关系,抽取commit_id、commit所对应的bug的bug_id、commit的提交者comitter、commit的描述信息commit_msg;③根据图4中人员实体和属性的对应关系,抽取人员的id、人员所关注的领域、人员提问的bug、人员提交的commit。
步骤2).使用python的nltk包构建一个带监督的分类器,以bugzilla中的keywords列表中的关键词作为label构建训练语料库,在这个语料库的基础上构建分类器,对于输入的每一个bug对象、commit对象或人员对象,首先对它的描述信息经行分词,去掉无关词汇,然后抽取其中的高频词对bug对象、commit对象和人员对象进行分类,生成bug对象、commit对象、人员对象的分类文件。如:
Bug描述信息为“Createdattachment378363[details]
exampleofaworkingrunxpc.pyscriptinwindowsmobile
Inordertogetxpcshelltestsrunningonwindowsmobile,weneedtoworkwiththecrippledversionofpythonthatwehaveavailabletous.Thismeanstheharnessscriptneedstoadjustfor:
-popenanduseofreturnvalues
-tmpdir
-forwardslashvsbackslash
IhaveattachedanexamplewhichworksonWinMo(stillhavetofigureouthowtogettheresults)butwillshowsomeofthechangesthatweneedtotake.
Wecancreateanewsetofscriptsforwindowsmobileorretrofittheexistingscripts(whichIprefer)toworkwiththelimitedpythonandossupport.”
分词后的结果为:
[′Created′,′attachment′,′378363′,′[′,′details′,′]′,′example′,′of′,′a′,′working′,′runxpc.py′,′script′,′in′,′windows′,′mobile′,′In′,′order′,′to′,′get′,′xpcshell′,′tests′,′running′,′on′,′windows′,′mobile′,′,′,′we′,′need′,′to′,′work′,′with′,′the′,′crippled′,′version′,′of′,′python′,′that′,′we′,′have′,′available′,′to′,′us′,′.′,′This′,′means′,′the′,′harness′,′script′,′needs′,′to′,′adjust′,′for′,′:′,′-′,′popen′,′and′,′use′,′of′,′return′,′values′,′-,′tmpdir′,′-,′forward′,′slash′,′vs′,′backslash′,′I′,′have′,′attached′,′an′,′example′,′which′,′works′,′on′,′WinMo′,′(′,′still′,′have′,′to′,′figure′,′out′,′how′,′to′,′get′,′the′,′results′,′)′,′but′,′will′,′show′,′some′,′of′,′the′,′changes′,′that′,′we′,′need′,′to′,′take′,′.′,′We′,′can′,′create′,′a′,′new′,′set′,′of′,′scripts′,′for′,′windows′,′mobile′,′or′,′retrofit′,′the′,′existing′,′scripts′,′(′,′which′,′I′,′prefer′,′)′,′to′,′work′,′with′,′the′,′limited′,′python′,′and′,′os′,′support′,′.′]
根据词性分类后抽取高频词的结果为:
soript,python,example,backslash,use,set,return,support,vs,popen,version,slash,forward,runxpc.py,order,tmpdir
这些高频词即为这个bug的label信息,可以视为这个bug的精准描述,我们可以依靠这些label信息,在图形数据库中匹配到最为类似的其他bug对象,并建立联系。
步骤3).根据bug对象与commit对象之间一个bug对象对应一个或多个commit对象的对应关系建立联系,根据bug对象的duplicate、dependson和block属性建立bug对象之间的联系,bug对象的reporter属性建立bug对象和人员对象之间的联系,根据commit对象的committer属性建立commit对象与人员对象之间的联系。根据人员对象的关注领域构建人员对象之间的联系。如:bug493748对应的commit的
commit_id为002d9a4569dbe1ff55bec54db4eff7e38d12d8eb
dependson为504932515962516050552847
blocks为491903503240
Reporter为JoelMaher
所以可以将bugbug493748与
commit002d9a4569dbe1ff55bec54db4eff7e38d12d8eb之间建立联系;
bug493748与bug504932bug515962bug516050bug552847bug491903bug503240建立联系;bug493748与JoelMaher之间建立联系这是从bug对象、commit对象本身所具有的属性的角度出发,建立bug、commit和人员之间的联系。
步骤4).综合步骤2)和步骤3)的bug对象、commit对象、人员对象之间对应关系的文件给相似的bug对象、相似的commit对象之间建立联系,关注相似的bug对象或commit对象的人员对象之间建立联系。形成完整的bug对象、commit对象和人员对象之间的图形数据关系,最后将bug对象、commit对象、人员对象之间的相互关系以bug_id为序保存为csv格式文件。综合步骤2)和步骤3)的结果,将获得更加丰富、准确的图形数据关系。
步骤5).将步骤4)的文件导入图形数据库,建立bug对象、commit对象、人员对象的节点,根据csv文件的内容连接各个节点,建立图形数据库。其效果如图7,圆形和方形分别表示不同类型的节点,节点之间的连线表示节点之间的关系,不同的颜色表示节点的不同分类,可以简单直观的展现可能存在于各个节点之间多种多样的关系,进行节点的遍历和筛选。
Claims (1)
1.一种bug、commit、相关人员关系建立方法,其特征在于步骤如下:
(1)抽取和识别bug源文件、commit源文件、人员源文件中每个bug、commit、人员的实体与属性,进行预处理,并分别建立bug对象、commit对象、人员对象;
(2)使用python的nltk包构建一个带监督的分类器,以bugzilla中的keywords列表中的关键词作为label构建训练语料库,在这个语料库的基础上构建分类器,对于输入的每一个bug对象、commit对象或人员对象,首先对它的描述信息经行分词,然后抽取其中的高频词对bug对象、commit对象和人员对象进行分类,生成bug对象、commit对象、人员对象的分类文件;
(3)根据bug对象与commit对象之间一个bug对象对应一个或多个commit对象的对应关系建立联系,根据bug对象的duplicate、dependson和block属性建立bug对象之间的联系,bug对象的reporter属性建立bug对象和人员对象之间的联系,根据commit对象的committer属性建立commit对象与人员对象之间的关系,根据人员对象的关注领域构建人员对象之间的联系,最后生成bug对象、commit对象、人员对象之间对应关系的文件;
(4)综合步骤(2)、步骤(3)的bug对象、commit对象、人员对象之间对应关系的文件给相似的bug对象、相似的commit对象之间建立联系,关注相似的bug对象或commit对象的人员对象之间建立联系,形成完整的bug对象、commit对象和人员对象之间的图形数据关系,最后将bug对象、commit对象、人员对象之间的相互关系以bug_id为序保存为csv格式文件;
(5)将步骤(4)生成的文件导入图形数据库软件,建立bug对象、commit对象、人员对象的节点,根据csv文件的内容连接各个节点,建立图形数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610093332.8A CN105718376B (zh) | 2016-02-17 | 2016-02-17 | 一种bug、commit、相关人员关系建立方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610093332.8A CN105718376B (zh) | 2016-02-17 | 2016-02-17 | 一种bug、commit、相关人员关系建立方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718376A true CN105718376A (zh) | 2016-06-29 |
CN105718376B CN105718376B (zh) | 2018-09-25 |
Family
ID=56156059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610093332.8A Active CN105718376B (zh) | 2016-02-17 | 2016-02-17 | 一种bug、commit、相关人员关系建立方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718376B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294140A (zh) * | 2016-08-02 | 2017-01-04 | 中国科学院软件研究所 | 一种基于代码仓库提交说明的PoC快速生成方法 |
CN107368605A (zh) * | 2017-07-31 | 2017-11-21 | 成都四方伟业软件股份有限公司 | 一种基于图数据库的动态建模方法 |
CN107545019A (zh) * | 2017-03-02 | 2018-01-05 | 微云数聚(北京)科技有限公司 | 一种图数据库数据驱动的可视化方法及系统 |
CN108090234A (zh) * | 2018-01-12 | 2018-05-29 | 扬州大学 | 一种面向软件缺陷的信息网络自动构建方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060036592A1 (en) * | 2004-08-11 | 2006-02-16 | Oracle International Corporation | System for ontology-based semantic matching in a relational database system |
CN102629230A (zh) * | 2012-03-07 | 2012-08-08 | 南京邮电大学 | 一种基于多特征缺陷再分配图分配缺陷报告的方法 |
-
2016
- 2016-02-17 CN CN201610093332.8A patent/CN105718376B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060036592A1 (en) * | 2004-08-11 | 2006-02-16 | Oracle International Corporation | System for ontology-based semantic matching in a relational database system |
CN102629230A (zh) * | 2012-03-07 | 2012-08-08 | 南京邮电大学 | 一种基于多特征缺陷再分配图分配缺陷报告的方法 |
Non-Patent Citations (2)
Title |
---|
TEGAWEND´E F. BISSYAND´: "Empirical Evaluation of Bug Linking", 《2013 17TH EUROPEAN CONFERENCE ON SOFTWARE MAINTENANCE AND REENGINEERING》 * |
武岩松: "开发者质量信息在缺陷预测中的效用分析", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294140A (zh) * | 2016-08-02 | 2017-01-04 | 中国科学院软件研究所 | 一种基于代码仓库提交说明的PoC快速生成方法 |
CN106294140B (zh) * | 2016-08-02 | 2018-12-18 | 中国科学院软件研究所 | 一种基于代码仓库提交说明的PoC快速生成方法 |
CN107545019A (zh) * | 2017-03-02 | 2018-01-05 | 微云数聚(北京)科技有限公司 | 一种图数据库数据驱动的可视化方法及系统 |
CN107368605A (zh) * | 2017-07-31 | 2017-11-21 | 成都四方伟业软件股份有限公司 | 一种基于图数据库的动态建模方法 |
CN108090234A (zh) * | 2018-01-12 | 2018-05-29 | 扬州大学 | 一种面向软件缺陷的信息网络自动构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105718376B (zh) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105718376A (zh) | 一种bug、commit、相关人员关系建立方法 | |
US10747958B2 (en) | Dependency graph based natural language processing | |
CN108304382B (zh) | 基于制造过程文本数据挖掘的质量分析方法与系统 | |
TWI706260B (zh) | 基於行動端NoSQL資料庫的索引建立方法及裝置 | |
CN109376153B (zh) | 一种基于NiFi的数据写入图数据库的系统及方法 | |
CN106528898A (zh) | 将非关系型数据库数据转换到关系型数据库的方法及装置 | |
US11921742B2 (en) | Method and apparatus for intelligent visual analysis and display of cross-source heterogeneous data | |
CN104137095A (zh) | 用于演进分析的系统 | |
Khedri et al. | Handling database schema variability in software product lines | |
CN105069153A (zh) | 专利分析系统 | |
Taleghani | Executive information systems development lifecycle | |
CN106980617B (zh) | 一种基于json语句操作数据库的方法和系统 | |
Grefenstette et al. | Search Based Applications | |
CN113722564A (zh) | 基于空间图卷积能源物资供应链的可视化方法及装置 | |
CN104331517A (zh) | 一种检索方法及装置 | |
CN115982177A (zh) | 一种基于树形维度的数据归集的方法、装置、设备及介质 | |
CN116629215A (zh) | 教学文档生成方法、装置、电子设备、存储介质 | |
CN115858810A (zh) | 自动构建知识图谱的方法、系统、计算机设备及存储介质 | |
Al Essa et al. | Data Mining and Warehousing | |
CN113434658A (zh) | 火电机组运行问答生成方法、系统、设备及可读存储介质 | |
Zheng-Ping et al. | Analysis on Cloud Data Service Platform for Digital Oilfields. | |
Zhang et al. | Research Review of Design Pattern Mining | |
CN106407266B (zh) | 一种三维计算结果格式化提取方法和装置 | |
CN113297165A (zh) | 数据处理方法、装置及数据库操作系统 | |
Russo et al. | VEBO: Validation of ER diagrams through ontologies and WordNet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |