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

发表于:2020-9-03 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:今日头条

  CMake是用于构建,测试和打包软件的最受欢迎的工具之一。它大大简化了大型项目的构建过程的管理。ParasoftC/C++test2020.1版本引入了一系列增强功能,可以简化与基于CMake的项目的集成。
  在针对最大和知名汽车制造商之一的测试解决方案推出期间,我们开发了这些增强功能。
  我们的挑战是将静态分析和单元测试功能引入基于自适应AUTOSAR平台的大型复杂项目中。这些项目由多个静态和动态库以及许多可执行文件组成。
  在此博客文章中,我将说明如何将ParasoftC/C++test静态分析功能集成到基于CMake的项目中。请继续关注我的下一篇文章,其中我将解释如何对单元测试执行相同的操作。
  将静态分析集成到基于Cmake的项目中
  要执行静态代码分析,诸如ParasoftC/C++test之类的工具需要有关项目构建的信息。通常,只需要编译命令行来调用用于分析的文件。
  使用ParasoftC/C++test,有多种方法可以集成到内部版本中。不同的构建系统可能需要不同的方法。对于基于CMake的项目,有很多可用的选项可以使静态分析变得毫不费力,并且对过程的更改最少。它使与C/C++test的平滑集成成为可能。
  CMake脚本可以轻松配置为生成编译时信息作为JSON文件。通常,每个版本会获得一个JSON文件。此JSON文件包含静态分析器执行代码扫描所需的全部内容。然后在生成生成脚本时创建带有编译命令行的JSON文件。C/C++test2020.1版本了解此格式,可以将其直接用作执行静态分析的输入。
  如何在基于CMake的项目上运行静态分析
  在基于CMake的项目上运行静态分析的过程涉及以下步骤:
  使用编译命令启用JSON文件的生成。这是一次性活动。
  生成您的构建脚本。这将包括compile-infoJSON文件生成。
  通过将JSON文件中的compile-info作为静态分析器的输入来运行静态分析。
  就是这样!
  基于CMake的项目的静态分析示例
  让我们来看一个在基于CMake的项目上运行静态分析的示例。如果尚未安装,请安装标准版本的C++test2020.1。
  安装后,转到安装目录并进入示例子文件夹。复制Timer示例,然后进入Timer目录。(这些步骤使用Linux作为开发平台。)
  您应该看到以下内容:
  本示例准备使用位于主目录中的“静态”makefile或使用CMake生成的构建脚本进行构建。
  通过使用cd在Timer目录内创建一个构建文件夹。使用CMake调用生成脚本。
  如果在生成后列出构建目录的内容,我们将看到已生成compile_commands.json文件。
  对于下一个示例项目,已经启用了compile-infoJSON文件的生成。
  现在,我们准备使用生成的compile_commands.json文件运行静态分析。一个很大的优点是我们可以将.json文件直接附加到ParasoftC/C++test标准产品的命令行界面中:
  接下来,执行静态分析并返回结果。
  此集成方法可用于CI或在开发人员桌面本地使用。可能需要的唯一修改是启用compile_command.json文件的生成。
  如何在项目中启用生成文件
  如果您没有在项目中启用compile_command.json文件的生成,则可以通过以下两种方法之一进行。
  选项1
  在CMakeLists.txt文件中将CMAKE_EXPORT_COMPILE_COMMANDS选项设置为ON。
  例如:
  设置(CMAKE_EXPORT_COMPILE_COMMANDSON)
  选项2
  生成构建脚本时,将其添加到cmake的命令行调用中。
  例如:
  cmake-DCMAKE_EXPORT_COMPILE_COMMANDS=1<pathtosrc>
  这就是将静态分析集成到基于CMake的项目中的全部。接下来,我将介绍CMake的单元测试:结合使用ParasoftC/C++test和CMake进行单元测试。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号