什么是静态代码分析?

在不执行代码的情况下提高代码质量

静态代码分析,或静态分析,是一种软件验证活动,它在不执行代码的情况下分析源代码的质量、可靠性和安全性。使用静态分析,您可以识别可能损害应用程序安全性的缺陷和安全漏洞。静态分析是一种不需要编写测试用例或测试代码的开销就可以测量和跟踪软件质量指标的经济有效的方法。

为什么要运行静态代码分析?

大多数软件开发团队依赖于动态测试技术来检测软件中的bug和运行时错误。动态测试需要工程师编写和执行大量的测试用例。由于动态测试不是详尽无遗的,因此不能仅依靠它来产生安全可靠的软件。

举个简单的例子:

静态代码分析代码示例

速度函数可能在第14行被零除,并可能导致零星的运行时错误。为了最终确定不会发生除零的情况,需要使用变量的所有可能值来测试函数输入

静态代码分析补充了动态测试,提供了以下优点:

  • 错误检测。您可以识别与并发、受污染的数据、数据流、安全性以及静态和动态内存相关的数百类错误。发现的一些bug几乎不可能通过动态测试检测到。
  • 低成本。您可以很容易地自动化静态代码分析,并且不需要编写测试用例、测试代码或执行程序。
  • 遵从编码标准。您可以验证您的代码是否符合编码标准,例如MISRA - C或JSF++,与安全标准,如CWE, CERT C/ c++和ISO/IEC 17961,或网络安全指南。
  • 证明没有关键的运行时错误。静态代码分析工具可以证明软件不会因为严重的运行时错误而失败。达到这种复杂使用水平的工具正式的方法将理论科学基础应用于代码证明。

谁应该运行静态代码分析?为什么?

  • 软件开发人员。最佳实践建议在编写代码时立即检查错误和编码标准。在开发过程早期检测到的错误更容易调试和修复。
  • 软件测试人员。在集成了应用程序代码之后,建议对集成的代码进行深入的静态代码分析,以查找缺陷并证明不存在关键的运行时错误。
  • 项目经理和质量保证主管。静态代码分析工具产生代码质量度量,可以用来监视软件质量、项目状态、缺陷数量和质量趋势。

如何选择静态代码分析器

有几种工具可以用于执行静态代码分析,例如Polyspace®2022世界杯八强谁会赢?产品。在选择静态代码分析工具时,请考虑以下问题:

  • 它是否支持您的行业标准?
    遵守标准对于将软件错误带来的经济损失、身体伤害或财产和环境损害的风险降至最低非常重要。不同的行业已经定义了他们自己的安全标准——例如,用于汽车的ISO 26262,用于航空航天的DO-178,以及用于医疗设备的IEC 62304。
  • 分析结果的可靠性和可操作性如何?
    可用于静态代码分析的技术范围很广,这些技术提供了不同程度的结果的可靠性和精确度。例如,抽象的解释是一种被认为是合理的形式方法,因为它不会产生假阴性。
  • 该工具是否为修复bug提供了见解和指导?
    通常情况下,工具仅仅检测bug是不够的。开发人员需要更多的信息来浏览代码的结构并找到bug的根本原因。诸如调用层次结构、变量值、上下文敏感的帮助和建议的修复程序等信息提高了解决复杂问题的能力。
  • 该工具是否提供协作评审?
    一些静态代码分析工具提供了在软件开发团队中轻松共享分析结果和质量度量的功能——例如,通过在线平台。该能力使团队能够执行协作审查、分类和解决缺陷。
  • 该工具能否与现有的软件开发过程集成?
    一个有效的静态代码分析工具必须能够与不同的软件开发过程集成,包括更新的过程,例如持续集成和持续交付(CI/CD)、DevOps和DevSecOps。该工具应该提供丰富的API和插件来集成软件开发工具,如ide(例如Eclipse™和Microsoft)®Visual Studio®代码),CI工具(例如,Jenkins™和Bamboo®)和bug跟踪工具(如Jira和Redmine)。
  • 该工具是否适用于公共和私有云?
    在公共和私有云基础设施(如Amazon)上开发软件®AWS®和微软Azure®正在迅速普及。云为开发团队提供了敏捷性、可伸缩性、高可用性和全局访问。在评估静态分析工具时,重要的是要确保工具是云准备的——也就是说,它们可以在云平台上部署并与软件开发过程集成。了解更多

为什么选择Polyspace产品?2022世界杯八强谁会赢?

Polyspace®静态代码分析产品使用形式化的方法来证明在所2022世界杯八强谁会赢?有可能的控制流和数据流下不存在关键的运行时错误。Polyspace产品系列包括:

Polyspace产2022世界杯八强谁会赢?品提供了前面部分中列出的优点和功能,例如错误检测、遵从编码标准以及证明没有关键运行时错误的能力。例如,对于上面所示的代码片段,Polyspace code Prover可以针对所有可能的输入分析函数速度的所有代码路径,以证明不会发生除零的情况。它在不执行代码的情况下做到了这一点。结果显示第14行上的除法符号是绿色的,这表明该操作对所有输入都是安全的,不会导致运行时错误。

使用Polyspace代码证明程序进行逐零除法检查。

使用Polyspace代码证明程序进行逐零除法检查。

参见:Polyspace产品的静态分析2022世界杯八强谁会赢?验证、验证和测试嵌入式系统抽象的解释代码评审圈复杂度正式的方法软件度量软件质量保证软件质量目标源代码分析静态代码分析静态代码分析视频

Baidu
map