为了从一开始就在您的软件中提高质量,请使用静态分析——软件工程师可以执行的最简单、最有效的方法来防止缺陷并强化代码,同时加快应用程序交付。

在对任何类型的系统进行工程设计时,尽早(并经常)检查缺陷和修复错误使团队可以显着减少添加到项目中的下游工作量,并且是避免在此过程中出现多头麻烦的可靠方法。

在软件开发中,不是一开始就设计出更好的软件,而是试图落入一个通用的陷阱中,并试图简单地对软件项目的质量进行测试(通常是在最后)。但是,重要的是要避免采用这种方法的诱惑,这种方法依赖于单元或功能测试来测试产品的质量。为了从一开始就在软件中提高质量,开发人员可以通过采用静态分析来控制软件工程师可以执行的最简单和最有效的方式,以防止缺陷并强化代码,同时加快应用程序交付。

什么是静态代码分析?

静态代码分析(或静态分析)是软件开发中的软件测试活动,其中分析源代码以查找已知与软件错误或安全漏洞相关的结构。当检测到高风险构造时,静态分析工具会报告违规行为,以供开发人员查看和修复。

在我们回顾静态分析的一些主要优点之前,让我们先回顾一下静态分析的不同类型以及它们之间的区别。静态分析有几种主要类型,每种类型都有其优点和缺点。每个项目的条款如下。

基于模式的静态分析

静态分析工具以最简单的形式扫描源代码,并根据一组或多组规则对其进行检查。例如,当实际使用空字符“\0”时,工程师有时会错误地使用字符串“\0”。此错误可能导致内存损坏,并导致程序崩溃或执行其他令人讨厌的事情。静态分析工具会在代码中查找这些模式,并将其报告为可能的错误。这种静态分析称为基于模式的静态分析。有些模式是简单的语法检查器,类似于编写时的拼写检查器。其他模式可能更加复杂,可以分析和检测与细微问题相关的完整模式。这种静态分析几乎不会遭受误报。

现代软件工程标准,例如汽车工业软件可靠性协会(MISRA)和联合打击战斗机(JSF),是基于这样的思想:应避免使用对安全性至关重要的代码中的某些构造,因为此类系统中的代码可能会出现问题。

通过为“不安全”设施提供“更安全”的替代方案,可以避免已知的低级功能问题。本质上,程序是在超集的“安全”子集中编写的。

来自联合打击战斗机飞行器C++编码标准–简介

流分析

流分析(有时称为控制流分析或数据流分析)有些不同。这种类型的代码分析根据一组规则检查有问题的构造,同时模拟决策路径以更深入地研究应用程序并消除难以发现的缺陷,例如空指针取消引用、缓冲区溢出以及诸如污染数据的安全缺陷。流分析之所以出色,是因为它可以发现真正的错误,但是一定数量的误报始终是此方法的一部分。

其他分析类型

还有其他类型的静态分析可以实现不同类型的目标。例如,指标分析工具可测量代码特征,例如代码行和复杂性。覆盖率分析工具跟踪单元和应用程序测试,以更好地了解代码的测试程度。当作为自动化开发测试过程的一部分一起使用时,这些类型的分析可提供对应用程序安全性,保障性和可靠性的明显了解。

无法进行静态分析的风险

软件的状态变得越来越复杂。例如,今天,平均每辆汽车可能包含1000多个执行代码的MCU和多达1亿行代码!如此大的电子表面积,尤其是在安全性至关重要的应用中,例如汽车、医疗设备或航空电子设备,要求对软件采取严格的工程方法,以便接近无缺陷的代码。

好消息是,OWASP,CERT和MITER等组织致力于研究和发布编程最佳实践,以帮助软件工程师在其软件项目中取得成功。也有针对特定行业的标准组织(例如MISRA,专注于汽车软件系统),其发布监管机构通常要求的最佳实践。这些最佳做法可以作为规则编入静态分析工具中,您可以选择将其作为组织策略的一部分实施,以供开发人员遵循。

使用能够在与开发过程集成的同时实现这些编程标准的静态分析工具至关重要。从业务角度看,如果无法使用至少一个静态分析工具来检查您的工作,则会大大增加部署或发布应用程序的风险。缺陷可能导致恶意黑客可以利用可利用的代码来使系统崩溃,暴露敏感数据等。对于安全性至关重要的软件,软件漏洞的后果可能更加严重。

自动静态分析的好处

在桌面上运行静态分析将带来一些好处,并且可能适用于小型团队或项目。但是,在大型组织中,静态分析也应该作为夜间构建和持续集成的一部分进行自动化。当实现为开发过程的组成部分时,使用静态分析来分析代码可带来许多好处,其中包括:

更快的开发周期

从项目的早期阶段开始就始终执行静态分析,可以使您在补救成本最低的情况下发现并修复系统缺陷。与不进行分析而快速开发软件相比,该过程最初可能花费更多的时间,但是效率的提高在整个开发生命周期中都呈指数级增长。请记住,在周期的后期可能难以解决一些更危险的错误,因此及早发现它们至关重要。

好的静态分析工具还包括有关正在实施的编程标准的描述性文档,可扩展软件工程师的编程知识和专业开发。随着时间的流逝,对这些标准的遵守会通过不断的反馈来改善程序员,从而提高了代码的平均质量。如果您的静态分析工具具有更广泛的生态系统,可以自动确定缺陷修复任务的优先级,那么您将能够更快地交付该软件。

降低缺陷率

静态分析可帮助您及早发现并修复缺陷,从而可以防止下游出现系统性缺陷。使用早期检测策略,您可以更轻松地实施缺陷预防策略,从而降低了开发生命周期中的缺陷率。(值得一试的工具:Parasoft C/C++test,它不仅报告静态分析违规情况,而且还与非常复杂的分析平台集成,可以使您对报告的缺陷的所有实例及其对缺陷的整体影响有更广泛的了解。代码库的质量。)

连续的提高

DevOps术语通常用于描述一系列实践,这些实践有助于跨部门的协作和交流,以帮助组织优化和加速其开发和交付过程。通过在部门之间共享知识和任务,组织可以创建一个有效的流程来加速SDLC,同时改善质量流程。

但是,为了使该方法有效,必须实施一个自动反馈循环,以使质量策略在需求从创建到生产的过程中始终如一地应用。

自动化的静态分析不仅是反馈循环的机制,而且还生成其他部门在DevOps模型下有效访问和协作所需的数据。尤其是与单元测试和回归测试一起使用时,静态分析起着一些作用,包括:

  • 确保代码质量
  • 提供改善开发过程所需的大数据
  • 简化DevOps自动反馈回路的设计

结果,静态分析成为持续、自动化过程改进的媒介。它为开发人员提供了一种理解和检查在发行期间检测到的错误的方法,或为质量检查提供了一种方法,以确定是否有一种方法可以强化代码并消除将来出现这些缺陷的可能性。

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

市场上有几种静态分析工具,范围从开源实用程序到完整的开发测试套件。Parasoft的软件测试解决方案提供了一个集成平台,可以自动为多种编码语言提供广泛的软件质量实践,同时提供有意义的、全面的报告以及由Parasoft DTP支持的智能分析选项。

对于C和C++,除了全面的静态代码分析功能和超过2200条规则(市场上所有工具中的大多数,基于MISRA,MISRA C++,FDA,Scott Meyers的Effective C++,Effective STL的实现),和其他已建立的资源),Parasoft C/C++test为您的开发测试实践提供了统一的解决方案。它生成并执行单元测试;支持多种类型的代码覆盖,包括行、语句、块、路径、决策(分支)、简单条件和MC / DC覆盖;提供运行时分析,并随附符合功能安全标准的工具鉴定套件。

Parasoft还具有对Java语言(使用Parasoft Jtest)和.NET语言(对Parasoft dotTEST)的完全静态代码分析支持。就像C和C++一样,它们是完全集成的解决方案,不仅提供静态分析,而且还为您提供了全面的解决方案,以提高效率并简化软件测试。用户可以在桌面上使用Parasoft静态分析来分析代码,也可以将其集成到自动构建中,从而使您能够连续自动地防止缺陷。

为了获得增强协作和效率的自动化工作流,这些静态分析引擎与Parasoft DTP集成在一起,后者提供了将质量集成到SDLC中的工作流,因此您可以定义开发策略,然后自动执行非功能性要求。例如,在构建过程中将自动执行静态分析,将违规情况报告给DTP,并在处理后将结果发送回工程师的IDE,以进行补救。

DTP还执行智能分析,这些分析使这些工作流能够自动评估软件开发的质量和风险。例如,DTP可以查找与编程过程相关的系统性问题,或者将初级工程师生成的严重违反代码的行为与一组单元测试和覆盖率信息相关联,以确定与模块相关的风险有多大。如果相关性指向高于特定阈值的风险水平,则违规行为可能会触发特定的连续过程改进工作流,除了正常的缺陷修复任务外,还涉及对等代码审查和其他分析。

结论

静态代码分析是确保应用程序按预期运行的重要部分。它不仅提高了整个开发团队的速度,而且降低了与发布潜在危险软件有关的风险。虽然某些分析总比没有分析要好,但是应该将静态分析集成到更大的软件测试基础结构中,以最大程度地提高实践的有效性。Parasoft在C/C++test,Jtest和dotTEST中提供了企业级代码分析和测试套件,并在DTP中提供了高级分析和报告系统。结合使用这些技术,软件工程团队可以加快软件交付速度,同时确保其应用程序按预期运行。

什么是静态分析?代码分析工具相关推荐

  1. PVS-Studio C/C++/C++11 静态代码分析工具

    PVS-Studio C/C++/C++11 静态代码分析工具 静态代码分析仪是一种检测代码缺陷.分析对比 商业代码的工具,它分析源代码和它生成的目标 文件,但并不实际运行源代码.应用于对安全性. 稳 ...

  2. Python代码分析工具:PyChecker、Pylint

    1 概述 PyChecker是Python代码的静态分析工具,它能够帮助查找Python代码的bug,而且能够对代码的复杂度和格式等提出警告. PyChecker可以工作在多种方式之下.首先,PyCh ...

  3. 静态代码分析工具列表分析---代码分析工具列表(30款工具)

    本文是一个静态代码分析工具的清单,共有30个工具.包括4个.NET工具.2个Ada工具.7个C++工具.4个Java工具.2个JavaScript工具.1个Opa工具.2个Packaging工具.3个 ...

  4. 静态代码分析工具清单:开源篇(各语言)

    本文是一个静态代码分析工具的清单,共有26个工具.包括4个.NET工具.2个Ada工具.7个C++工具.4个Java工具.2个JavaScript工具.1个Opa工具.2个Packaging工具.3个 ...

  5. 静态代码分析工具清单:开源篇

    http://hao.jobbole.com/static_code_analysis_tool_list_opensource_lang/?utm_source=blog.jobbole.com&a ...

  6. 静态代码分析工具汇总

    静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):"静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码 ...

  7. 静态代码分析工具列表--常用静态代码分析工具介绍

    代码检测简介 本文是一个静态代码分析工具的清单,但是为公司产品需要付费使用.共有37个公司,有些公司包含多个工具.其中27个公司有多语言 工具,1个公司为PHP工具.2个公司为.NET工具.1个公司为 ...

  8. 【转】恶意代码分析-工具收集

    如有侵权,请联系删除. 目录 恶意代码分析-工具收集 恶意代码分析实战 恶意软件自动化分析工具套件 文档分析工具 JavaScript分析工具 系统&文件监视工具 shellcode分析工具 ...

  9. 恶意代码分析-工具收集

    恶意代码分析-工具收集 恶意代码分析实战 Strings:字符串查找工具 https://docs.microsoft.com/zh-cn/sysinternals/downloads/strings ...

  10. 静态代码分析工具简介

    静态代码分析工具简介 什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句 ...

最新文章

  1. chatbot:基于 AIML 的 PHP 聊天机器人
  2. 关于微信小程序的好奇和多事
  3. 云炬60s看世界20211119
  4. 如何设计良好的viewcontroller
  5. 什么是PermGen泄漏?
  6. 常用的排序算法总结(二)
  7. 微软重新设计 Edge for Android 的用户界面
  8. 淘宝分类大全及其分组 (MySql, xls)文件,上下关系,拼写,层级,层级树,提示,2022年2月28日数据
  9. [ZZ] GTX760首测
  10. 小程序ColorUI使用简易教程
  11. windows磁盘分区合并(比如合并到C盘/分区扩容)问题/删除恢复分区
  12. 安卓APP源码和设计报告——仿淘宝水果商城
  13. Python 爬虫:把廖雪峰的教程转换成 PDF 电子书
  14. Java操作Json数组
  15. 微信小程序文字两边添加横线
  16. 关于开源软件的几个看法
  17. [1]数据分析中变量取对数的意义
  18. 淘宝官方集运(大陆发货,收货地台湾)流程
  19. 东南亚电商发展迅猛,中国卖家“钱”途光明
  20. 2015年,这些营销有点“色”

热门文章

  1. 爬虫手册03 Selenium的使用
  2. 国标28181:libexosip2协议栈原理
  3. opencms mysql_[转]OpenCms for MySql 安装图解
  4. [翻译]:Cinemachine 官方文档(0)
  5. 前端开发应知网站(强烈推荐!)
  6. 统计数据会说谎_统计数据对您说谎的三种方式
  7. 无法启动此程序因为计算机中丢失d3dx,无法启动此程序,因此计算机中丢失d3dx9-41.dll怎么解决?...
  8. 新闻发布系统——网站发布
  9. NOD32中小企业服务器版部署方法
  10. 2022国内十大工业级三维视觉引导企业一览