CN108090234A - 一种面向软件缺陷的信息网络自动构建方法 - Google Patents
一种面向软件缺陷的信息网络自动构建方法 Download PDFInfo
- Publication number
- CN108090234A CN108090234A CN201810047682.XA CN201810047682A CN108090234A CN 108090234 A CN108090234 A CN 108090234A CN 201810047682 A CN201810047682 A CN 201810047682A CN 108090234 A CN108090234 A CN 108090234A
- Authority
- CN
- China
- Prior art keywords
- bug
- report
- information
- code
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种面向软件缺陷的信息网络自动构建方法。本发明将软件历史库bug报告、评论信息和代码数据使用自然语言处理工具处理,使用LDA主题模型提取bug报告中描述主题词,匹配并建立bug缺陷主题属性,提取相关人员属性、bug间关系属性及代码与bug间关系属性,根据bug报告、评论信息及代码数据间的相互关系建立bug及其相关的信息网络。本发明克服了过去方法不能同时提供bug报告、评论信息及代码数据,及帮助开发者在项目代码中对bug进行分析的缺陷。本发明能够挖掘建立bug报告、评论信息及代码数据间的关系,能够得到为全面的相关bug信息,并在此基础上进一步帮助开发者理解和分析bug,帮助软件开发人员解决bug问题,节约维护时间和成本,提高维护效率。
Description
技术领域
本发明属于软件维护领域,特别涉及一种面向软件缺陷的信息网络自动构建方法。
背景技术
软件bug在软件中不可避免,为了保证软件质量,软件开发人员需要对代码中出现的bug进行修复。当他们遇到困难时,会在一些软件历史库中进行关键字搜索,根据关键字匹配查找一些相似bug来得到解决bug的一些帮助和提示。而软件历史库中存在着很多有用的信息有待挖掘和整合利用,帮助理解和解决bug问题(如:bug报告、评论信息及代码数据)。
在本发明之前,目前已有一些版本控制系统和bug追踪系统(如:Bugzilla@Mozilla)将软件历史库中的bug报告整合并提供给软件的开发人员进行搜索和查阅查考,以此来帮助他们根据得到的相关信息进行bug修复。这些项目的评论数据及代码信息中有很多有用的信息能够被挖掘,并帮助软件开发人员对软件系统进行维护,对分析和解决bug问题也能起到关键作用。
但是这些开源的软件bug报告还未能被很好地利用起来,也没有一个平台将bug报告、评论信息及代码数据这三方面数据进行整合,并加以利用帮助理解和分析bug问题。现有的一些平台只能单一的提供软件历史版本中的bug报告、评论信息,但不能同时提供bug报告、评论信息及代码数据,甚至帮助开发者在项目代码中对bug进行分析。开发人员在代码维护过程中需要花费大量时间对存在bug的代码进行理解和分析,也难以找出所有隐藏的类似的bug或者是类似bug的阻止等等,也很难找到修复类似bug的解决者等等。若能将这些bug报告、评论信息及相关代码数据建立一个bug及其相关信息的信息网络,即构建一个相互关联的bug及其相关信息网络,可以更加有效地为开发者推荐更多的有效信息,大大节约了开发人员解决bug缺陷的时间和成本。
发明内容
本发明的目的就是要克服上述问题,研发出一种面向软件缺陷的信息网络自动构建方法。
本发明技术方法是:
一种面向软件缺陷的信息网络自动构建方法,其主要技术特征在于如下步骤:
(1)将软件历史库中的bug报告和评论信息使用自然语言处理工具进行处理,提取出对应信息(例如bug报告中的描述),并按照一定的格式存储;
(2)使用LDA主题模型对(9)中提取的bug报告中的描述的主题词,匹配并建立bug缺陷的主题属性,并将bug报告通过主题归类;
(3)根据附件中Diff包含的各类代码文件后缀名确定各bug的编程语言种类,并作为bug的基本信息之一——语言;
(4)提取bug报告中基本信息,如描述主题词、语言、平台、状态、组件、关注人数,建立bug的基本信息属性,将拥有相同属性的bug连接起来;
(5)从bug报告中提取提问者和分配解决者,并从评论中提取评论者和解决者,建立bug缺陷的相关人员间属性;
(6)提取bug报告中bug之间重复、依赖和阻止关系,建立bug与bug间的关系;
(7)从步骤(3)中处理后得到的Diff中提取代码片段,并将历史代码数据使用自然语言处理工具进行处理生成代码片段,使用LDA主题模型提取代码片段中的类名和方法名,建立代码间语法调用关系,并且建立修改相同类、方法的bug与bug间关系;
(8)根据步骤(2)、(4)、(5)、(6)、(7)建立好的bug报告、评论信息及代码数据间的相互关系建立bug及其相关信息信息网络,并借助可视化工具显示。
本发明的优点和效果在于能够挖掘建立bug报告、评论信息及代码数据间的关系,能够得到为全面的相关bug信息,并在此基础上进一步帮助开发者理解和分析bug,从而帮助软件开发人员解决bug问题,节约了维护时间和成本,提高了维护效率。具体说,主要有如下一些优点:
(1)本方法通过整合bug报告、评论信息及代码数据三方面信息,生成bug及其相关信息网络。该信息网络为开发人员提供更相关更全面的缺陷信息,更加有利于开发人员解决项目中的bug问题。
(2)本方法中进行的相似代码的检测,是通过代码中的类名和方法名来进行的,以此来和开发者提出的代码信息进行比对,观察是否是从属于同一项目的代码,若属于则可以为开发者推荐较为准确的修改bug建议。
(3)本方法构建的bug缺陷信息网络直观地显示了bug与bug之间的显式关系(例如:重复、阻止和依赖等)和隐式关系(例如:相似等),可以帮助开发人员在遇到bug问题时更好地进行搜索和推荐。
附图说明
图1——本发明流程示意图
图2——本发明中bug报告示例截图
图3——本发明中bug代码数据示例截图
图4——本发明中bug及其相关信息网络效果图
具体实施方式
本发明的技术思路是:
将软件历史库中的bug报告、评论信息和代码数据分别使用自然语言处理工具进行处理,使用LDA主题模型提取bug报告中描述的主题词,匹配并建立bug缺陷的主题属性,并提取相关人员属性、bug间关系属性以及代码与bug间关系属性。根据建立好的bug报告、评论信息及代码数据间的相互关系,建立bug及其相关的信息网络。该网络可以为开发人员呈现一个比较直观的面向软件缺陷的信息网络,帮助开发人员更全面地了解和理解bug。
下面具体说明本发明。
如图1所示,其步骤如下:
步骤(1)作为软件历史库,对其中的bug报告(如图2,为Bugzilla@Mozilla中历史提交的某一bug报告,其中记录了该bug及其属性信息)和评论信息使用自然语言处理工具进行处理,提取bug报告、评论信息中的属性等基本信息,并统一成需要的格式。将每个bug的描述分别提取出来,便于接下来使用LDA主题模型对其进一步处理,从中提取出主题词。
步骤(2)使用LDA主题模型对步骤1)中提取的标题信息和描述信息分别进行主题词的提取,后根据主题词的分布匹配作为建立bug与bug间相似关系的一种,以便于之后对bug进行主题词匹配,为建立bug之间的相似关系做参考。
步骤(3)提取附件中Diff包含的各类代码文件的后缀名(如图3,为bug249332中某一段代码数据示例的截图,由于在bugzilla平台中没有直观的bug语言属性可以提取,所以可以提取出Diff中的文件名如下browser/base/content/browser-scripts.inc和browser/base/content/browser.js,并根据文件后缀名来确定该bug的编程语言属种类为JAVA),由此可以确定各bug的编程语言种类,并作为bug的基本信息之一——语言。
步骤(4)提取各bug报告中的基本信息,如描述主题词(体现bug类别)、语言、平台(体现bug环境)、状态(体现bug解决进度)、组件(体现bug背景)、关注人数(体现bug热度)等等,建立各bug的基本信息属性,也成为具有相同属性的bug之间的连接点。建立好这些关系便于后面建立bug及其相关信息网络,并有助于开发人员更直观地了解bug信息,比如bug的主题类别,解决情况等基本属性。
步骤(5)从各bug报告中提取提问者和分配解决者,并从评论中提取评论者,如果该bug的状态为FIXED或者RESOLVED,则通过评论部分查找到Resolver,并将这些相关人员作为bug的相关人员属性,由此建立bug报告与相关人员间的关系,bug之间也通过相同的人员属性而相互连接(如图4,长方体表示的即为bug的相关人员属性,并且若同一个人与不同的bug相关,则与两个bug相连并成为这两个bug的相同属性连接点),同时,开发者也可以通过了解bug的解决状态来确认是否需要详细阅读该bug报告。
步骤(6)提取bug与bug之间的各类显式关系,如重复、阻止和依赖等等,再根据对bug与bug之间描述中主题词和相关信息的相似性的计算来确定bug的隐式关系——相似,(如图4,其中Bug字体加深的圆形为bug信息网络的实体,每个bug实体都带有相应唯一的ID作为标识,bug之间的双线连接即为bug实体之间的关系连接线,线上标明了关系的种类)由此建立了bug与bug之间的各类关系。
步骤(7)在确定bug的状态为FIXED或者RESOLVED时,表示该bug已经得到了解决,即可从(3)中处理后得到的Diff中提取代码数据,并使用自然语言处理工具对其进行处理生成代码片段。使用LDA主题模型提取代码片段中的类名和方法名作为代码主题词,根据主题词的分布建立类与类之间的语法调用关系,并且建立修改相同类、方法的bug与bug间关系。
步骤(8)根据步骤(2)、(4)、(5)、(6)、(7)中建立好的bug报告、评论信息及代码数据间的相互关系建立bug及其相关信息网络,并借助可视化工具显示,如图4所示。由于该信息网络的构建,bug与bug之间通过各类属性以及各类关系相互联系起来,可以为开发人员提供更直观、更全面的bug相关信息,并有利于开发人员了解和理解bug问题,更快地修复bug问题。
Claims (1)
1.一种面向软件缺陷的信息网络自动构建方法,其特征在于如下步骤:
(1)将软件历史库中的bug报告和评论信息使用自然语言处理工具进行处理,提取出bug报告中描述的对应信息,并按照一定的格式存储;
(2)使用LDA主题模型对步骤(1)中提取的bug报告中描述的主题词,匹配并建立bug缺陷的主题属性,并将bug报告通过主题归类;
(3)根据附件中Diff包含的各类代码文件后缀名确定各bug的编程语言种类,并作为bug的基本信息之一——语言;
(4)提取bug报告中基本信息,如描述主题词、语言、平台、状态、组件、关注人数,建立bug的基本信息属性,将拥有相同属性的bug连接起来;
(5)从bug报告中提取提问者和分配解决者,并从评论中提取评论者和解决者,建立bug缺陷的相关人员间属性;
(6)提取bug报告中bug之间重复、依赖和阻止关系,建立bug与bug间的关系;
(7)从步骤(3)中处理后得到的Diff中提取代码片段,并将历史代码数据使用自然语言处理工具进行处理生成代码片段,使用LDA主题模型提取代码片段中的类名和方法名,建立代码间语法调用关系,并且建立修改相同类、方法的bug与bug间关系;
(8)根据步骤(2)、(4)、(5)、(6)、(7)建立好的bug报告、评论信息及代码数据间的相互关系建立bug及其相关信息信息网络,并借助可视化工具显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810047682.XA CN108090234A (zh) | 2018-01-12 | 2018-01-12 | 一种面向软件缺陷的信息网络自动构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810047682.XA CN108090234A (zh) | 2018-01-12 | 2018-01-12 | 一种面向软件缺陷的信息网络自动构建方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108090234A true CN108090234A (zh) | 2018-05-29 |
Family
ID=62182393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810047682.XA Pending CN108090234A (zh) | 2018-01-12 | 2018-01-12 | 一种面向软件缺陷的信息网络自动构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108090234A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800019A (zh) * | 2018-12-17 | 2019-05-24 | 北京达佳互联信息技术有限公司 | 代码管理方法、系统、电子设备和计算机可读存储介质 |
CN110221933A (zh) * | 2019-05-05 | 2019-09-10 | 北京百度网讯科技有限公司 | 代码缺陷辅助修复方法及系统 |
CN111353304A (zh) * | 2018-12-05 | 2020-06-30 | 南京慕测信息科技有限公司 | 一种众包测试报告聚合和摘要的方法 |
CN113641588A (zh) * | 2021-08-31 | 2021-11-12 | 北京航空航天大学 | 一种基于lda主题建模的软件可理解性确定方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718376A (zh) * | 2016-02-17 | 2016-06-29 | 扬州大学 | 一种bug、commit、相关人员关系建立方法 |
-
2018
- 2018-01-12 CN CN201810047682.XA patent/CN108090234A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718376A (zh) * | 2016-02-17 | 2016-06-29 | 扬州大学 | 一种bug、commit、相关人员关系建立方法 |
Non-Patent Citations (1)
Title |
---|
LU WANG 等: "Construct Bug Knowledge Graph for Bug Resolution", 《2017 IEEE/ACM 39TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING COMPANION》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111353304A (zh) * | 2018-12-05 | 2020-06-30 | 南京慕测信息科技有限公司 | 一种众包测试报告聚合和摘要的方法 |
CN111353304B (zh) * | 2018-12-05 | 2023-04-18 | 深圳慕智科技有限公司 | 一种众包测试报告聚合和摘要的方法 |
CN109800019A (zh) * | 2018-12-17 | 2019-05-24 | 北京达佳互联信息技术有限公司 | 代码管理方法、系统、电子设备和计算机可读存储介质 |
CN110221933A (zh) * | 2019-05-05 | 2019-09-10 | 北京百度网讯科技有限公司 | 代码缺陷辅助修复方法及系统 |
CN113641588A (zh) * | 2021-08-31 | 2021-11-12 | 北京航空航天大学 | 一种基于lda主题建模的软件可理解性确定方法及系统 |
CN113641588B (zh) * | 2021-08-31 | 2024-05-24 | 北京航空航天大学 | 一种基于lda主题建模的软件可理解性确定方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Borg et al. | Szz unleashed: an open implementation of the szz algorithm-featuring example usage in a study of just-in-time bug prediction for the jenkins project | |
CN102804147B (zh) | 执行abap源代码的代码检查的代码检查执行系统 | |
CN108090234A (zh) | 一种面向软件缺陷的信息网络自动构建方法 | |
US20070006128A1 (en) | Method for evaluating dynamic expressions | |
CN113656805B (zh) | 一种面向多源漏洞信息的事件图谱自动构建方法及系统 | |
CN101452443B (zh) | 逻辑结构模型创建辅助设备和方法 | |
CN105122208A (zh) | 源程序分析系统、源程序分析方法和记录有程序的非瞬时记录介质 | |
CN110704880A (zh) | 一种工程图纸的关联方法 | |
Stephan et al. | Using mutation analysis for a model-clone detector comparison framework | |
CN113487211A (zh) | 核电装备质量追溯方法、系统、计算机设备及介质 | |
CN117519656A (zh) | 一种基于智能制造的软件开发系统 | |
CN102103502A (zh) | 基于经过遗留系统的踪迹来分析遗留系统的方法和系统 | |
CN117289925A (zh) | 一种基于组件技术的软件建模方法及系统 | |
CN116483700A (zh) | 一种基于反馈机制的api误用检测与修正方法 | |
CN113377962B (zh) | 一种基于图像识别和自然语言处理的智能过程模拟方法 | |
KR101415528B1 (ko) | 분산된 시스템을 위한 데이터 오류 처리 장치 및 방법 | |
EP3968248A1 (en) | Device, computing platform and method of analyzing log files of an industrial plant | |
CN113672234A (zh) | 一种用于数控设备的智能进度监控方法及系统 | |
CN113590825A (zh) | 文本质检方法、装置及相关设备 | |
CN111214831B (zh) | 一种基于游戏引擎的特效编辑方法 | |
CN117033182A (zh) | 一种基于系统数字模型的测试用例生成方法 | |
WO2021214982A1 (ja) | セキュリティ検査装置、セキュリティ検査方法、及びプログラム | |
CN115328442A (zh) | 基于低代码平台构建的危化品企业安全风险管控平台 | |
CN116893632A (zh) | 设备运行系统及设备运行方法 | |
CN116561756A (zh) | 基于信息匹配的组件风险检测方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180529 |