logo Parasoft C/C++test 使用教程 我也要发布文档

结合使用Parasoft C/C++test和CMake进行静态分析


结合使用Parasoft C/C++test和CMake进行静态分析

CMake是用于构建,测试和打包软件的最受欢迎的工具之一。它大大简化了大型项目的构建过程的管理。Parasoft C/C++test 2020.1版本引入了一系列增强功能,可以简化与基于CMake的项目的集成。

在针对最大和知名汽车制造商之一的测试解决方案推出期间,我们开发了这些增强功能。

我们的挑战是将静态分析和单元测试功能引入基于自适应AUTOSAR平台的大型复杂项目中。这些项目由多个静态和动态库以及许多可执行文件组成。

在此博客文章中,我将说明如何将Parasoft C/C++test静态分析功能集成到基于CMake的项目中。请继续关注我的下一篇文章,其中我将解释如何对单元测试执行相同的操作


将静态分析集成到基于Cmake的项目中


要执行静态代码分析,诸如Parasoft C/C++test之类的工具需要有关项目构建的信息。通常,只需要编译命令行来调用用于分析的文件。

使用Parasoft C/C++test,有多种方法可以集成到内部版本中。不同的构建系统可能需要不同的方法。对于基于CMake的项目,有很多可用的选项可以使静态分析变得毫不费力,并且对过程的更改最少。它使与C/C++test的平滑集成成为可能。

CMake脚本可以轻松配置为生成编译时信息作为JSON文件。通常,每个版本会获得一个JSON文件。此JSON文件包含静态分析器执行代码扫描所需的全部内容。然后在生成生成脚本时创建带有编译命令行的JSON文件。C/C++test 2020.1版本了解此格式,可以将其直接用作执行静态分析的输入。

如何在基于CMake的项目上运行静态分析

在基于CMake的项目上运行静态分析的过程涉及以下步骤:

  1. 使用编译命令启用JSON文件的生成。这是一次性活动。
  2. 生成您的构建脚本。这将包括compile-info JSON文件生成。
  3. 通过将JSON文件中的compile-info作为静态分析器的输入来运行静态分析。

就是这样!


基于CMake的项目的静态分析示例


让我们来看一个在基于CMake的项目上运行静态分析的示例。 如果尚未安装,请安装标准版本的C++test 2020.1

按着这些次序

安装后,转到安装目录并进入示例子文件夹。复制Timer示例,然后进入Timer目录。(这些步骤使用Linux作为开发平台。)

您应该看到以下内容:


本示例准备使用位于主目录中的“静态”makefile或使用CMake生成的构建脚本进行构建。

通过使用cd在Timer目录内创建一个构建文件夹。使用CMake调用生成脚本。

如果在生成后列出构建目录的内容,我们将看到已生成compile_commands.json文件。

对于下一个示例项目,已经启用了compile-info JSON文件的生成。

现在,我们准备使用生成的compile_commands.json文件运行静态分析。一个很大的优点是我们可以将.json文件直接附加到Parasoft C/C++test标准产品的命令行界面中:

接下来,执行静态分析并返回结果。

此集成方法可用于CI或在开发人员桌面本地使用。可能需要的唯一修改是启用compile_command.json文件的生成。

如何在项目中启用生成文件

如果您没有在项目中启用compile_command.json文件的生成,则可以通过以下两种方法之一进行。

选项1

CMakeLists.txt文件中将CMAKE_EXPORT_COMPILE_COMMANDS选项设置为ON。

例如

设置(CMAKE_EXPORT_COMPILE_COMMANDS ON)

选项2

生成构建脚本时,将其添加到cmake的命令行调用中。

例如

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1

这就是将静态分析集成到基于CMake的项目中的全部。 接下来,我将介绍CMake的单元测试:结合使用Parasoft C/C++test和CMake进行单元测试