静态分析——自动化代码扫描如何预防缺陷和加速交付?

一.什么是静态代码分析?

静态代码分析(简称静态分析)是一种必要的开发测试行为,通过扫描代码模式和结构以及分析逻辑关系,查找潜在缺陷代码,最终将报告呈现给用户以便修复代码缺陷。当高风险代码被侦测到后,静态分析扫描工具就会报告相应违规,指引用户修复代码漏洞。静态分析方法一般有如下一些类型:

  • 模式匹配静态分析

模式匹配静态分析方法是静态分析的一种最简单形式,即根据预先配置的规则库去自动化进行代码扫描,如果发现规则库中匹配的模式代码即报告违规。例如,工程师们有时候不小心使用了字符串“”进行字符数组结尾,其实实际是想使用单个字符’’。这个错误可能会引起内存损坏并导致程序崩溃。静态分析工具会在代码中寻找这些模式代码并报告可能出现的错误。这种静态分析被称为模式匹配静态分析。

  • 数据流分析

数据流分析,有时也被称为动态分析,与上面提到的模式匹配静态分析有些许不同。这种类型的代码分析检查问题前同样需要配置一组规则集(规则库),但数据流分析方法会在执行代码扫描时模拟程序的执行路径,追踪数据流向如指针所指向内存的处理流向等,仿真执行程序,查找和报告运行时错误,深入挖掘软件项目代码中难以发现的缺陷,例如空指针取消引用、缓冲区溢出、资源泄露、SQL注入等等。

  • 度量分析

为了实现不同的代码扫描目标,还有一些其他类型的静态分析方法,如度量分析,通过预先配置的代码结构度量阈值,来自动化扫描代码结构的同时报告项目代码的结构复杂性,统计相应软件项目代码中字段的继承深度,圈复杂度等等,以便后续可以对项目进行重构提供重要依据,优化产品,提高软件产品的可靠性和健壮性。

二.静态分析与认证标准

市场上的各种软件正变得越来越复杂,每天我们都会和各种不同的软件打交道,软件无处不在。例如,汽车系统在早期是纯机械的,但今天一般的汽车可能都包含超过1000个代码行的微控制单元,以响应各种用户指令,如智能空调,导航系统,安全系统等等。越来越多的硬件设备搭载了响应的智能系统,而每个系统都要求提供安全可靠的功能,去满足用户的各种个性化需求,这就要求软件项目必须具备一定的质量保障方法,比如最切实可行的静态分析。特别是那些攸关人身安全的行业软件系统,如汽车电子、医疗器械、航空电子设备等等。

当今软件市场上,有一些公开或私营企业或组织,如OWASP和MITRE,他们研究和发布了一些常见安全错误列表,并倡导最佳编程实践。在一些特定行业还存在相关的代码和认证标准,如MISRA,通过强制规定遵守一定的代码编写标准来保障相关行业软件系统的安全性,可靠性和健壮性。而这些最佳实践或相应行业代码标准都可以作为静态分析的具体规则纳入到规则库中,每天持续地进行自动化代码扫描,切实履行编程最佳实践。

三.自动化静态分析的好处

在客户端机器上通过手动触发运行静态分析就类似于在文字处理程序中运行拼写检查,及时报告拼写错误并协助用户纠正。对于小项目来说,这是可以接受的,但是在大型企业或组织中,静态分析应该是自动化执行,并且作为持续构建或代码签入的一部分。将静态分析方法当作为开发测试过程的一部分进行整合后,静态分析能提供许多益处,具体参见如下说明。

  • 加快软件开发周期

在项目的早期阶段就引入自动化静态分析,持续地进行自动化代码扫描,在修复成本处于最低时就找到问题并修复代码缺陷。这相比不运行静态分析而只为加速开发软件,整个过程最初可能需要花费更多时间,但是效率收益是翻倍增长的。另外,一些静态分析工具还提供规则库的详细编程标准实施描述性文档,这在查找和规避问题的同时也会扩宽软件工程师的编程知识,往更专业和更高层次方向发展。开发团队所产出的代码是可持续迭代维护开发的,工程师们也更有信心做出代码改变和创新,其实整个软件项目开发的速率是阶梯式提高的。

  • 降低产品缺陷率

静态分析可以帮助您更早的找到并修复缺陷,可防止软件产品后期的系统性缺陷。一些静态分析工具不仅报告静态分析违规行为,还可与开发平台集成,直接定位到具体代码行,这可以帮助你了解所有报告的缺陷实例发生的根本原因。具备了自动化静态分析技术,就可以更容易地实施缺陷预防政策,从而降低软件开发生命周期的缺陷率。

  • 持续改进软件

“DevOps”一词常用于描述一组实践,它促进跨部门合作和沟通,这对帮助企业优化和加速开发过程是必须的。通过跨部门分享知识和任务,企业在提高质量工艺的同时,也为加快SDLC创建了一个高效的进程。这方法是有效的,然而,必须实施一个自动化反馈回路,是整个高效的团队实践流程得到改进。

自动化静态分析不仅是提供反馈循环机制,它还为各相关部门在DevOps模式下有效协作提供了实际素材和具体沟通桥梁。尤其是当代码测试进入到单元测试和回归测试时,静态分析还扮演了如下几个角色:

  • 保证代码质量具备动态测试基础
  • 提供改进开发过程所需的大数据
  • 提供了DevOps自动反馈的切实可行方法

因此,静态分析成为了持续集成构建和软件开发测试过程持续改进的关键推动力。

四.关于Parasoft的静态分析解决方案

市场上有一些静态分析工具,涵盖范围从开放源码事业到全面发展的测试套件。针对JavaC/C++.Net 等主流语言的软件产品开发,Parasoft公司提供了一个企业级的开发测试解决方案。除了全方位的静态代码分析能力如模式匹配分析、数据流分析和度量分析等,该开发测试平台还具备良好的扩展性,包括了单元测试,集成测试,运行时错误检测,代码审查,覆盖率分析等功能,可以自动化生成测试用例,执行单元测试的同时提供多种视角的覆盖率分析,提供图形化报表系统,是一个完善的方案级平台,全方位落实自动化缺陷预防政策,保障客户产品质量的同时提高软件产品交付速度。

五.结论

静态代码分析是确保应用程序功能如期实现的一个重要组成部分。它不仅提高了整个开发团队的速度,也降低了与释放潜在危险的软件相关的风险。虽然有分析总比没分析好,但应该将静态分析整合到开发测试基础设施中,从而最大限度地提高实践的有效性。Parasoft在代码级测试中提供了专业的代码分析和自动化测试套件,开发测试平台中提供了一个先进的分析和报告系统。结合这两种技术,使软件工程团队加速软件交付,同时确保他们的应用程序功能满足客户需求,符合产品预期,实现商务价值。

Parasoft联名十大商家共启正版行动,超低折扣等你来拿!

时间: 2024-08-05 17:47:03

静态分析——自动化代码扫描如何预防缺陷和加速交付?的相关文章

Coverity代码扫描工具

1.说明:Coverity代码扫描工具可以扫描java,C/C++等语言,可以和jenkins联动,不过就是要收钱,jenkins上的插件可以用,免费的,适用于小的java项目 2.这是Coverity的github地址       https://github.com/jenkinsci/coverity-plugin 3.以下是coverity在jenkins上操作       jenkins=詹金斯 安装插件使用插件管理器,重启詹金斯. Coverity配置工具(管理詹金斯>全球工具配置)

传智播客c/c++公开课学习笔记--黑客代码分析与预防

黑客代码分析与预防 笔记 [课程简介] C/C++语言是除了汇编之外,最接近底层的计算机语言,目前windows,linux,iOS,Android等主流操作系统都是用C/C++编写的,所以很多病毒.木马也都是用C/C++实现的.课程的目的就是通过C语言揭秘木马和各种远程控制软件的实现原理以及如何防护. [课程知识点] 1.木马入侵系统的方式: 2.木马入侵到宿主目标后的关键行为分析: 3.可信任端口以及端口扫描技术: 4.远程控制的实现代码实现: 5.恶意代码中使用TCP.UDP协议与防火墙穿

艾伦 Visual Studio 批量自动化代码操作工具-VS插件发布

艾伦 Visual Studio 批量自动化代码操作工具 以下简称--艾伦工具箱. 艾伦工具箱是一个多文件批量处理插件,目的是为了广大开发者提高开发效率,减少项目代码规范化审计,缩短开发者的项目开发周期. 名称:艾伦 Visual Studio 批量自动化代码操作工具. 亮点:批量操作. 功能:1,代码格式化:2,移除与重排Using. 可选:1,针对整个解决方案进行自动化操作:2,针对选中的当前项目进行自动化操作:3,针对指定的后缀名代码文件进行操作: 注意事项:默认支持*.cs.*.vb,可

推荐一款华为最新的自动化代码检查工具

作为一枚软件攻城狮,你是不是总觉得自己撸代码的能力还有待提高却又无从下手?你是不是看到过XX大神美轮美奂的代码,然后佩服的五(ren)体(yang)投(ma)地(fan),然后躲在暗房里哭.然后你下定决心要痛改前非,然后发现无处下手,然后--又回到了以前的不归路? 如果你没有以上症状,请你关上浏览器,悄悄离开,千万别回头! 如果你有以上症状,但觉得自己已经病入膏肓,无法医治,让我拍拍你的肩,对你说"下辈子重新来过吧!". 如果你觉得自己还有救,就留下来继续观看,我给你开导开导. 要想修

[ci] 基于1 上文实现拉取代码后能自动触发sonar-runner实现代码扫描评测,job1完成

基于1 上文实现拉取代码后能自动触发sonar-runner实现代码扫描评测,job1完成 ? 添加sonar插件 SonarQube Plugin ? 配置: 系统设置à告知jenkins,sonar在哪 ? https://docs.sonarqube.org/display/SONAR/User+Token How to Generate a Token To generate a token, to go?User > My Account > Security. Your exist

WebScarab 自动化批量扫描

自动化批量扫描:http://blog.csdn.net/danqingdani/article/details/6366645 自动化批量扫描:http://bhyygvhic.blog.sohu.com/265096135.html

使用docker实现半自动化代码自动部署与回滚

最近开发docker的caas平台,目前已经开发完成,在优化性能与套模板.对于docker最近是很好,很多人把docker做为vm来使用,当然作为测试来说是没问题,但我感觉docker本身在做沙箱.自动化部署与回滚方面更适合,下面介绍一下我这里是如何通过docker实现代码半自动化部署. 目前我这里已经实现能结合svn或者git代码库,对node.php.java代码进行半自动化部署,先给大家截图看效果,感觉满意在继续细看. 总界面如下 点击左上角的"新增开放项目"就可以新建立测试,下

测试case自动化代码框架

这个是我在自动化case编写框架的经验总结,由于作者经验有限,如有错误,欢迎指正 另外我有代码示例,但是不知道怎么上传,好像不支持附件啊,我传到资源里了,找不到的同学也可以留言,我私下发给你 框架背景 在测试项目中,项目的版本会有很多,需要测试人员对每个版本进行尽可能详尽的测试.自动化case能够大大提高测试的效率,减少人为出错的可能,有益于项目质量的保证.随着项目规模的扩大,项目case的增多,测试case的编写困扰着测试人员,这篇文章就是为了解决这个问题. 框架优点 简单 重用代码 层次化

uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码

项目介绍 二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败问题,优化自带工具截图速度 ,实现类似录制脚本功能.兼容IOS安卓. 软件架构 本工具以安卓SDK自带uiautomatorviewer为源码基础,在此上进行深度二次开发. 优化定位符Xpath生成,提取相对短的Xpath,解决自带工具Xpath太长不友好的问题 修复自带uiautomatorviewer截图报错,无法截图的Bug 优化截图速度优化