静态代码检查方法、装置、计算机设备及可读存储介质制造方法及图纸

技术编号:28622232 阅读:10 留言:0更新日期:2021-05-28 16:17
本公开提供了一种静态代码检查方法、装置、计算机设备及可读存储介质,属于代码检查领域。所述方法包括:根据获取到的第一版本代码和基于对第一版本代码的代码编辑操作得到的第二版本代码,确定差异代码,调用目标代码检查工具,对差异代码进行静态代码检查,输出检查结果。本公开通过仅对差异代码进行静态代码检查,可以有效确定差异代码存在的问题,避免早期代码带来的影响,由于无需对早期代码进行静态代码检查,而仅仅对于数据量大大降低的差异代码来进行检测,可以提高检查效率,及时发现问题。

【技术实现步骤摘要】
静态代码检查方法、装置、计算机设备及可读存储介质
本公开涉及代码检查领域,特别涉及一种静态代码检查方法、装置、计算机设备及可读存储介质。
技术介绍
随着计算机技术的不断发展,各种类型的软件层出不穷,在进行动态代码测试之前进行代码检查,有助于帮助开发人员快速、有效地定位代码缺陷,以便开发人员及时纠正这些问题。静态代码检查无需运行代码,通过词法分析、语义分析、控制流分析、数据流分析等技术即可以实现对程序代码的扫码,从而极大地提高软件可靠性,节省软件开发和测试成本。目前进行静态代码检查主要是通过根据编程语言选择不同的静态检查工具,如样式检查(CheckStyle)、代码扫描分析工具(Lint)等,对利用不同编程语言编写的项目的所有源代码进行检测,找出其中存在问题的代码。现在的项目源码数量庞大,一次静态检查耗时很容易就达到数十分钟甚至几个小时,检查效率低,而且早期项目为了快速迭代,存在大量不符合现有标准的“问题代码”,每次静态检查都会检查出早期代码中存在的大量问题,但是这些代码基本不会有新的改动,也不能改动,而新增代码检查出来的问题相比早起代码中存在的问题又非常少,很容易被淹没在早期代码的大量问题中,难以被发现。
技术实现思路
本公开实施例提供了一种静态代码检查方法、装置、计算机设备及可读存储介质,可以解决相关技术中静态代码检查效率低、差异代码的问题不易被发现的问题。所述技术方案如下:一方面,提供了一种静态代码检查方法,该方法包括:获取第一版本代码和第二版本代码,该第二版本代码基于对该第一版本代码的代码编辑操作得到;根据该第一版本代码和该第二版本代码,确定差异代码;调用目标代码检查工具,对该差异代码进行静态代码检查,输出静态代码检查的检查结果。一方面,提供了一种静态代码检查装置,该装置包括:获取模块,用于获取第一版本代码和第二版本代码,该第二版本代码基于对该第一版本代码的代码编辑操作得到;确定模块,用于根据该第一版本代码和该第二版本代码,确定差异代码;检查模块,用于调用目标代码检查工具,对该差异代码进行静态代码检查;输出模块,用于输出静态代码检查的检查结果。在一种可能的实现方式中,该装置还包括:比较模块,用于将该第一版本代码与该第二版本代码进行比较;该确定模块,还用于确定该第二版本代码中相对于该第一版本代码发生变动的代码,将所确定的代码作为该差异代码。在一种可能的实现方式中,该装置还包括:语法解析模块,用于对该第一版本代码和该第二版本代码进行语法解析,得到该第一版本代码和该第二版本代码的特征字符;对比模块,用于以该第一版本代码的首个特征字符为起始点,对比该第一版本代码与该第二版本代码中各个特征字符,得到该各个特征字符的相似度;该确定模块,还用于根据任一个特征字符的相似度,确定该任一个特征字符对应的代码是否为该差异代码。在一种可能的实现方式中,该确定模块,还用于当该任一个特征字符的相似度低于目标相似度值且不为0时,确定该任一个特征字符对应的代码为修改代码;该确定模块,还用于当该任一个特征字符的相似度为0时,确定该任一个特征字符对应的代码为新增代码。在一种可能的实现方式中,该确定模块,还用于根据该检查结果,确定存在问题的差异代码的位置;该确定模块,还用于根据该差异代码的问题,生成解决信息;该装置还包括:展示模块,用于将该差异代码的问题和对应的解决信息展示在可视化窗口中。在一种可能的实现方式中,该装置还包括:跳转模块,用于根据对该存在问题的差异代码的跳转指令,跳转到该存在问题的差异代码在该第二版本代码中的位置。在一种可能的实现方式中,该检查模块,还用于实现下述任一项操作:对该差异代码的语法进行检查;对该差异代码的结构进行检查;对该差异代码的过程进行检查;对该差异代码的接口进行检查。一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该程序代码由该一个或多个处理器加载并执行以实现该静态代码检查方法所执行的操作。一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该程序代码由处理器加载并执行以实现该静态代码检查方法所执行的操作。根据获取到的第一版本代码和基于对第一版本代码的代码编辑操作得到的第二版本代码,确定差异代码,调用目标代码检查工具,对差异代码进行静态代码检查,输出检查结果。通过仅对差异代码进行静态代码检查,可以有效确定差异代码存在的问题,避免早期代码带来的影响,由于无需对早期代码进行静态代码检查,而仅仅对于数据量大大降低的差异代码来进行检测,可以提高检查效率,及时发现问题。附图说明为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本公开实施例提供的一种静态代码检查方法的实施环境示意图;图2是本公开实施例提供的一种静态代码检查方法的流程图;图3是本公开实施例提供的一种静态代码检查方法的流程图;图4是本公开实施例提供的一种差异代码的确定结果示意图;图5是本公开实施例提供的一种差异代码检查结果示意图;图6是本公开实施例提供的一种静态代码检查装置的结构示意图;图7是本公开实施例提供的一种计算机设备结构示意图。具体实施方式为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。静态代码检查:又称静态程序分析(StaticProgramAnalysis),是指在不运行代码的方式下,通过词法分析、语义分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。图1是本公开实施例提供的一种静态代码检查方法的实施环境示意图,参见图1,该实施环境包括:计算机设备101。计算机设备101可以是智能手机、台式计算机、平板电脑、电子书阅读器和膝上型便携计算机中的至少一种等设备中的至少一种。计算机设备101可以安装并运行有版本控制工具来对不同版本的代码进行比较以实现差异代码的确定,计算机设备101还可以安装并运行有静态检查工具,用于对代码进行静态检查,通过分析或检查程序代码的语法、结构、过程、接口等来检查程序的正确性,保证程序的正常运行。计算机设备101可以泛指多个计算机设备中的一个,本实施例仅以计算机设备101来举例说明。本领域技术人员可以知晓,上述计算机设备的数量可以更多或更少。比如上述计算机设备可以仅为几个,或者上述计算机设备为几十个或几百个,或者更多数量,本公开实施例本文档来自技高网...

【技术保护点】
1.一种静态代码检查方法,其特征在于,所述方法包括:/n获取第一版本代码和第二版本代码,所述第二版本代码基于对所述第一版本代码的代码编辑操作得到;/n根据所述第一版本代码和所述第二版本代码,确定差异代码;/n调用目标代码检查工具,对所述差异代码进行静态代码检查,输出静态代码检查的检查结果。/n

【技术特征摘要】
1.一种静态代码检查方法,其特征在于,所述方法包括:
获取第一版本代码和第二版本代码,所述第二版本代码基于对所述第一版本代码的代码编辑操作得到;
根据所述第一版本代码和所述第二版本代码,确定差异代码;
调用目标代码检查工具,对所述差异代码进行静态代码检查,输出静态代码检查的检查结果。


2.根据权利要求1所述的方法,其特征在于,所述根据所述第一版本代码和所述第二版本代码,确定差异代码包括:
将所述第一版本代码与所述第二版本代码进行比较;
确定所述第二版本代码中相对于所述第一版本代码发生变动的代码,将所确定的代码作为所述差异代码。


3.根据权利要求2所述的方法,其特征在于,所述确定所述第二版本代码中相对于所述第一版本代码发生变动的代码包括:
对所述第一版本代码和所述第二版本代码进行语法解析,得到所述第一版本代码和所述第二版本代码的特征字符;
以所述第一版本代码的首个特征字符为起始点,对比所述第一版本代码与所述第二版本代码中各个特征字符,得到所述各个特征字符的相似度;
根据任一个特征字符的相似度,确定所述任一个特征字符对应的代码是否为所述差异代码。


4.根据权利要求3所述的方法,其特征在于,所述根据任一个特征字符的相似度,确定所述任一个特征字符对应的代码是否为所述差异代码包括:
当所述任一个特征字符的相似度低于目标相似度值且不为0时,确定所述任一个特征字符对应的代码为修改代码;
当所述任一个特征字符的相似度为0时,确定所述任一个特征字符对应的代码为新增代码。


5.根据权利要求1所述的方法,其特征在于,所述输出静态代码检查的检查结果包括:
根据所述检查结果,确定存在...

【专利技术属性】
技术研发人员:谢晓枫
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

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

1