冗余代码分析方法、装置、电子设备、存储介质及产品制造方法及图纸

技术编号:33633337 阅读:12 留言:0更新日期:2022-06-02 01:41
本公开提供了一种冗余代码分析方法、装置、电子设备、存储介质及产品,涉及计算机技术领域,尤其涉及冗余代码技术领域。具体实现方案为:在代码的配置文件中,获取控制变量,并确定所述控制变量的状态;根据所述状态,确定与所述控制变量相关的代码逻辑表达式;响应于所述代码逻辑表达式为无需执行的代码逻辑表达式,确定所述代码逻辑表达式为待下线的冗余代码。通过本公开可以简化冗余代码下线的流程,进而节省研发处理冗余代码的人力资源。进而节省研发处理冗余代码的人力资源。进而节省研发处理冗余代码的人力资源。

【技术实现步骤摘要】
冗余代码分析方法、装置、电子设备、存储介质及产品


[0001]本公开涉及计算机
,尤其涉及冗余代码
,具体涉及一种冗余代码分析方法、装置、电子设备、存储介质及产品。

技术介绍

[0002]互联网的快速发展,基于用户不同的需求,出现不同的互联网业务。针对每个互联网业务,都会出现大量的策略迭代和架构的升级,以使得互联网业务更加稳定的服务于用户。
[0003]在大量的策略迭代和架构的升级过程中,一般都会产生大量的冗余代码。

技术实现思路

[0004]本公开提供了一种用于冗余代码分析方法、装置、电子设备、存储介质及产品。
[0005]根据本公开的第一方面,提供了一种冗余代码分析方法,所述方法包括:
[0006]在代码的配置文件中,获取控制变量,并确定所述控制变量的状态;根据所述状态,确定与所述控制变量相关的代码逻辑表达式;响应于所述代码逻辑表达式为无需执行的代码逻辑表达式,确定所述代码逻辑表达式为待下线的冗余代码。
[0007]根据本公开的第二方面,提供了一种冗余代码分析装置,所述装置包括:
[0008]获取模块,用于在代码的配置文件中,获取控制变量,并确定所述控制变量的状态;确定模块,用于根据所述状态,确定与所述控制变量相关的代码逻辑表达式;所述确定模块,还用于响应于所述代码逻辑表达式为无需执行的代码逻辑表达式,确定所述代码逻辑表达式为待下线的冗余代码。
[0009]根据本公开的第三方面,提供了一种电子设备,包括:
[0010]至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面所述的方法。
[0011]根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据第一方面所述的方法。
[0012]根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据第一方面所述的方法。
[0013]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0014]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0015]图1出了本公开实施例提供的一种冗余代码分析方法的应用环境示意图;
[0016]图2出了本公开实施例提供的一种冗余代码分析方法的示意图;
[0017]图3示出了本公开实施例提供的一种冗余代码分析方法的流程示意图;
[0018]图4示出了本公开实施例提供的一种获取控制变量的方法的流程示意图;
[0019]图5示出了本公开实施例提供的一种合并控制变量的方法的示意图;
[0020]图6示出了本公开实施例提供的一种确定代码逻辑表达式的方法的流程示意图;
[0021]图7示出了本公开实施例提供的一种确定待下线的冗余代码的方法的流程示意图;
[0022]图8示出了本公开实施例提供的一种拆分代码逻辑表达式的方法的示意图;
[0023]图9示出了本公开实施例提供的一种确定代码逻辑表达式语义的方法的示意图;
[0024]图10示出了本公开实施例提供的一种下线冗余代码的方法的流程示意图;
[0025]图11示出了本公开实施例提供的一种冗余代码分析装置的结构示意图;
[0026]图12是用来实现本公开实施例的冗余代码分析方法的电子设备的框图。
具体实施方式
[0027]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0028]互联网的快速发展,基于用户不同的需求,出现不同的互联网业务。针对每个互联网业务,都会出现大量的策略迭代和架构的升级,以使得互联网业务更加稳定的服务于用户。
[0029]但是也会产生大量的冗余代码,冗余代码不仅增加了代码的维护成本,还可以降低编译的效率。为了检测冗余代码一般采用人力资源进行检测,对冗余代码进行标注后完成冗余代码的下线。然而使用人力资源检测的方式不仅耗时耗力,检出困难,而且很容易出现误删除、误更改的情况。
[0030]因此提出了不同的检测冗余代码的方式,例如,基于接口调用的冗余代码扫描、基于变量名和变量名重复次数的冗余代码检测或基于函数查找冗余代码。但是,面向的使用场景单一,适配成本较大,并不能覆盖所有的冗余代码片段。尤其是在大型互联网项目的迭代中,策略升级经常会通过开关控制生效,这样不仅有利于策略的上下线,而且保证了线上的稳定性。但是很多无用策略会通过关闭开关的形式进行下线,就导致了冗余代码的产生。针对于这种场景,上述解决方案的适配成本较大,而且检出冗余代码的覆盖率也会降低。而且相关技术中也没有关于自动下线冗余代码的方法,一般在代码检出后需要研发人员自己去手动删除代码,提交代码评审,进行测试,在测试通过后才可以将代码下线。在有大量代码下线的时候,不仅耗时费力、效率低下,而且存在代码安全风险。
[0031]基于此,本公开提供一种冗余代码分析方法和装置。通过检测配置文件中的控制变量,检测与控制变量相关的代码,基于代码的逻辑表达式,确定出冗余代码,可以减少代码库维护的人力与研发下线代码的人力。还可以通过本公开的方法和装置对检测的冗余代码进行下线,控制代码量,提升编译效率。
[0032]本公开通过实际背景对本公开进行说明,例如,互联网项目需要经过多次的迭代才会逐渐趋于稳定,图1出了本公开实施例提供的一种冗余代码分析方法的应用环境示意
图,如图1所示,在策略的迭代升级中,在新需求的基础上对策略进行升级,升级的同时会使用开关控制策略是否生效,在测试完成后进行上线。在策略升级时会加入大量的控制开关,关闭状态的控制变量所在代码逻辑表达式依然存在代码库中。
[0033]从而通过本公开的冗余代码分析的方法,对控制变量进行解析,通过代码检出阶段,得到包含有控制变量的代码逻辑表达式,从而通过代码下线阶段对检测的冗余代码的代码逻辑表达式对冗余代码进行下线。图2出了本公开实施例提供的一种冗余代码分析方法的示意图,如图2所示,其中,控制变量(即,开关)解析阶段,还包括线上配置拉取,配置文件解析,开关入库,冗余开关监控。代码检出阶段,还包括获取关闭开关,扫描包含开关的if语句,定位冗余代码收尾行,产出冗余代码详细信息。代码下线阶段包括生成代码审查链接,自主化测试,冗余代码下线以及冗余代码监控等。
[0034]下述实施例将结合附图对本公开提供的冗余代码分析方法和装置进行详细说明。
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种冗余代码分析方法,所述方法包括:在代码的配置文件中,获取控制变量,并确定所述控制变量的状态;根据所述状态,确定与所述控制变量相关的代码逻辑表达式;响应于所述代码逻辑表达式为无需执行的代码逻辑表达式,确定所述代码逻辑表达式为待下线的冗余代码。2.根据权利要求1所述的方法,其中,所述配置文件包括多个配置文件;所述在代码的配置文件中,获取控制变量,包括:获取每个配置文件对应的解析器,并基于所述解析器解析所述配置文件,得到多个控制变量;筛选所述多个控制变量,确定重复的控制变量;获取每个配置文件的优先级,基于所述优先级在所述重复的控制变量中,确定优先级最高的配置文件对应的控制变量;获取优先级最高的配置文件对应的控制变量和未重复的控制变量。3.根据权利要求1或2所述的方法,其中,所述状态包括开启状态和关闭状态;所述根据所述状态,确定与所述控制变量相关的代码逻辑表达式,包括:获取所述状态为关闭状态的控制变量;在关闭状态的控制变量中,确定与所述控制变量相关的条件代码逻辑表达式。4.根据权利要求1所述的方法,其中,所述响应于所述代码逻辑表达式为无需执行的代码逻辑表达式,确定所述代码逻辑表达式为待下线的冗余代码,包括:基于所述代码逻辑表达式的执行逻辑,确定所述代码逻辑表达式的语义;基于所述语义确定所述代码逻辑表达式的执行状态;将所述执行状态为无需执行的代码逻辑表达式,确定为待下线的冗余代码。5.根据权利要求4所述的方法,其中,所述基于所述代码逻辑表达式的执行逻辑,确定所述代码逻辑表达式的语义,包括:基于所述代码逻辑表达式的逻辑运算符对所述代码逻辑表达式进行拆分,得到至少一个具有单一逻辑的子代码逻辑表达式;确定每个子代码逻辑表达式的语义;基于所述逻辑运算符对每个子代码逻辑表达式的语义进行归并,得到所述代码逻辑表达式的语义。6.根据权利要求3所述的方法,其中,所述方法还包括:将所述冗余代码中的条件语句所在行,确定为冗余代码的起始行;遍历所述冗余代码,获取所述冗余代码中的指定符号,并将所述指定符号存入栈;将所述冗余代码中满足预设条件的栈所在行,确定为终止行。7.根据权利要求6所述的方法,其中,所述预设条件为代码逻辑表达式包括结束符且栈为空。8.根据权利要求1所述的方法,其中,所述确定所述代码逻辑表达式为待下线的冗余代码之后,所述方法还包括:获取所述冗余代码的起始行和所述冗余代码的终止行;响应于所述冗余代码的数量大于或等于预设数量阈值,对冗余代码的起始行和所述冗
余代码的终止行进行标注;对标注的冗余代码进行测试,并对通过测试的冗余代码进行下线。9.一种冗余代码分析装置,所述装置包括:获取模块,用于在代码的配置文件中,获取控制变量,并确定所述控制变量的状态;确定模块,用于根据所述状态,确定与所述控制变量相...

【专利技术属性】
技术研发人员:张传臣李翼羽李思
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

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

1