如何在Parasoft中创建构建数据文件(bdf)?

我试图使用Parasoft C / C ++ Test来控制静态测试中的“编码标准”。 我在Parasoft用户指南中找到了“如何在Makefile项目中创建bdf”。

如何为每个项目创建bdf? 是否强制使用makefile项目?

谢谢你的回答,parasoft不是一个知名的话题。 答案值得一块金子。 我找不到cpptesttrace。 有cpptest和cpptestscan。 他们可以吗? 我使用旧版本的parasoft。

你是对的。 在Parasoft C ++测试版本9.4(2012年中)中添加了’cpptesttrace’,因此很可能您使用的是9.2或更早版本,其中只存在’cpptestscan’。

顺便说一下,这里是C ++独立安装(不是Visual Studio插件)中程序的快速解释:

  • cpptest – 启动C ++测试GUI(基于Eclipse),通常用于桌面上的交互式工作
  • cpptestcli – 用于自动执行静态分析的C ++测试命令行驱动程序,例如作为Jenkins作业运行,
  • cpptestscan – 用作编译器命令行的前缀,以捕获单个编译信息并将其添加到BDF文件中
  • cpptesttrace – (自Parasoft C ++ test 9.4)用作构建命令行的前缀,捕获所有编译命令并保存在BDF文件中

cpptestscan和cpptesttrace之间的主要区别在于:

  • 必须在每个编译命令行之前添加cpptestscan。 这意味着,cpptestscan只能捕获单个编译,并一次一个地保存到BDF中。 这通常通过覆盖make CC或CXX变量(指定编译器,例如“cpptestscan g ++ -c foo.c -o foo.o”)来完成。
  • cpptestrace意味着要在整个构建命令中添加一次,并跟踪构建命令调用的子进程。 被识别为编译器调用的所有进程的记录存储在BDF中。

如果makefile或构建脚本足够灵活,允许在命令行覆盖编译器,则cpptestscan很好,例如

make CXX="cpptestscan g++" CC="cpptestscan gcc" 

通常可以使用基于make的项目。 从自定义或自动生成的构建脚本开始,所有投注均已关闭。 通常,唯一的选择是修改项目构建脚本,人们通常会对此感到紧张。 在这种情况下,cpptesttrace可以提供帮助,因为它完全是非侵入式的,并且可以从几乎任何构建过程中捕获构建信息。

如果您有多个项目,请回到本文的原始问题:

  • 使用cpptestscan,您需要在每个项目的构建脚本中以某种方式使用cpptestscan对编译器进行前缀以创建相应的BDF
  • 使用cpptesttrace,你可以为每个项目运行build,在每个项目的build命令前添加cpptesttrace来创建相应的BDF后者通常更容易,但你需要更新的C ++测试(最新版本是10.3)。

我希望有所帮助。 顺便说一句:如果你可以升级你的C ++测试,请与Parasoft联系。

使用make文件不是必需的。 Parasoft C ++测试有一个名为’ cpptesttrace ‘的工具,它监视构建过程并收集编译器调用以创建BDF文件。
cpptesttrace可以与任何构建过程一起使用,无论是make,shell脚本,还是甚至可以在IDE中构建(如果没有可用的命令行构建,最后的方法)。

cpptesttrace如何工作:

  • 你只需要在原始构建命令行前加上’cpptesttrace’和几个选项,然后运行你的正常构建
  • 确保运行完全重建(例如’make clean all’)以确保BDF包含有关属于您的构建的所有源的信息,以及它们是如何编译的
  • cpptesttrace有一组内置的受支持编译器,您可以通过运行’cpptesttrace –cpptesttraceHelp’来查看编译器可执行模式。 如果您的GNU GCC编译器名称是“exception”,您可以重新定义cpptesttrace正在寻找的模式。
  • 如果遇到问题,您可以随时联系Parasoft支持部门

例1:

我将给出一个make文件示例:),但它可能是scons,jam或Python脚本,或者.bat:假设,我的完整构建是这样完成的:

  make clean all 

我可以使用cpptesttrace运行构建如下:cpptesttrace make clean all这将监视整个构建并从运行中创建BDF文件。

例2:

如果您的构建是使用脚本的多级过程或沿途更改文件夹,那么告诉cpptesttrace BDF的绝对位置可能会更好。 扩展上面的例子,我们可以运行:

 cpptesttrace --cpptesttraceOutputFile=`pwd`/cpptest.bdf make clean all 

这将确保BDF路径是绝对的,无论在哪个源树级cpptesttrace被调用。