一种增量代码静态检测的方法、装置、电子设备、介质制造方法及图纸

技术编号:38011569 阅读:11 留言:0更新日期:2023-06-30 10:32
本发明专利技术提供一种增量代码静态检测的方法,包括:获取本次提交代码的差异文件列表;基于差异文件列表对代码进行多方式扫描;结合多方式扫描的结果,汇总出扫描结果,输出扫描结果。本发明专利技术一种增量代码静态检测的方法、装置、电子设备、介质,扫描时间更快,开发人员提交代码后,因为是只针对本次修改的的代码进行扫描,扫描时间大大缩短,提升开发者使用体验。扫描结果简化,只显示本次修改代码扫描结果,无历史代码扫描结果干扰,让开发者更加专注优化,修改本次代码修改中可能出现的问题。减少扫描机器,扫描资源占用,扫描时间减少,扫描效率更高,可以使用更少的机器资源实现更多项目的扫描,从而减少相关机器资源的维护。从而减少相关机器资源的维护。从而减少相关机器资源的维护。

【技术实现步骤摘要】
一种增量代码静态检测的方法、装置、电子设备、介质


[0001]本专利技术涉及Android开发,java后端开发,运维,测试领域,具体涉及一种增量代码静态检测的方法、装置、电子设备、介质。

技术介绍

[0002]代码是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。源代码是代码的分支,某种意义上来说,源代码相当于代码。源代码是相对目标代码和可执行代码而言的。源代码就是用汇编语言和高级语言写出来的地代码。目标代码是指源代码经过编译程序产生的能被cpu直接识别二进制代码。可执行代码就是将目标代码连接后形成的可执行文件,当然也是二进制的。现代程序语言中,源代码可以书籍或磁带形式出现,但最为常用格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码最终目的是将人类可读文本翻译成为计算机可执行的二进制指令,这种过程叫编译,它由通过编译器完成。
[0003]代码静态检查:即代码静态分析,是指不运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等检查程序的正确性,并找出代码中隐藏的错误和缺陷(比如参数不匹配、有歧义的嵌套语句、错误的递归、非法计算、可能出现的空指针引用等等)。
[0004]业界的各种静态代码检测工具插件都是针对的全量的代码进行橙测,检查结果也是显示整个项目的代码缺陷,这种方式在实际的软件开发流程中会有如下问题:
[0005]1.因为包含历史代码扫描结果,显示内容太多,不利于开发者关注本次提交内容扫描结果。
[0006]2.因为是对全量代码扫描,时间过长,开发者会耗费大量时间等扫描结果,影响研发效率。
[0007]3.由于当前开发者可能并不熟悉历史代码逻辑,根据扫描结果修改历史代码可能会造成其他间题。

技术实现思路

[0008]鉴于以上现有技术的缺点,本专利技术提供一种增量代码静态检测的方法、装置、电子设备、介质,以改善静态扫描代码工作量大,扫描时间长的技术问题。
[0009]为实现上述目的及其它相关目的,本专利技术提供一种增量代码静态检测的方法,包括:
[0010]获取本次提交代码的差异文件列表;基于差异文件列表对代码进行多方式扫描;结合多方式扫描的结果,汇总出扫描结果,输出扫描结果。
[0011]在本专利技术一示例中,获取本次提交代码的差异文件列表包括:
[0012]获取最新的源代码;获取本次提交的代码和上次提交的代码;对比两次代码,得到
两次代码的差异文件列表。
[0013]在本专利技术一示例中,基于差异文件列表对代码进行多方式扫描包括;
[0014]通过第一方式扫描,得到第一扫描结果;通过第二方式扫描,得到第二扫描结果;通过第三方式扫描,得到第三扫描结果;
[0015]在本专利技术一示例中,通过第一方式扫描,得到第一扫描结果包括:
[0016]通过Sonar扫描差异文件列表,得到扫描结果;调用sonarapi接口,获取扫描结果详细信息;若扫描结果为空,则跳过;若扫描不为空,分析扫描结果日志,分析扫描结果的相关代码行信息;若代码行为本次代码提交变动行,则保存该扫描结果,否则过滤该扫描结果;得到第一扫描结果。
[0017]在本专利技术一示例中,通过第二方式扫描,得到第二扫描结果包括:
[0018]通过PMD的

filelist参数扫描差异文件列表,得到扫描结果;通过output参数,获取扫描结果详细信息;若扫描结果为空,则跳过;若扫描不为空,分析扫描结果日志,分析扫描结果的相关代码行信息;若代码行为本次代码提交变动行,则保存该扫描结果,否则过滤该扫描结果;得到第二扫描结果。
[0019]在本专利技术一示例中,通过第三方式扫描,得到第三扫描结果包括:
[0020]通过Findbug的fileset配置扫描差异文件列表,得到扫描结果;通过outputFile,获取扫描结果详细信息;若扫描结果为空,则跳过;若扫描不为空,分析扫描结果日志,分析扫描结果的相关代码行信息;若代码行为本次代码提交变动行,则保存该扫描结果,否则过滤该扫描结果;得到第三扫描结果。
[0021]在本专利技术一示例中,获取本次提交的代码和上次提交的代码;对比两次代码,得到两次代码的差异文件列表包括:
[0022]获取提交记录,根据log时间得到最近两次的commitID;根据commitID得到这两次提交的差异日志;分析差异日志,得到差异文件列表,保存差异文件列表。
[0023]一种增量代码静态检测的装置,装置包括:
[0024]响应单元,用于获取本次提交代码的差异文件列表;对比单元,用于基于差异文件列表对代码进行多方式扫描;输出单元,用于结合多方式扫描的结果,汇总出扫描结果,输出扫描结果。
[0025]一种电子设备,电子设备包括:
[0026]一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得电子设备实现上述中任一项的增量代码静态检测的方法。
[0027]一种计算机可读存储介质,其上存储有计算机程序,当计算机程序被计算机的处理器执行时,使计算机执行上述中任一项的增量代码静态检测的方法。
[0028]本专利技术一种增量代码静态检测的方法、装置、电子设备、介质,扫描时间更快,开发人员提交代码后,因为是只针对本次修改的的代码进行扫描,扫描时间大大缩短,提升开发者使用体验。扫描结果简化,只显示本次修改代码扫描结果,无历史代码扫描结果干扰,让开发者更加专注优化,修改本次代码修改中可能出现的问题。减少扫描机器,扫描资源占用,扫描时间减少,扫描效率更高,可以使用更少的机器资源实现更多项目的扫描,从而减少相关机器资源的维护。通过关注本次项目代码改动的扫描结果,能好的开发有针对性的测试案例,脚本,提前发现可能存在的问题,提升项目质量。
附图说明
[0029]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030]图1为本申请的一示例性实施例示出的增量代码静态检测方法的流程图;
[0031]图2为本申请的一示例性实施例示出的获取差异文件列表的流程图;
[0032]图3为本申请的一示例性实施例示出的多方式扫描的流程图;
[0033]图4为本申请的一示例性实施例示出的第一方式扫描的流程图;
[0034]图5为本申请的一示例性实施例示出的第二方式扫描的流程图;
[0035]图6为本申请的一示例性实施例示出的第三方式扫描的流程图;
[0036]图7为本申请的一示例性实施例示出的S22本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种增量代码静态检测的方法,其特征在于,包括:获取本次提交代码的差异文件列表;基于差异文件列表对代码进行多方式扫描;结合多方式扫描的结果,汇总出扫描结果,输出扫描结果。2.根据权利要求1所述的增量代码静态检测的方法,其特征在于,获取本次提交代码的差异文件列表包括:获取最新的源代码;获取本次提交的代码和上次提交的代码;对比两次代码,得到两次代码的差异文件列表。3.根据权利要求1所述的增量代码静态检测的方法,其特征在于,基于差异文件列表对代码进行多方式扫描包括;通过第一方式扫描,得到第一扫描结果;通过第二方式扫描,得到第二扫描结果;通过第三方式扫描,得到第三扫描结果。4.根据权利要求3所述的增量代码静态检测的方法,其特征在于,通过第一方式扫描,得到第一扫描结果包括:通过Sonar扫描差异文件列表,得到扫描结果;调用sonarapi接口,获取扫描结果详细信息;若扫描结果为空,则跳过;若扫描不为空,分析扫描结果日志,分析扫描结果的相关代码行信息;若代码行为本次代码提交变动行,则保存该扫描结果,否则过滤该扫描结果;得到第一扫描结果。5.根据权利要求3所述的增量代码静态检测的方法,其特征在于,通过第二方式扫描,得到第二扫描结果包括:通过PMD的

filelist参数扫描差异文件列表,得到扫描结果;通过output参数,获取扫描结果详细信息;若扫描结果为空,则跳过;若扫描不为空,分析扫描结果日志,分析扫描结果的相关代码行信息;若代码行为本次代码提交变动行,则保存该扫描结果,否则过滤该扫描结果;得到第二扫...

【专利技术属性】
技术研发人员:方海波
申请(专利权)人:浙江吉利控股集团有限公司
类型:发明
国别省市:

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

1