技术摘要:
本发明实施例提供了一种代码检测方法及装置,代码检测方法包括以下步骤:提取软件模块中包括的源代码;提取所述源代码中的函数;利用与所述函数的类型相对应的基类模板匹配所述函数中的子类函数,以检测所述源代码中的临时变量和执行分支中的一项或多项;标记冗余的临 全部
背景技术:
应用程序随着功能的不断迭代,会不断增加新的代码,这些代码中可能存在一些 没有执行的冗余代码,这些冗余代码在应用程序使用过程中不会被执行。相关技术中通常 通过静态扫描的方式对代码进行检测,然而这些冗余代码无法在静态扫描中被检测到,可 能导致应用程序中的代码数量增加,影响应用程序的运行性能。
技术实现要素:
本发明实施例的目的在于提供一种代码检测方法及装置,已解决现有扫描方式可 能无法检测到冗余代码,导致应用程序中的代码数量增加,影响应用程序的运行性能的问 题。具体技术方案如下: 在本发明实施的第一方面,首先提供了一种代码检测方法,包括以下步骤: 提取软件模块中包括的源代码; 提取所述源代码中的函数; 利用与所述函数的类型相对应的基类模板匹配所述函数中的子类函数,以检测所 述源代码中的临时变量和执行分支中的一项或多项; 标记冗余的临时变量和冗余的执行分支中的一项或多项。 可选的,所述提取软件模块中包括的源代码之后,还包括: 将所述源代码根据编程语言划分为不同的类型; 获取每一种编程语言的子类函数和基类函数的对应关系作为所述编程语言对应 的基类模板。 可选的,所述利用与所述函数的类型相对应的基类模板匹配所述函数中的子类函 数,包括: 标记所述函数中的参数、临时变量和全局变量; 根据参数、所述临时变量和所述全局变量所述利用字符串匹配算法匹配所述函数 中的子类函数和所述基类模板对应的基类函数; 根据匹配结果获取所述基类函数的函数声明,所述函数声明中包括对于所述子类 函数中的临时变量和执行分支中的一项或多项的检测结果。 可选的,所述将所述源代码根据编程语言的类型划分为不同的类型,包括: 识别所述源代码的文件后缀,并根据所述文件后缀将所述源代码划分至不同的匹 配模板; 提取所述源代码中函数的返回值类型、函数名和参数列表,以及函数的属性和协 议,以区分同一匹配模板中的源代码对应的编程语言。 可选的,所述利用与所述函数的类型相对应的基类模板匹配所述函数中的子类函 4 CN 111552638 A 说 明 书 2/8 页 数之前,包括: 根据预设映射关系建立所述子类函数对应的第一缩写特征表; 基于所述预设映射关系建立基类函数的对应的第二缩写特征表作为所述基类模 板。 在本发明实施的第二方面,提供了一种代码检测装置,包括: 第一提取模块,用于提取软件模块中包括的源代码; 第二提取模块,用于提取所述源代码中的函数; 匹配模块,用于利用与所述函数的类型相对应的基类模板匹配所述函数中的子类 函数,以检测所述源代码中的临时变量和执行分支中的一项或多项; 标记模块,用于标记冗余的临时变量和冗余的执行分支中的一项或多项。 可选的,还包括: 划分模块,用于将所述源代码根据编程语言划分为不同的类型; 基类模板获取模块,用于获取每一种编程语言的子类函数和基类函数的对应关系 作为所述编程语言对应的基类模板。 可选的,所述匹配模块包括: 标记子模块,用于标记所述函数中的参数、临时变量和全局变量; 匹配子模块,用于根据参数、所述临时变量和所述全局变量所述利用字符串匹配 算法匹配所述函数中的子类函数和所述基类模板对应的基类函数; 获取子模块,用于根据匹配结果获取所述基类函数的函数声明,所述函数声明中 包括对于所述子类函数中的临时变量和执行分支中的一项或多项的检测结果。 在本发明实施的又一方面,还提供了一种电子设备,包括处理器、通信接口、存储 器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信; 存储器,用于存放计算机程序; 处理器,用于执行存储器上所存放的程序时,实现以上任一所述的代码检测方法 的步骤。 在本发明实施的又一方面,还提供了一种计算机可读存储介质,其上存储有计算 机程序,该程序被处理器执行时实现如以上任一所述的代码检测方法。 这样,本发明实施例通过利用与所述函数的类型相对应的基类模板匹配所述函数 中的子类函数,以对源代码中的函数进行检测,从而能够检测出源代码中存在的冗余的临 时变量或冗余的执行分支,以便进一步对源代码进行调整,降低了源代码中存在冗余的临 时变量或冗余的执行分支的可能性,有助于提高应用程序的使用体验。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍。 图1为本发明一实施例中代码检测方法的流程图; 图2为本发明一实施例中又一代码检测方法的流程图; 图3为本发明一实施例中又一代码检测装置的结构示意图; 图4为本发明一实施例中电子设备的结构示意图。 5 CN 111552638 A 说 明 书 3/8 页