一种对参数中的缩写词进行自动扩展的方法技术

技术编号:19121624 阅读:44 留言:0更新日期:2018-10-10 04:58
本发明专利技术属于软件质量维护技术领域,为了解决现有缩写词扩展方法中对函数参数中缩写词进行扩展推荐较差的现状问题,提出了一种对参数中的缩写词进行自动扩展的方法,主要针对函数参数中的缩写词进行自动扩展,提出了一种基于实参‑形参相似性的缩写词扩展方法。对于给定的实参‑形参中的缩写词,根据一系列启发式规则在对应的形参‑实参以及参数类型中匹配其扩展词。只有当匹配失败时,才使用基于词典的缩写词扩展方法。本方法与现有方法的显著不同在于本方法充分利用了实参与形参之间的文本相似性以扩展参数中的缩写词。

【技术实现步骤摘要】
一种对参数中的缩写词进行自动扩展的方法
本专利技术属于软件质量维护
,涉及一种对参数中的缩写词进行自动扩展的方法。
技术介绍
在软件开发过程中,软件维护是整个软件生命周期中重要的组成部分。源代码中的标识符大约是软件中所有字符的70%。因此,高质量的标识符名称对软件的可读性和可维护性是至关重要的。软件中的标识符经常包含缩写词,这将不利于对项目的理解以及基于信息检索技术进行的软件维护活动。例如,软件维护人员在理解软件实体之前,需要对缩写词对应的扩展进行推测,这种方式是不准确的,有可能会导致维护人员对软件实体的误解;基于信息检索技术进行的软件维护也不能充分发挥出其潜能。为了使缩写词的不利影响最小化,大量的缩写词扩展方法被提出。这些方法主要基于词典进行并且具有一定的准确性。基于词典的扩展方法简单易行,得到广泛地应用。然而这些方法在扩展长度较小的缩写词时其准确性和召回率会有显著下降。本专利技术主要针对函数参数中的缩写词进行自动扩展,提出了一种基于实参-形参相似性的缩写词扩展方法。对于给定的实参-形参中的缩写词,本专利技术根据启发式规则在对应的形参-实参以及参数类型中匹配其扩展词。只有当匹配失败时,才使用基于词典的缩写词扩展方法。本方法与现有方法的显著不同在于本方法充分利用了实参与形参之间的文本相似性以扩展参数中的缩写词。
技术实现思路
本专利技术的目的是为了克服已有技术的缺陷,为了解决现有缩写词扩展方法中对函数参数中缩写词进行扩展推荐较差的现状问题,提出了一种对参数中的缩写词进行自动扩展的方法。本专利技术方法是通过下述技术方案实现的:一种对参数中的缩写词进行自动扩展的方法,其基本实施过程如下:步骤1:根据开源软件的函数定义以及函数调用信息,提取函数的形参、实参和参数相应的类型并存储到数据库中;具体的说,利用JDT工具解析项目中的标识符,提取出每个开源软件函数定义时的形参和函数调用时的实参以及参数对应的类型;其中,实参包括函数调用中参数列表中的变量或函数名称;形参包括函数定义中参数列表中的变量或函数名称。步骤2:根据步骤1提取出的函数形参、函数实参、形参类型和实参类型进行分割,并提取出其中的缩写词;具体的说,将每个标识符的名称分割为单词序列。假定标识符遵循驼峰或蛇形命名规则,因此分割标识符的依据是下划线、大写字母和数字;若分割后的单词在一般的英文词典中不能检索到,则认为其是缩写词。步骤3:对于步骤2提取出来的缩写词,利用启发式规则从其文本信息中检索对应的扩展词;具体的说,启发式规则具体为,首先对于给定的缩写词,从其对应的参数名中进行检索,若存在其相应的扩展词,则返回参数名作为扩展,检索结束;若不存在,继续在参数类型中进行检索,若存在扩展词,则返回参数类型,检索结束;否则,在词典中进一步进行检索,若以上检索都不能成功返回,则表明本方法对这个缩写词不能有效地进行扩展。其中,对于给定的缩写词,从其对应的参数名中进行检索的时候,若缩写词来自函数形参,则在对应的实参中检索扩展词,若缩写词来自函数实参,则在对应的形参中检索扩展词。步骤A:从对应参数名中进行检索时遵守的启发式规则为:①缩写词是由对应参数名的首字母序列组成;②缩写词是对应参数名的前缀;③缩写词是对应参数名的子序列。按照以上顺序执行启发式规则,当满足以上3条中某1条启发式规则时,则对应参数名的检索结束;若不能满足以上3条中某1条启发式规则时,则对应参数名的检索结束,就需进一步在参数类型中进行检索。步骤B:从对应参数类型中进行检索时遵守的启发式规则为:①缩写词是参数类型的首字母序列组合;②缩写词是参数类型的前缀。按照以上顺序执行启发式规则,当满足以上2条中某1条启发式规则时,则对应参数类型的检索结束;若不能满足以上2条中某1条启发式规则时,则对应参数类型的检索结束,就需进一步在词典中进行检索。步骤C:当对于一个给定的缩写词存在多个推荐的扩展词时,我们将对其进行了一个投票处理,具体过程为:对每个<缩写词,扩展词>词对出现的次数进行统计,数量最多的扩展词对为给定缩写词的扩展词;步骤D:在所得的<缩写词,扩展词>词对集合中,将扩展词仍为缩写词的<缩写词,扩展词>词对进行递归扩展。其中,递归扩展为假设本步骤所得某一结果为<缩写词1,扩展词1>。若扩展词1仍是缩写词时,本专利技术会进行递归扩展:在本步骤得到的全部结果集中,检索是否存在<缩写词2,扩展词2>词对,其中缩写词2和扩展词1相同,若检索成功,更新结果为<缩写词1,扩展词2>;递归执行此过程,直到不存在这类扩展为止。对于给定的缩写词,若以上步骤在函数的函数名、参数类型和词典中都不能检索到相应的扩展词,则认为本专利技术不能对此类缩写词进行有效地扩展。至此,经过步骤1到步骤3,完成了对参数中的缩写词进行自动扩展的方法,如图2所示。有益效果一种对参数中的缩写词进行自动扩展的方法,与现有技术中基于词典和基于源代码的扩展推荐方法相比,具有如下有益效果:1.对于给定测试项目,25.6%缩写词提取于函数的参数,证明了本专利技术提出的假设;2.平均准确率为96%,与现有方法相比,本专利技术的准确率提高了336%;3.平均召回率为60%,与现有方法相比,本专利技术的召回率提高了173%。附图说明图1是本专利技术工作原理示意图;图2是本专利技术对给定缩写词检索其对应扩展词的过程示意图。具体实施方式下面结合附图和实施例对本专利技术做进一步说明和详细描述。实施例本实施例详细阐述了本专利技术对参数中的缩写词进行自动扩展方法在3个开源项目下具体实施时的方法和效果。在如表1所示的硬件环境下,我们对表2所示的开源软件进行测试。表1:硬件环境配置信息表硬件环境配置处理器型号内存操作系统测试环境3.4GHzCorei7-670016G64-bitWindows7表2:开源软件基本信息表开源项目数量编写语言含缩写词总数项目来源3Java4,339GitHub步骤1:根据表2所示的开源软件信息,本专利技术根据开源项目RxJava的函数定义以及函数调用信息,提取出函数的形参、实参和参数对应的类型并存储到数据库中;步骤2:对步骤1提取出的函数形参、函数实参和参数对应的类型进行分割,从而获得缩写词,函数形参中提取出缩写词数量为160个,函数实参中提取出缩写词数量为504个。函数的形参为strIndex,对标识符进行分割后得到单词序列为str和index,其中str不能在英文词典中检索到,因此获得的缩写词为str;将每个标识符的名称pntIndex_t分割为单词序列pnt、index、t。假定标识符遵循驼峰或蛇形命名规则,因此分割标识符的依据是下划线、大写字母和数字;若分割后的单词pnt在英文词典中不能检索到,则认为其是缩写词。在所测试的RxJava开源项目中,总共解析了3276个缩写词。此外,本专利技术记录了缩写词的来源,分别统计了来自函数实参的缩写词的数量N2(504个)和来自函数形参的缩写词的数量N3(160个)。其他开源项目中函数参数中的缩写词的统计结果如表3。表3:参数中的缩写词步骤3:对于步骤2提取出来的缩写词,利用启发式规则从其文本信本文档来自技高网...
一种对参数中的缩写词进行自动扩展的方法

【技术保护点】
1.一种对参数中的缩写词进行自动扩展的方法,其特征在于包括以下步骤:步骤1:根据开源软件的函数定义以及函数调用信息,提取函数的形参、实参和参数相应的类型并存储到数据库中;步骤2:根据步骤1提取出的函数形参、函数实参、形参类型和实参类型进行分割,并提取出其中的缩写词;步骤3:对于步骤2提取出来的缩写词,利用启发式规则从其文本信息中检索对应的扩展词;具体的说,启发式规则具体为,首先对于给定的缩写词,从其对应的参数名中进行检索,若存在其相应的扩展词,则返回参数名作为扩展,检索结束;若不存在,继续在参数类型中进行检索,若存在扩展词,则返回参数类型,检索结束;否则,在词典中进一步进行检索,若以上检索都不能成功返回,则表明本方法对这个缩写词不能有效地进行扩展;其中,对于给定的缩写词,从其对应的参数名中进行检索的时候,若缩写词来自函数形参,则在对应的实参中检索扩展词,若缩写词来自函数实参,则在对应的形参中检索扩展词;步骤A:从对应参数名中进行检索时遵守的启发式规则为:①缩写词是由对应参数名的首字母序列组成;②缩写词是对应参数名的前缀;③缩写词是对应参数名的子序列;按照以上顺序执行启发式规则,当满足以上3条中某1条启发式规则时,则对应参数名的检索结束;若不能满足以上3条中某1条启发式规则时,则对应参数名的检索结束,就需进一步在参数类型中进行检索;步骤B:从对应参数类型中进行检索时遵守的启发式规则为:①缩写词是参数类型的首字母序列组合;②缩写词是参数类型的前缀;按照以上顺序执行启发式规则,当满足以上2条中某1条启发式规则时,则对应参数类型的检索结束;若不能满足以上2条中某1条启发式规则时,则对应参数类型的检索结束,就需进一步在词典中进行检索;步骤C:当对于一个给定的缩写词存在多个推荐的扩展词时,我们将对其进行了一个投票处理,具体过程为:对每个...

【技术特征摘要】
1.一种对参数中的缩写词进行自动扩展的方法,其特征在于包括以下步骤:步骤1:根据开源软件的函数定义以及函数调用信息,提取函数的形参、实参和参数相应的类型并存储到数据库中;步骤2:根据步骤1提取出的函数形参、函数实参、形参类型和实参类型进行分割,并提取出其中的缩写词;步骤3:对于步骤2提取出来的缩写词,利用启发式规则从其文本信息中检索对应的扩展词;具体的说,启发式规则具体为,首先对于给定的缩写词,从其对应的参数名中进行检索,若存在其相应的扩展词,则返回参数名作为扩展,检索结束;若不存在,继续在参数类型中进行检索,若存在扩展词,则返回参数类型,检索结束;否则,在词典中进一步进行检索,若以上检索都不能成功返回,则表明本方法对这个缩写词不能有效地进行扩展;其中,对于给定的缩写词,从其对应的参数名中进行检索的时候,若缩写词来自函数形参,则在对应的实参中检索扩展词,若缩写词来自函数实参,则在对应的形参中检索扩展词;步骤A:从对应参数名中进行检索时遵守的启发式规则为:①缩写词是由对应参数名的首字母序列组成;②缩写词是对应参数名的前缀;③缩写词是对应参数名的子序列;按照以上顺序执行启发式规则,当满足以上3条中某1条启发式规则时,则对应参数名的检索结束;若不能满足以上3条中某1条启发式规则时,则对应参数名的检索结束,就需进一步在参数类型中进行检索;步骤B:从对应参数类型中进行检索时遵守的启发式规则为:①缩写词是参数类型的首字母序列组合;②缩写词是参数类型的前缀;按照以上顺序执行启发式规则,当满足以上2条中某1条启发式规则时,则对应参数类型的检索结束;若不能满足以上2条中某1条启发式规则时,则对应参数类型的检索结束,就需进一步在词典中进行检索;...

【专利技术属性】
技术研发人员:刘辉姜艳杰
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1