一种基于代码方法重要程度进行权限预警的方法与流程

文档序号:17474315发布日期:2019-04-20 06:01阅读:251来源:国知局

一种基于代码方法重要程度进行权限预警的方法,用于判断代码方法的重要性,并控制权限来提高代码方法质量,属于软件开发及软件测试技术领域。



背景技术:

代码方法指软件代码(即指项目代码)里面一组具有特定功能实现的代码块。

在已存项目代码非常庞大且多人协作的情况下,项目组成员全面判断当前每个代码方法的重要程度十分困难,造成在修改代码方法的时候,容易因为对已有代码方法考虑不全而写出有缺陷的代码方法,在实际使用过程中造成重大的不良影响;测试员在任务提测时,由于不清楚修改代码的重要性以及代码方法修改后对功能的影响范围,不能确定测试的重要程度和投入的人力。

现有技术中的项目解析技术,只能分析出项目的总体结构,并不能详细分析出项目的方法信息,注释信息以及方式内容。

为了解决以上问题,首先需要对项目的代码方法打功能标签。对项目的功能点进行提炼总结形成功能点,并区分重要功能和普通功能;然后通过分析项目代码,将所有的代码方法存入精准测试服务平台进行保存,通过该平台,给所有代码方法关联标签,让代码方法都有功能标签并标注为是否为重要功能点方法。该分析方法是人为提取功能点,并人在精准测试平台手动打功能标签。

在项目持续开发修改中,通过扫描项目代码,解析并统计出项目代码各种维度的数据保存到计算机系统,并通过定义一些判断规则来规定代码方法基于重要性,并分成若干等级;然后根据代码方法的重要性等级,控制不同等级的修改权限。不同等级的开发人员,只能修改对应等级的代码方法,从而提高项目代码的质量。同时对不同等级代码方法的区别,项目组成员在开发和测试的时候,根据不同的重要性,投入更多的人力和考虑更加全面。

采用上述方案进行代码方法重要性的判断,需要手动统计总方法个数、调用次数和被调用方式及注释,容易出现统计漏的情况,从而造成不能全面、快速的了解项目的总代码方法个数,每个代码方法的调用次数及被调用方式和注释。初中级人员及新加入项目组成员,不熟悉项目代码,也不能快速判断代码方法的重要程度,在修改代码的时候,由于不能判断重要性,所以造成考虑不够全面,造成代码缺陷。



技术实现要素:

针对上述研究的问题,本发明的目的在于提供一种基于代码方法重要程度进行权限预警的方法,解决现有的解析方法,需要手动统计总方法个数、调用次数和被调用方式及注释等,容易出现统计漏的情况,从而造成不能全面、快速的了解项目的总代码方法个数,每个代码方法的调用次数及被调用方式和注释等问题。

为了达到上述目的,本发明采用如下技术方案:

一种基于代码方法重要程度进行权限预警的方法,其特征在于,包括如下步骤:

步骤1、解析获取的项目代码,基于标准抽象语法树为项目代码中的各代码方法添加功能标签;

步骤2、基于添加了功能标签的所有代码方法,获取关注代码方法后对其被调用次数进行统计,得到调用次数与对应功能标签相映射的数据;

步骤3、对各关注代码方法的被调用次数进行排序,对排序出后的代码方法进行等级划分,根据等级确定对应的权限预警。

进一步,所述步骤1的具体步骤为:

步骤1.1、获取项目代码的存储路径,根据存储路径得到项目代码;

步骤1.2、解析项目代码得到各代码方法,采用标准抽象语法树表示项目代码,得到项目代码结构,基于项目代码结构,遍历项目代码结构树各节点;

步骤1.3、从项目代码结构树各个节点中筛选出类节点,以及类节点包含的代码方法节点,通过获取属性的方式在类节点中获取对应的类名和包名,同时获取与之对应的代码方法节点,并从代码方法节点中获取代码方法名称、代码方法注释,并以<类名,代码方法<代码方法名,代码方法其余信息>>键值对的形式进行存储,其余方法信息包含该代码方法对应的包名、类名、代码方法名、代码方法体、调用方式、被调用所在的文件路径、被调用代码方法在文件的具体位置及代码方法调用在文件的第n行数。

步骤1.4、根据项目代码功能的不同为每个项目代码建立词汇库,自动分析每个代码方法注释提取词汇库中相关词汇,建立词汇与功能标签间的映射,为每个代码方法添加对应功能标签来完成了每个代码方法的功能标签的添加。

进一步,所述步骤1.3还包括使用md5对代码方法体进行md5算法处理,获取代码方法体的md5信息摘要,通过对代码方法体的md5信息摘要对比,以便快速准确的确定代码方法是否有被修改。

进一步,所述步骤2的具体步骤为:

步骤2.1、基于添加了功能标签的代码方法,根据用户具体需要筛选出特定功能标签对应的代码方法,形成关注代码方法列表;

步骤2.2、对关注代码方法列表在项目代码中的调用次数进行统计,得到调用次数与对应功能标签相映射的数据;具体为:遍历项目代码结构树获取关注代码方法列表中各代码方法的调用节点,解析调用节点中调用处的上下文、代码方法被调用处的起始位置;

通过调用处的上下文匹配被调用代码方法,并添加到创建的关注代码方法调用列表中累计调用次数,通过关注代码方法调用列表得到关注代码方法的调用次数与对应功能标签相映射的数据。

进一步,所述步骤3的具体步骤为:

步骤3.1、对代码方法的等级进行划分

首先对代码方法被调用次数使用排序算法,将代码方法在项目中的调用次数从多到少进行依次排序,然后对排序出来的代码方法再次进行等级区分,即得到划分后的等级;

步骤3.2、确定修改权限

根据步骤3.1得到的等级和功能标签的重要性确定对应的权限预警。

本发明同现有技术相比,其有益效果表现在:

一、本发明中通过对项目代码的解析得到各代码方法,再基于解析后的项目代码获取标准抽象语法树,通过标准抽象语法树解析后,加入了代码方法的条件筛选(即基于类节点里面的代码方法路径,代码方法名和代码方法体进行筛选)及md5比对,可以精准并快速的获取符合条件(即代码方法体有改动,代码方法功能标签为词汇库里面的词汇)的代码方法及各种信息,即需要对项目代码进行重要性分析时,通过本发明扫描分析项目代码,能快速对各方法进行分类标签,可以获取项目的各种信息,即所有需要简得知代码方法重要性的人员(包括非技术人员),能全面清楚的了解项目代码的信息,比如代码方法个数,方法注释,方法参数,方法被调用次数,结合功能标签在不需要阅读代码的基础上就可判断代码的重要程度,对修改进行预警;

二、本发明通过结合代码方法被调用次数和代码方法对应的功能标签,确认代码方法的重要性,即通过对代码方法打功能标签,可以实现打功能标签后,结合项目代码分析,将修改方法和功能点对应上,判断影响范围;

三、本发明通过调用次数统计后,区分不同代码方法的权限预警,可针对不同等级的代码方法修改权限及代码方法提交阶段中代码方法提交缺陷,避免等级低的人提交核心方法的修改,造成潜在缺陷;

四、本发明在测试阶段,通过提交版本的项目代码同基准版本的比对,可以确认被修改的代码方法重要程度以及功能点,能够快速自动快速确定测试范围及测试人力的投入;

五、本发明通过区分代码方法的重要程度,可以对人员的具体工作做指引,不同等级人做不同等级的事情,即可以将合理安排人员,减少人力资源浪费。

附图说明

具体实施方式

下面将结合具体实施方式对本发明作进一步的描述。

为了解决现有的解析方法,需要手动统计总方法个数、调用次数和被调用方式及注释等,容易出现统计漏的情况,从而造成不能全面、快速的了解项目的总代码方法个数,每个代码方法的调用次数及被调用方式和注释等问题。本发明提供了一种方法,具体如下:

一种基于代码方法重要程度进行权限预警的方法,包括如下步骤:

步骤1、解析获取的项目代码,基于标准抽象语法树为项目代码中的各代码方法添加功能标签;具体步骤为:

步骤1.1、获取项目代码的存储路径,根据存储路径得到项目代码;

步骤1.2、解析项目代码得到各代码方法,采用标准抽象语法树表示项目代码,得到项目代码结构,基于项目代码结构,遍历项目代码结构树各节点;

步骤1.3、从项目代码结构树各个节点中筛选出类节点,筛选是通过读取节点的类型属性信息,并判读是否为类属性,以及类节点包含的代码方法节点,通过获取属性的方式在类节点中获取对应的类名和包名,同时获取与之对应的代码方法节点,并从代码方法节点中获取代码方法名称、代码方法注释,并以<类名,代码方法<代码方法名,代码方法其余信息>>键值对的形式进行存储,其余方法信息包含该代码方法对应的包名、类名、代码方法名、代码方法体、调用方式、被调用所在的文件路径、被调用代码方法在文件的具体位置及代码方法调用在文件的第n行数。其中,使用md5对代码方法体进行md5算法处理,获取代码方法体的md5信息摘要,通过对代码方法体的md5信息摘要对比,以便快速准确的确定代码方法是否有被修改。

步骤1.4、根据项目代码功能的不同为每个项目代码建立词汇库,自动分析每个代码方法注释提取词汇库中相关词汇,建立词汇与功能标签间的映射,为每个代码方法添加对应功能标签来完成了每个代码方法的功能标签的添加。

步骤2、基于添加了功能标签的所有代码方法,获取关注代码方法后对其被调用次数进行统计,得到调用次数与对应功能标签相映射的数据;具体步骤为:

步骤2.1、基于添加了功能标签的代码方法,根据用户具体需要筛选出特定功能标签对应的代码方法,形成关注代码方法列表;

步骤2.2、对关注代码方法列表在项目代码中的调用次数进行统计,得到调用次数与对应功能标签相映射的数据;具体为:遍历项目代码结构树获取关注代码方法列表中各代码方法的调用节点,解析调用节点中调用处的上下文、代码方法被调用处的起始位置;

通过调用处的上下文匹配被调用代码方法,并添加到创建的关注代码方法调用列表中累计调用次数,通过关注代码方法调用列表得到关注代码方法的调用次数与对应功能标签相映射的数据。

步骤3、对各关注代码的被调用次数进行排序,对排序出后的代码方法进行等级划分,根据等级确定对应的权限预警。

具体步骤为:

步骤3.1、对代码方法的等级进行划分

首先对代码方法被调用次数使用排序算法,将代码方法在项目中的调用次数从多到少进行依次排序,然后对排序出来的代码方法再次进行等级区分,即得到划分后的等级;如调用次数前20%的标准排位等级a,调用次数在20%~50%之间的标准排位等级b;调用次数在50%到100%之间的标准排位等级c。

步骤3.2、确定修改权限

根据步骤3.1得到的等级和功能标签的重要性确定对应的权限预警。在步骤2.1确定的关注代码方法范围内,将排名前20%的代码方法且为重要功能标签的代码方法,将其划分为核心方法;将排名在20%~50%代码方法且为重要功能标签的代码方法,将其标注为普通方法。将核心方法,对应高级修改权限;将普通方法,标注为中修改权限;将其他方法,标注为初级修改权限。

实施例

某已发布的项目(即项目代码),当前有10000个代码方法,10个开发人员,3个测试人员负责产品维护。当前规划下一个发布窗口,会修改和实现一些功能。在进行代码开发之前,通过本发明提到的方法,我们能够获得这个10000个代码方法的调用次数及对应的功能标签,若后续需要被修改的a方法为核心方法,需要被修改的b方法为不重要方法,就按照权限划分,高级开发人员负责a方法修改,b方法有低级人员;在方法被修改后,代码需要提交到代码库。针对提交代码方法操作,判断提交的代码方法是否为核心方法,如果是,判断提交人员是否为高级人员,如果是高级人员,才允许提交到代码库。

代码提交后,项目进行提测阶段。测试人员通过本发明提到的方法,判断本次修改方法有哪些(即可以通过代码方法体实现),重要程度和功能点是什么,从而确定测试范围以及资源的合理安排。

以上仅是本发明众多具体应用范围中的代表性实施例,对本发明的保护范围不构成任何限制。凡采用变换或是等效替换而形成的技术方案,均落在本发明权利保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1