软件测试是开发过程中的关键步骤。Coverity 是一种静态分析解决方案,它通过分析源码来识别以下各类问题,从而可以在开发生命周期的早期解决软件问题。
软件质量和安全问题
违反通用编码标准
静态分析解决方案包括分析工具和管理工具。分析工具可以扫描您的代码并标记问题。管理工具可让您存储结果,微调测试配置,监控趋势,并生成报告。您也可以使用 Coverity 工具来管理第三方工具发现的问题。
作为一种测试方法,静态分析具有以下优势:
只要有可以解析的函数,您就可以测试代码。您不需要拥有可构建系统或工作系统来执行分析。
静态分析允许您在问题嵌入代码并需要昂贵的修复或变通之前进行纠正。
您可以测试通过代码的每一条可能的路径。
随着应用程序的增长,使用动态测试方法实现测试覆盖率会变得代价高昂且计算繁琐。Coverity 可以测试通过代码的所有路径,甚至是那些极难手动测试的路径,例如只有在硬件故障时才会触发的错误条件。
它具有确定性:对相同代码库的分析会产生相同的结果。
它能够极快地分析大型代码库。Coverity 使用旨在针对大型应用程序扩展的算法。
为了发现问题,Coverity 首先扫描您的代码,然后计算调用关系图。根据关系图中定义的依赖关系,它可以派生通过代码的所有可能的路径。最后,它将遍历每条路径以查找导致安全或质量问题的事件,并在源中出现这些问题时将其显示出来,然后提供有关每个问题的原因和补救措施的信息。
下面是针对某个问题所显示的信息种类的示例:
图 1. 示例:针对某个问题显示的信息

除了标记主事件(问题)之外,分析引擎还可以识别与违规问题相关的促成事件和控制结构。即,Coverity 不仅分析特定函数上下文中的代码,而且分析执行流。因此,一个缺陷可能始于一个函数,而终止于另一个函数或类。在每种情况下,Coverity 都会解释它如何确定问题的存在。
可以使用基于构建的捕获方法(针对编译语言)或无构建捕获方法来进行分析。选择哪种方法取决于源语言以及您愿意在配置分析上投入的工作量。
分析测试和结果可以与您的 IDE、连续集成 (CI) 系统、源代码控制系统和程序缺陷报告系统集成在一起。