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

在容器化环境中部署静态分析和单元测试(2):如何使用Parasoft C/C++test创建容器映像


如何使用Parasoft C/C++test创建容器映像

这篇文章的1部分讨论了使用容器部署嵌入式开发工具链的好处。它展示了如何配置Parasoft C/C++test Professional以使其与在容器中部署的编译工具链和测试执行环境一起使用。

现在,让我们看一下使用Parasoft C/C++test Standard创建容器图像。我将演示一个包含容器内静态分析执行的简单示例。


Docker容器中部署Parasoft C/C++test Standard


作为基于命令行的工具,Parasoft C/C++test标准适用于容器内部署。它可以与编译器打包在一起,并将系统构建到一个容器映像中,并用于CI/CD,并部署到开发人员的桌面以进行本地命令行扫描。下图显示了此设置的高级概述:


该图显示Jenkins使用容器化的C/C++test运行静态分析。在此特定设置中,Parasoft C/C++test,编译工具链和构建工具部署在该图右上角所示的容器中。

右下方它下方的容器提供了执行环境,执行运行时测试(例如单元测试或自动系统级测试)可能需要执行环境。

如果我们打算仅执行静态分析,则我们的设置很可能仅包含带有编译工具链和Parasoft C/C++test的一种容器。


使用Parasoft C/C++test创建容器映像


如果尚未安装,请安装最新版的Parasoft C/C++test 2020.1 for Linux

为了简化使用C/C++test创建容器映像的过程,最新版本附带了一个Dockerfile示例。您可以在以下位置找到该Dockerfile:

/integration/docker/Dockerfile

这个简单的Dockerfile仅关注构建映像所需的C/C++test步骤。在大多数实际情况下,您需要将此文件与Dockerfile合并。

在分析示例Dockerfile中的内容之前,让我们看看它是如何工作的。我的示例假定以下简单文件结构:

$HOME/sandbox/parasoft_cpptest_standard-2020.1.0-linux.x86_64.tar.gz

1.解压缩C/C++test发行版。

  • cd $HOME/sandbox
  • tar xzf parasoft_cpptest_standard-2020.1.0-linux.x86_64.tar.gz

2.从发行版中复制示例Dockerfile

  • cp cpptest/integration/docker

3.使用有关许可证的信息为C/C++test准备属性文件。我们将使用默认的cpptestcli.properties文件作为基础,因此我们将其复制到我们的工作目录中:

  • cp cpptest / cpptestcli.properties

编辑它以插入有关您的许可证服务器位置的信息。使用您喜欢的编辑器来配置许可信息。完成后保存文件。

4.编辑Dockerfile,并取消注释行号13(将cpptestcli.properties文件从本地目录复制到容器中位置的行)。Dockerfile中的行应如下所示:

  • COPY cpptestcli.properties /opt/parasoft/cpptest

5.现在,我们准备创建Docker映像。运行命令以使用C/C++test构建第一个映像。图像名称为“cpptest_ci_image”。

  • docker build -t cpptest_ci_image

Docker将花费一些时间来分析其缓存并下载所需的基本映像。完成此操作后,将复制C/C++test发行版并将其安装到映像中。一两分钟后,图像应准备就绪。 通过执行命令以列出所有图像来确认它:

  • docker image -list

在输出中,您应该看到顶部列出了“cpptest_ci_image”。太好了,因此我们已经建立了图像并准备就绪。现在该进行测试了!


测试容器映像


为了进行简单测试,请使用Dockerfile中提供的帮助程序/示例命令行之一。

使用您喜欢的编辑器打开Dockerfile,然后向下滚动到文件底部。您应该看到几个示例命令行,如下所示:

让我们使用第26行中的命令行在该发行版随附的C/C++test示例之一上执行容器内静态分析。

由于我们决定使用许可信息将cpptestcli.properties文件构建到容器中,因此我们可以简化命令行并删除-settings选项。测试的命令行应如下所示:

  • docker run --rm -v $PWD:$PWD -w /opt/parasoft/cpptest/examples/ATM cpptestcli -compiler gcc_9-64 -module . -trace make clean all

瞧!静态分析是在容器中执行的。结果在控制台上报告。

我们可以进一步配置该工具以在本地文件系统上生成HTML报告,但这是另一回事。我们的主要目标是创建内部带有C/C++test的容器,并将其配置为执行静态分析。我们实现了目标。


使用静态分析设置CI服务器


如果您需要在流程中设置带有静态分析的CI服务器,则您的任务会简单得多。只需访问容器。如果您团队中的开发人员想要运行静态分析,则情况也是如此。

是否需要Parasoft C/C++test升级到最新版本?只需下载发行版,重建您的容器映像,即可完成!团队和自动化基础设施甚至都不会注意到此操作。如有必要,可平滑,轻松且可逆。


关于Dockerfile内容


在结束之前,让我们看一下用于创建映像的Parasoft C/C++test附带的Dockerfile的内容。下图显示了/integration/docker/Dockerfile的内容。

详细信息如下:

  • 2行指定GCC映像的Docker集线器,容器映像基于该集线器。
  • 3行为将在此脚本中执行的后续命令设置工作目录。
  • 7行,我们将C/C++test发行版(存档)复制到容器映像。
  • 10行将分布提取到容器内的位置:/opt/parasoft(请注意第4行的WORKDIR命令)
  • 13行将定制的cpptestcli.properties文件从本地目录复制到C/C++test的容器内安装中。此步骤是可选的,默认情况下已被注释掉。在大多数情况下,您需要在C/C++test的安装中嵌入一些属性。最典型的方案是许可证配置,其中将包括许可证服务器的位置、凭据等。
  • 16行删除了分发存档。这只是一个清理。
  • 18行将workdir重置为/home(可选)
  • 19行指定了在容器启动时要运行的可执行文件。

这就是使用Parasoft C/C++test创建一个简单容器即可执行静态分析所需的一切。

正如我提到的,这是一个简单的Dockerfile。它已添加到分发中,以为您提供一个示例,说明您可能需要为环境创建容器映像。您将需要对其进行调整,或者将其与现有的Dockerfile合并。