【技术实现步骤摘要】
一种基于两阶段框架的Java方法名推荐方法
[0001]本专利技术涉及软件工程领域。更具体地,涉及一种基于两阶段框架的Java方法名推荐方法。
技术介绍
[0002]随着信息化浪潮的不断推进以及互联网时代的到来,人们生活中的衣食住行各个方面都越来越离不开软件。由于来自人们生活中层出不穷的软件需求,现代软件的功能日趋复杂,模块数目日渐增多,导致了软件的复杂度正不断提高。面对日益复杂的软件,软件的维护难、成本高成为了目前的一大难题。有调查称软件维护的成本大约占软件总成本的70%及以上,而导致维护成本高的重要原因是软件的可理解性低,开发人员往往要花费超过50%的精力在软件的代码的理解上。导致软件可理解性低的原因有很多,其中程序中命名不恰当的变量名、方法名、参数名等,往往是导致程序可理解性低的重要原因。
[0003]高质量的程序命名可以提高程序的可读性和可维护性,然而程序的命名是软件工程领域的一大难题。标识符命名是程序员必须完成的最困难的任务之一。在编程中,名称(即标识符)普遍存在于所有的程序概念中,例如类、方法和变量。在实 ...
【技术保护点】
【技术特征摘要】
1.一种基于两阶段框架的Java方法名推荐方法,其特征在于包括:1)预处理阶段,对于输入的Java方法的特征,采用启发式规则过滤掉getter/setter方法以及delegations方法,其中getter是专门用来获取Java类中非静态私有属性的方法,而setter方法是专门用来给Java类中非静态私有属性赋值的方法;2)方法分类阶段,采用前馈神经网络FastText对Java方法分类,其中分类输入的数据采用的是Java方法体的标记流,其中标记流是采用词法分析得到的键值对,键值对是包含了类型和标记;分类采用方法对应方法名的前缀作为分类依据,通过分类的方法来预测方法名的前缀;3)方法名生成阶段,该阶段针对不同方法名前缀采用不同方式生成方法名;其中对于分类器预测方法名以"get"、"set"、"is"、"test"开头的Java方法,采用基于频率的启发式规则生成相应的方法名,对于分类器预测出以其他前缀开头的Java方法采用基于神经网络的方式生成相应的方法名。2.如权利要求1所述的方法,其特征在于,步骤1)中,读取Java程序源代码并解析得到方法列表,其中判断方法是否为getter方法的规则为如果一个方法中只有一行代码语句且该方法返回了类中的私有非静态属性的值,那么该方法就为getter方法,该方法体格式描述为return this.${方法所在类中非静态私有属性};或者是return${方法所在类中非静态私有属性};其中判断方法为setter方法的规则为如果一个方法中仅仅只有一行代码语句且该语句的功能是给方法所在类中的非静态属性赋值,体格式描述为this.${方法所在类中非静态私有属性}=赋值;或者为${方法所在类中非静态私有属性}=赋值;。3.如权利要求1所述的方法,其特征在于:delegations方法为仅仅只有一行代码语句且该语句调...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。