For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习达内软件编程开发等互联网课程,而本文我们就通过案例分析来简单了解一下,软件开发全面静态代码分析重要性。
全面静态代码分析,或只是全面分析,是指分析结果的完整性或“健全性”。静态代码分析工具据称能够提供可靠的分析结果,这意味着如果某个软件中存在特定的缺陷或漏洞,该分析工具将报告上述问题。
如果不确实是否存在问题,则提供某种形式的警告,这样就不会“漏掉”任何问题。
(注:这些问题在HelixQAC工具中被归类为可能存在的问题,如无必要,则可以不进行全面分析。)
全面静态代码分析不同于其他形式的静态分析,其他形式的静态分析结果可能基于在一定时间或资源范围内可能发生的情况。
鉴于程序的运行时行为建模需要某些近似值(例如,缺乏对程序输入或操作系统状态的了解),全面静态代码分析需要采用Over-approximations(过近似)。
Over-approximations(过近似)用以保证不存在漏报(对于给定的漏洞类型),而under-approximations(下近似)先保证的是没有误报而却可能有漏报。
而其他形式的静态分析没有表现出这种严格性,可能既包含Over-approximations(过近似)又包含under-approximations(下近似)。
全面静态代码分析工具和非全面静态代码分析工具可能会为程序的特定部分提供一份健康报告,而全面静态代码分析工具引擎提供了额外的保证,即在提供这一健康证明的同时,所有可能性和所有路径均已得到验证。
全面静态代码分析工具的工作原理
当提到全面分析时,我们通常考虑更复杂的过程间和过程内控制以及数据流分析形式,与当今先进的静态分析工具的工作原理相同。
相较于更为简单的代码语法和语义分析,不同之处在于控制和数据流静态分析通常与检测更为复杂的问题有关,包括:
空指针错误引用
数组或缓冲区下溢和上溢
使用未初始化的对象
分配内存和释放内存异常
数字上溢、下溢和环绕
除以零
死代码
数据竞争、死锁和其他并发冲突
控制和数据流分析是一项高计算负载的任务,因为必须考虑系统的所有可能输入以及通过系统所有可能的控制流路径。事实上,由于控制流和数据流分析的蛮力穷举算法会导致分析时间指数暴涨,因此很少采用该方案。符号执行和抽象解释算法将是一个更好的选择。
而“符号执行是可达性分析的框架,它试图探索程序所有可能的执行路径。”抽象解释和符号执行在执行期间都以不变量或路径条件的形式保持约束,这些路径约束决定了可以执行何种可能路径以及可以在各种数据源中保存哪些值。
但需要注意的一点是,虽然抽象解释较为全面,但符号执行却未全面执行。
为什么全面静态代码分析很重要?
全面性是安全关键软件系统中的一个重要因素,尤其是能够保证软件不存在任何正在检查的编码缺陷。也就是说,全面分析可用于确保软件中不存在错误。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。