The present invention provides a method for reconstruction of function code similarity based on cosine theorem, including obtaining compiled executable assembly instructions and stored; reads the stored instructions, separator and the assembly instructions are divided into various methods of function, for each method function name and assembly instructions for mapping table; segmentation character segmentation of each assembly instruction set; the minimum value and the fragment assembly instruction segment similarity threshold; according to the selected benchmark minimum fragment assembly instruction fragment, assembly instructions in the mapping table traversal function of each method, followed by selecting the same size compared with the reference fragment assembly segments, and sequentially selected fragment assembly one by one, compared with the reference fragment similarity comparison to find similar fragments; according to the similar segment, find the corresponding assembly instructions Refactoring. The advantages of the invention can achieve rapid comparison of code similarity to facilitate the reconfiguration of repeated code and ensure the robustness of the software code.
【技术实现步骤摘要】
一种基于余弦定理的代码相似度比较的函数重构方法
本专利技术涉及软件开发领域,特别涉及一种基于余弦定理的代码相似度比较的函数重构方法。
技术介绍
在软件工程中,一个健壮优秀的代码,应该要求不存在重复代码,重复代码被业界认为是『万恶之源』。因此,在实际的软件开发过程中,我们时常要对代码进行重构,以消除重复代码。现有技术在实现对重复代码的消除时,一般都是通过人为的去进行代码的查看和比对,但是,在大型的软件工程中,特别是对于一个刚接触软件的新手来说,是很难确认在浩瀚的代码海洋中是否存在有与自己相似的代码,因此也很难对其进行重构。
技术实现思路
本专利技术要解决的技术问题,在于提供一种基于余弦定理的代码相似度比较的函数重构方法,通过该方法来实现代码相似度的快速比较,以方便对重复的代码进行重构,确保软件代码的健壮性。本专利技术是这样实现的:一种基于余弦定理的代码相似度比较的函数重构方法,所述方法包括如下步骤:步骤S1、获取编译出的可执行文件的汇编指令,且将获取的汇编指令保存至一输出文件中;步骤S2、从所述输出文件中读取保存的汇编指令,使用分隔符来将汇编指令分隔成各个方法函数,得到各个方法函数的方法名以及各个方法函数的汇编指令的映射表;步骤S3、使用分割符来对每条汇编指令进行分词处理;步骤S4、设置最小的汇编指令片段值以及设置片段的相似度阈值;步骤S5、先根据最小的汇编指令片段值选取一个基准比较片段;然后遍历各个方法函数的映射表中的汇编指令,依次选取与所述基准比较片段同等大小的汇编片段,并将依次选取的汇编片段逐一与所述基准比较片段进行相似度比较;在比较的过程中,每当比较出的 ...
【技术保护点】
一种基于余弦定理的代码相似度比较的函数重构方法,其特征在于:所述方法包括如下步骤:步骤S1、获取编译出的可执行文件的汇编指令,且将获取的汇编指令保存至一输出文件中;步骤S2、从所述输出文件中读取保存的汇编指令,使用分隔符来将汇编指令分隔成各个方法函数,得到各个方法函数的方法名以及各个方法函数的汇编指令的映射表;步骤S3、使用分割符来对每条汇编指令进行分词处理;步骤S4、设置最小的汇编指令片段值以及设置片段的相似度阈值;步骤S5、先根据最小的汇编指令片段值选取一个基准比较片段;然后遍历各个方法函数的映射表中的汇编指令,依次选取与所述基准比较片段同等大小的汇编片段,并将依次选取的汇编片段逐一与所述基准比较片段进行相似度比较;在比较的过程中,每当比较出的相似度大于等于设置的相似度阈值时,对选取的汇编片段以及基准比较片段的片段大小均加1后再进行相似度比较,且直到比较出的相似度小于设置的相似度阈值时才停止继续进行加1比较,同时将停止时所选取的汇编片段和基准比较片段判定为相似片段,并记录下这两个相似片段;步骤S6、根据记录的相似片段查找对应的汇编指令进行函数重构。
【技术特征摘要】
1.一种基于余弦定理的代码相似度比较的函数重构方法,其特征在于:所述方法包括如下步骤:步骤S1、获取编译出的可执行文件的汇编指令,且将获取的汇编指令保存至一输出文件中;步骤S2、从所述输出文件中读取保存的汇编指令,使用分隔符来将汇编指令分隔成各个方法函数,得到各个方法函数的方法名以及各个方法函数的汇编指令的映射表;步骤S3、使用分割符来对每条汇编指令进行分词处理;步骤S4、设置最小的汇编指令片段值以及设置片段的相似度阈值;步骤S5、先根据最小的汇编指令片段值选取一个基准比较片段;然后遍历各个方法函数的映射表中的汇编指令,依次选取与所述基准比较片段同等大小的汇编片段,并将依次选取的汇编片段逐一与所述基准比较片段进行相似度比较;在比较的过程中,每当比较出的相似度大于等于设置的相似度阈值时,对选取的汇编片段以及基准比较片段的片段大小均加1后再进行相似度比较,且直到比较出的相似度小于设置的相似度阈值时才停止继续进行加1比较,同时将停止时所选取的汇编片段和基准比较片段判定为相似片段,并记录下这两个相似片段;步骤S6、根据记录的相似片段查找对应的汇编指令进行函数重构。2.根据权利要求1所述的一种基于余弦定理的代码相似度比较的函数重构方法,其特征在于:在所述步骤S5中,所述“将依次选取的汇编片段逐一与所述基准比较片段进...
【专利技术属性】
技术研发人员:吴志坚,
申请(专利权)人:福建星瑞格软件有限公司,
类型:发明
国别省市:福建,35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。