CN111897719B - 基于代码文本和调用关系的程序变更影响分析方法 - Google Patents
基于代码文本和调用关系的程序变更影响分析方法 Download PDFInfo
- Publication number
- CN111897719B CN111897719B CN202010633391.6A CN202010633391A CN111897719B CN 111897719 B CN111897719 B CN 111897719B CN 202010633391 A CN202010633391 A CN 202010633391A CN 111897719 B CN111897719 B CN 111897719B
- Authority
- CN
- China
- Prior art keywords
- similarity
- methods
- annotation
- threshold value
- text
- 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.)
- Active
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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本方法提供了一种基于代码文本和调用关系的程序变更影响分析方法,属于软件工程领域,包括:步骤1,通过第三方软件获取每个方法的方法调用关系;步骤2,从代码文本的角度分析初始变更集合与其他方法集合的方法文本相似性;步骤3,从方法调用关系的角度分析初始变更集合与其他方法集合的方法调用相关性;步骤4,根据步骤2和步骤3所得出的初始变更集合与每个方法集合的方法文本相似性与方法调用相关性计算综合的方法依赖程度,从而得出预测的受影响的方法集合。本方法与现有的单词差异化技术进行实验比较,验证了提出方法在精确度上具有一定的优势。
Description
技术领域
本发明属于程序变更影响分析领域,涉及一种基于代码文本和调用关系的程序变更影响分析方法。
背景技术
在当今社会,计算机技术飞速发展,覆盖了社会的各个领域,对人们的生活产生了深远的影响,同时随着社会的发展和人们需求的提高,对软件的实用性、美观性等各方面要求也越来越高。然而,尽管软件技术和开发模式等其他创新对软件的开发和维护效率、性能有一定的提高作用,但随着软件规模不断增大以及业务需求复杂化,软件可维护性降低和维护成本逐渐升高,给软件开发人员和软件使用人员造成很大负担。
软件变更影响分析技术(Change Impact Analysis,CIA)是软件开发阶段和维护阶段经常使用的一种技术。在庞大的软件系统中,软件变更会产生涟漪效应,即一个变更将会导致若干个其它的变更产生,不利于软件开发和维护,开发人员和维护人员将花费大量的时间和精力在软件项目中查询产生涟漪效应的软件位置。变更影响分析即可帮助软件开发人员自动的发现受变更影响的代码,可针对受到变更影响的代码进行修改,提高效率。在众多变更影响分析技术中,有很多技术得到运用并实现了相关的分析工具。变更影响分析涉及对文本分析,因此可以涉及并运用其他的技术来解决问题。关于程序变更影响分析,张荣提出了两种基于文本分析的方法,分别时单词等同化方法和单词差异化方法。在单词等同化方法中,对Java程序代码中的单词进行无差别的处理,只考虑其出现的频率,而在单词差异化方法中,则考虑到了Java语言方法中不同组成部分所提供的不同的信息,即将方法粒度化。
为了进一步提高预测影响集合的精确度,我们基于WordNet对代码文本相似性进行分析,并结合方法调用关系的相关程度,综合考虑方法之间的依赖程度,最终完成对受初始变更集合影响的方法集合的预测。
发明内容
基于现有技术中程序变更影响分析方法并没有考虑到结合代码文本和调用关系等信息从而带来了预测集的不准确性和完整性,因此本发明提出了一种基于代码文本和调用关系的程序变更影响分析方法解决了上述问题。并且将本方法的实验结果与现有的单词差异化技术的结果进行比较,验证了提出方法的精确度高的优势。
本发明的技术方案如下:
步骤1,通过第三方软件获取每个方法的方法调用关系;
步骤2,从代码文本的角度分析初始变更集合与其他方法集合的方法文本相似性;
步骤3,从方法调用关系的角度分析初始变更集合与其他方法集合的方法调用相关性;
步骤4,根据步骤2和步骤3所得出的初始变更集合与每个方法集合的方法文本相似性与方法调用相关性计算综合的方法依赖程度,从而得出预测的受影响的方法集合。
进一步方案,上述步骤1的具体步骤如下:
步骤1.1,使用第三方软件分析源代码获取每个方法的方法调用关系;
步骤1.2,将生成的方法调用关系导入到txt文档中;
步骤1.3,读取所有的方法调用关系。
进一步方案,上述步骤2的具体步骤如下:
步骤2.1,依次检测源代码中的每个方法,获取每个方法的方法注释、返回值类型、方法名、参数列表以及方法体粒度层次上的文本集合;
步骤2.2,基于WordNet依次对每个方法与其他方法的方法注释与方法签名计算方法注释签名相似度,判断其是否大于注释签名相似度阈值;
步骤2.3,若方法注释签名相似度大于或等于注释签名相似度阈值,则基于WordNet计算对应方法之间的方法体相似度;
步骤2.4,若方法注释签名相似度小于注释签名相似度阈值,则将对应方法之间方法体相似度计为0;
步骤2.5,判断方法体相似度是否大于或等于方法相似度阈值,大于或等于时将其加入预测可能受影响的方法集合,否则认为该方法未受到影响,不进行后续操作。
进一步方案,上述步骤3的具体步骤如下:
步骤3.1,通过第三方软件获取方法集合中每个方法的方法调用图;
步骤3.2,依次检测每个方法与其他所有方法的调用的方法的交集,将两个方法间调用方法数量最大的方法数量作为分母,交集个数作为分子,计算得出比例即为方法调用相关度,再判断其是否大于方法调用相关度阈值;
步骤3.3,若方法调用相关度大于或等于阈值,则将其加入预测可能受影响的方法集合;
步骤3.4,若方法调用相关度小于阈值,则记为0;
进一步方案,上述步骤4的具体步骤如下:
步骤4.1,依次遍历预测可能受影响的方法集合中的方法,基于其方法文本相似度与方法调用关系相关度计算综合的方法依赖程度,判断综合方法依赖程度是否大于依赖阈值;
步骤4.2,若综合方法依赖程度大于或等于依赖阈值,将其加入预测的受影响的集合,否则判定该方法未收到影响,不进行后续操作;
步骤4.3,对所有方法遍历完之后,得出最终的预测影响集合。
与现有技术相比,本发明的有益效果:
1、在对代码文本进行分析时,除了单词差异化技术中所提出的按照不同的组成结构赋予不同的重要性权值之外还利用了WordNet词典对源代码中所包含的单词进行相似度分析,对比方法中所包含的不同组织结构中每一单词与其他单词的相似度,取其中的最大值作为该单词的相似度,最终完成整个方法组成结构与其他方法的相似度计算。采用基于WordNet的相似度计算能够提高每个单词与其他单词相似匹配的精确度,进一步的提高整个技术的相似度计算的精确度。
2、基于代码文本和调用关系的程序变更影响分析方法除了在对代码文本进行分析利用之外还利用了方法之间的调用关系,从多个角度出发,相对于对单个因素分析利用更具有合理性,在方法调用层面上进行分析能够在调用的方法功能性上得出有一定程度上相似的结论,因此也在一定程度上提高了预测受影响集合的精确度
附图说明
图1是基于代码文本和调用关系的程序变更影响分析方法的技术路线图。
图2是计算代码文本相似度的流程图。
图3是计算调用关系相关度的流程图。
图4是预测影响集的流程图。
图5是对基于初始集变化的变更影响分析的实验结果。
图6是对基于相似度阈值变化的变更影响分析的实验结果。
图7是对基于组织权重变化的变更影响分析的实验结果。
具体实施方式
为了能够更清楚的理解本发明基于代码文本和调用关系的程序变更影响分析方法的技术内容,下面结合附图和具体实施案例对本发明作进一步的说明,须指出的是,所描述给出的实施案例旨在便于对本发明的理解,而对其没有任何限定要求。
本发明给出的基于代码文本和调用关系的程序变更影响分析方法的技术路线图如图1所示,第一步先是抽取方法集合;第二步基于WordNet分析单词间相似度从而计算出方法间基于代码文本的相似度;第三步是通过第三方软件解析调用关系获取方法调用关系图;第四步是根据方法调用关系图计算方法间基于调用关系的相关度;第五步是根据代码文本相似度和方法调用相关度计算方法间的综合依赖程度;第六步基于方法间的综合依赖程度和给出的初始变更集合对受影响方法集合进行预测,得出预测的影响集。
参照图2,计算代码文本相似度的过程如下:
步骤201,遍历源代码获取各方法的方法注释、方法签名、方法体等组织结构;
步骤202,遍历所得到的所有方法集合,基于WordNet对每个方法的方法注释签名与其他方法的方法注释签名进行方法注释签名相似度计算。本发明基于WordNet词典对方法注释包含的词汇进行语义相似度计算,使用Lin算法来计算两个词汇之间的相似度,主要是利用同义词集合之间的语义关系进行计算,通过计算两个词汇之间概念的相似度,将最大的概念相似度值作为两个词语之间的词语相似度,从而进一步得到方法注释签名的相似度;
步骤203,当注释签名相似度大于或等于阈值时,按照相同的方法对方法体的词语进行相似度计算,最后结合步骤202中所得到的方法注释签名相似度得出方法整体相似度,否则判定该方法未受到变更影响,不进行后续操作;
步骤204,判断方法整体相似度是否大于或等于阈值,若大于或等于,则加入预测可能受影响的方法集合中进行下一步分析,否则判定该方法未受到变更影响,不进行后续操作。
参照图3,计算调用关系相关度的过程如下:
步骤301,通过第三方软件获取各方法的方法调用关系图;
步骤302,依次获取每个方法与其他方法的方法调用关系之间的交集,以所对应方法的方法调用关系最大个数作为分母,交集个数作为分子,得出各方法间不同调用关系之间的调用关系相关度;
步骤303,判断调用关系相关度是否大于或等于阈值,若大于或等于,则加入预测可能受影响的方法集合中进行下一步分析,否则判定该方法未受到变更影响,不进行后续操作。
参照图4,预测受影响集合的过程如下:
步骤401,获取初始变更影响集合;
步骤402,根据图2中介绍的步骤计算初始变更影响集合中的方法与其他方法的代码文本相似度,并将代码文本相似度大于或等于阈值的方法加入预测可能受影响的方法集合中;
步骤403,根据图3中介绍的步骤计算初始变更影响集合中的方法与其他方法的方法调用相关度,并将方法调用相关度大于或等于阈值的方法加入预测可能受影响的方法集合中;
步骤404,对步骤402和步骤403中所得出的预测可能受影响的方法集合的方法进行遍历,综合代码文本相似度和方法调用相关度计算方法间的综合依赖程度;
步骤405,将综合依赖程度大于或等于阈值的方法加入到预测影响集合中,遍历完成后最后得到预测影响集。
为验证本发明的有效性,将本方法与单词差异化方法进行了对比实验,分别选用5个开源项目的2个版本,如表1所示。在选用实验用例的过程中,选用的都是开源代码的java项目或包,这些开源项目在其他的变更影响分析论文中也被引用过,使得实验结果更具有意义。为了得到更准确的实验数据,论文中使用Beyond Compare 4文本对比工具将不同的项目源代码进行对比,得到准确的变更的方法集。由于在相邻版本软件中软件变更不明显,尤其在方法数量百位级别的情况下,所以为了使实验结果更加有效和直观,在选取软件项目版本的原则上,论文采取跨版本方式选择两个不同的版本。实验参数设置如表2所示,固定值表示该参数在本文中未发生变化;默认值表示该参数依据实验需要进行固定和变化。
表1实验用例描述
序号 | 用例名称 | 类数 | 方法数 | AIS数量 | 测试版本 |
Proj-1 | lang的math包 | 10 | 112 | 13 | V2.1、v2.6 |
Proj-2 | lang的exception包 | 2 | 304 | 125 | V2.1、v2.6 |
Proj-3 | ant的core包 | 13 | 110 | 28 | V1.5.2、v1.8.0 |
Proj-4 | jmter的core包 | 33 | 188 | 43 | V2.12、v2.6 |
Proj-5 | hadoop的core包 | 42 | 125 | 32 | V0.23.0、v2.6.0 |
表2实验参数
参数名称 | 说明 | 参数值 | 参数类型 |
n_f | 方法名权重因子 | 50 | 固定值 |
pl_f | 参数列表权重因子 | 50 | 固定值 |
c_f | 注释权重因子 | 50 | 固定值 |
threshold_Parameter | 参数阈值默认值 | 0.2 | 固定值 |
threshold_SigAndComm | 签名和注释整体阈值 | 0.3 | 固定值 |
iis(%) | 初始变更集合百分比 | 40% | 默认值 |
threshold | 方法整体阈值 | 0.7 | 默认值 |
fu_factor | 组合权重因子 | 0.2 | 默认值 |
以上所述仅用于清楚表述本发明具体实施例,并不用于限定保护范围,在不违背本发明实质内容和精神前提下,所作任何修改、润饰等都将落入本发明保护范围内。
Claims (1)
1.一种基于代码文本和调用关系的程序变更影响方法,其特征在于,包括如下步骤:
步骤1,使用第三方软件分析源代码获取每个方法的方法调用关系;
步骤2,将生成的方法调用关系导入到txt文档中;
步骤3,读取所有的方法调用关系;
步骤4,依次检测源代码中的每个方法,获取每个方法的方法注释、返回值类型、方法名、参数列表以及方法体粒度层次上的文本集合;
步骤5,基于WordNet依次对每个方法与其他方法的方法注释与方法签名计算方法注释签名相似度,判断其是否大于注释签名相似度阈值;
步骤6,若方法注释签名相似度大于或等于注释签名相似度阈值,则基于WordNet计算对应方法之间的方法体相似度;
步骤7,若方法注释签名相似度小于注释签名相似度阈值,则将对应方法之间方法体相似度计为0;
步骤8,判断方法体相似度是否大于或等于方法相似度阈值,大于或等于时将其加入预测可能受影响的方法集合,否则认为其未受到影响,不进行后续操作;
步骤9,通过第三方软件获取方法集合中每个方法的方法调用关系集合;
步骤10,依次检测每个方法与其他所有方法的调用的方法的交集,将两个方法间调用方法数量最大的方法数量作为分母,交集个数作为分子,计算得出比例即为方法调用相关度,再判断其是否大于方法调用相关度阈值;
步骤11,若方法调用相关度大于或等于阈值,则将其加入预测可能受影响的方法集合;
步骤12,若方法调用相关度小于阈值,则记为0;
步骤13,依次遍历预测可能受影响的方法集合中的方法,基于其方法文本相似度与方法调用关系相关度计算综合的方法依赖程度,判断综合方法依赖程度是否大于依赖阈值;
步骤14,若综合方法依赖程度大于或等于依赖阈值,将其加入预测的受影响的集合,否则认为其未受到影响,不进行后续操作;
步骤15,对所有方法遍历完之后,得出最终的预测影响集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010633391.6A CN111897719B (zh) | 2020-07-04 | 2020-07-04 | 基于代码文本和调用关系的程序变更影响分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010633391.6A CN111897719B (zh) | 2020-07-04 | 2020-07-04 | 基于代码文本和调用关系的程序变更影响分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897719A CN111897719A (zh) | 2020-11-06 |
CN111897719B true CN111897719B (zh) | 2023-08-04 |
Family
ID=73191483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010633391.6A Active CN111897719B (zh) | 2020-07-04 | 2020-07-04 | 基于代码文本和调用关系的程序变更影响分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897719B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568662B (zh) * | 2021-07-23 | 2024-04-30 | 中信银行股份有限公司 | 一种基于调用关系的代码变更影响范围分析方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697121A (zh) * | 2009-10-26 | 2010-04-21 | 哈尔滨工业大学 | 一种基于程序源代码语义分析的代码相似度检测方法 |
WO2012124301A1 (ja) * | 2011-03-16 | 2012-09-20 | 日本電気株式会社 | 関連仕様対応付けシステム、関連仕様対応付け方法およびプログラム |
CN103927179A (zh) * | 2014-04-18 | 2014-07-16 | 扬州大学 | 一种基于WordNet的程序可读性分析方法 |
CN105824756A (zh) * | 2016-03-17 | 2016-08-03 | 南京大学 | 一种基于代码依赖关系的过时需求自动检测方法及系统 |
CN109144564A (zh) * | 2018-09-08 | 2019-01-04 | 中山大学 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10789054B2 (en) * | 2018-05-24 | 2020-09-29 | Find it EZ Software Corp. | Methods, systems, apparatuses and devices for facilitating change impact analysis (CIA) using modular program dependency graphs |
-
2020
- 2020-07-04 CN CN202010633391.6A patent/CN111897719B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697121A (zh) * | 2009-10-26 | 2010-04-21 | 哈尔滨工业大学 | 一种基于程序源代码语义分析的代码相似度检测方法 |
WO2012124301A1 (ja) * | 2011-03-16 | 2012-09-20 | 日本電気株式会社 | 関連仕様対応付けシステム、関連仕様対応付け方法およびプログラム |
CN103927179A (zh) * | 2014-04-18 | 2014-07-16 | 扬州大学 | 一种基于WordNet的程序可读性分析方法 |
CN105824756A (zh) * | 2016-03-17 | 2016-08-03 | 南京大学 | 一种基于代码依赖关系的过时需求自动检测方法及系统 |
CN109144564A (zh) * | 2018-09-08 | 2019-01-04 | 中山大学 | 一种基于历史修改模式的修改影响分析推荐方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111897719A (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107102993B (zh) | 一种用户诉求分析方法和装置 | |
KR101505546B1 (ko) | 텍스트 마이닝을 이용한 키워드 도출 방법 | |
CN110569629A (zh) | 二进制代码文件溯源方法 | |
CN107479879B (zh) | 一种面向软件功能维护的api及其使用推荐方法 | |
CN102737063B (zh) | 一种日志信息的处理方法及系统 | |
CN111897719B (zh) | 基于代码文本和调用关系的程序变更影响分析方法 | |
CN112199512A (zh) | 面向科技服务的事理图谱构建方法、装置、设备及存储介质 | |
Sun et al. | Effectiveness of exploring historical commits for developer recommendation: an empirical study | |
CN109919180B (zh) | 电子装置、用户操作记录数据的处理方法和存储介质 | |
CN111444411A (zh) | 网络数据增量采集方法、装置、设备及存储介质 | |
CN111400340A (zh) | 一种自然语言处理方法、装置、计算机设备和存储介质 | |
CN113076089B (zh) | 一种基于对象类型的api补全方法 | |
Glassen et al. | Finding the mean in a partition distribution | |
CN113569578B (zh) | 一种用户意图识别方法、装置和计算机设备 | |
CN112988216B (zh) | 一种基于功能结构的软件体系结构恢复方法 | |
JP6763530B2 (ja) | 歌詞のトピック推定情報生成システム | |
JP3913626B2 (ja) | 言語モデル生成方法、その装置及びそのプログラム | |
CN112783747A (zh) | 一种应用程序的执行时间预测方法及装置 | |
JP6660333B2 (ja) | 情報抽出装置、情報抽出方法及び情報抽出プログラム | |
JP4592556B2 (ja) | 文書検索装置、文書検索方法および文書検索プログラム | |
US10169074B2 (en) | Model driven optimization of annotator execution in question answering system | |
Singh et al. | QAPC (Quadratic ANT pattern classification): An Approach for Automated Test case Optimization | |
CN115543719B (zh) | 基于芯片设计的组件优化方法、装置、计算机设备及介质 | |
CN116010438B (zh) | 一种数据库操作延迟计算的方法和系统 | |
CN116719954B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |