本申请公开了一种静态代码扫描方法、装置及计算机设备,获取代码仓库首次扫描结果,并保存为第一规则文件;根据rule_info字段判断扫描规则是否发生变化;若未发生变化,则计算第二规则文件的md5值,并根据md5值和repo_id判断被扫描文件是否存在,若存在,则删除被扫描文件的扫描,若不存在,则保留被扫描文件的扫描,得到第二次扫描结果;若发生变化,则每个被扫描文件都需要重新扫描,并得到第二次扫描结果;将首次扫描结果与第二次扫描结果进行合并,得到第二次扫描的完整扫描结果。本申请提供的一种静态代码扫描方法、装置及计算机设备不仅极大的减少了资源消耗,且提升了扫描效率。
背景技术
静态代码扫描是一种自动化工具,用于分析源代码的质量和安全性。其原理是通过检查源代码的文本内容,基于AST语法分析或者正则匹配等技术,查找潜在的程序错误、安全漏洞和不良编程实践,而不需要实际运行代码。静态代码扫描器基于约定俗成的规则和模式来检测代码中的问题,帮助开发人员在早期发现和修复潜在的缺陷。
静态代码扫描中最常见的两个问题是:扫描慢和耗资源,造成这两个问题的原因是:
(1)代码规模大:大型项目的代码量庞大,需要耗费更多时间扫描,代码量越大,扫描速度就越慢。
(2)代码较复杂:复杂的代码结构、嵌套条件以及循环等会增加扫描时间,导致耗费更多资源。
(3)扫描规则数量多:检测代码中潜在问题需要运行多个规则和算法来发现潜在的安全隐患、错误和不良实践,这些规则越多,扫描耗时越长。
(4)硬件环境差:扫描过程中硬件性能不佳会导致速度变慢,而需进行更复杂的代码分析会导致更多资源消耗。
(5)代码重复扫描:同一分代码多次提交扫描,造成扫描资源大量浪费。
目前,为了应对静态代码扫描过程中扫描速度慢和资源消耗高的问题,通常采用以下方法:
(1)并行处理:用多线程或分布式计算等技术,将代码扫描任务分解成多个子任务并行处理,以提高扫描效率。但是,这样会额外增加很大的服务器资源成本。
(2)增量扫描:基于代码提交的差异文件进行扫描。但是,这种扫描方法的扫描场景有限。
综上可知,精简扫描规则、降低代码复杂性这些都是一些客观因素,无法真正的解决问题。
实现思路