因此,安全关键型应用需要更严格的方法来验证安全性和稳健性,这就是静态分析可以带来的其他好处。在本文中,我们将消除静态分析只是发现错误这一误解,并证明它可以帮助验证是否符合编码标准,生成有关代码质量的指标,并可以在软件开发的任何阶段使用。
毫无疑问,发现错误肯定是静态代码分析的一个重要方面。但是,静态分析技术的范围广泛,从简单的语法检查或基于启发式的方法,到基于形式化方法的高级验证,不一而足。
这一范围还体现在市场上各种各样的静态分析工具。例如,一些高级编译器有一个采用静态分析形式的内置语法检查器。在该范围的另一端是基于形式化方法的工具,如可以执行语义分析的Polyspace,为您的软件提供详细的运行行为。
PolyspaceBugFinder是一种可以帮助发现错误的静态分析工具,但它还可用于:
检查您的软件是否符合编码标准,如MISRAC/C++、JSF++和自定义规则
生成代码度量指标以帮助您改进代码质量。
此外,使用PolyspaceCodeProver,您还可以证明您的软件不会由于特定类型的关键运行时错误而崩溃。
因此,这些工具已经超出了简单的错误发现,在验证和确认过程中非常有价值。例如,下图中的代码是形式验证的结果,该结果确认在任何运行条件下都不会发生溢出错误:
如前所述,您可以使用静态分析来检查您的代码是否符合特定的编码准则或标准,从而避免使用不安全或不可靠的结构。它还可以帮助您捕捉表明代码质量的关键指标,如圈复杂度、执行不到的代码、使用共享全局变量和递归、省去编写测试用例的开销。这些指标可以帮助您找出设计问题,例如可能最终影响软件性能和可靠性的代码架构。
静态分析更为广泛的优势并不广为人知,因此它在软件开发工作流程的后期才被采用。因为它被简单地认为是一种发现错误的方法,所以它通常在软件开发的最后阶段才被采用(例如,静态分析是质量工程团队发布代码之前的最后一关)。超过90%的潜在客户在进入了项目的结束阶段后才与我们联系,了解我们的静态分析解决方案。