什么是静态代码分析?

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

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

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

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

例如,以这个非常简单的案例为例:

这个速度函数有可能在第14行被零除,并可能导致偶发的运行时错误。要最终确定永远不会发生被零除,您需要使用变量的所有可能值测试函数输入.

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

  • 错误检测。您可以识别数百类与并发性、污染数据、数据流、安全性以及静态和动态内存相关的bug。发现的一些bug几乎不可能通过动态测试检测到。
  • 低成本。您可以轻松地自动化静态代码分析,并且不会产生编写测试用例、插入代码或执行程序的开销。
  • 遵守编码标准。您可以验证代码是否符合编码标准,例如米斯拉C或JSF++,具有CWE、CERT C/C++和ISO/IEC 17961等安全标准,或具有网络安全指南。
  • 证明不存在关键运行时错误。静态代码分析工具可以证明软件不会出现严重的运行时错误。达到这种复杂程度的工具使用形式方法将理论科学基础应用于代码证明。

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

  • 软件开发人员。最佳实践建议在编写代码后立即检查bug和编码标准。在开发过程早期检测到的错误更容易调试和修复。
  • 软件测试人员。集成应用程序代码后,建议对集成的代码进行深入的静态代码分析,以发现缺陷并证明没有严重的运行时错误。
  • 项目经理和质量保证负责人。静态代码分析工具生成代码质量度量,可用于监控软件质量、项目状态、缺陷数量和质量趋势。

如何选择静态代码分析器

有几种工具可用于执行静态代码分析,例如多空间®s manbetx 845产品。选择静态代码分析工具时,请考虑以下问题:

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

为什么选择Polyspace产品?s manbetx 845

多空间®静态代码分析产品使用正式的方法来证明在所有s manbetx 845可能的控制流和数据流下不存在关键的运行时错误。Polyspace产品系列包括:

  • 多空间Bug查找器s manbetx 845产品检查C/C++源代码是否存在编码标准冲突,查找几种类型的错误,检测安全漏洞,并计算质量指标,如代码复杂性指标。
  • 多空间码验证器s manbetx 845产品使用正式的方法来证明C/C++源代码中不存在关键的运行时错误,而无需执行代码。
  • Ada的Polysps manbetx 845ace产品证明Ada源代码中没有运行时错误。

Polyspace产s manbetx 845品提供了前几节中列出的优势和功能,例如错误检测、遵守编码标准以及证明不存在关键运行时错误的能力。例如,对于上面显示的代码片段,Polyspace code Prover可以根据所有po分析函数speed的所有代码路径用于证明不会发生零除法的输入。它在不执行代码的情况下执行此操作。结果显示,第14行上的除法符号为绿色,表示此操作对所有输入都是安全的,不会导致运行时错误。

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

另见:Polyspace产品的静态分析s manbetx 845,验证、确认和测试,嵌入式系统,抽象解释,代码审查,圈复杂度,形式方法,软件度量,软件质量保证,软件质量目标,源代码分析,静态代码分析,静态代码分析视频