彩票走势图

自动化测试工具Parasoft C/C++ test 自动化用户指南(二十一):与基于 Make 的构建系统集成

翻译|使用教程|编辑:李显亮|2021-07-20 10:05:47.760|阅读 158 次

概述:将 C/C++test 与基于 GNU Make 或类似构建工具的项目集成通常需要修改构建脚本。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Parasoft C/C++test针对C/C++开发的专业白盒自动化测试方案,能有效提高软件开发效率和代码质量。C++test 可以进行静态分析,全面代码审查,运行时错误检测,并在单元测试和组件测试中集成覆盖率分析。

Parasoft C/C++test申请免费试用


Parasoft C/C++test 与基于 GNU Make 或类似构建工具的项目集成通常需要修改构建脚本。在大多数情况下,编译和链接规则调用的命令行应该被改变。这可能需要您修改 make 变量,或者在某些情况下,需要修改编译和链接规则定义。

与 Make 编译规则集成

使用cpptestcc命令包装器为编译器命令行添加前缀以与 Make 编译规则集成。要确定最佳方法,首先要分析构建脚本并找到编译规则的定义。在某些情况下,特定文件有不同的规则,例如处理 C 或 C++ 文件的规则。以下示例显示了如何定义编译规则: 

$(PRODUCT_OBJ_ROOT)/%$(EXT_OBJ) : %$(EXT_CXX)
    $(CXX) $(CXXFLAGS) $(CXXSTATICFLAGS) -DAPPNAME=product

在这个例子中,编译器被一个 CXX make 变量引用。有两种选择:

  • 将前缀变量添加到编译规则中,或者
  • 覆盖编译器变量

以下部分描述了如何继续使用这两种方法。

将前缀变量添加到编译规则

通过在引用编译器的变量前添加一个附加变量来修改编译规则:

$(PRODUCT_OBJ_ROOT)/%$(EXT_OBJ) : %$(EXT_CXX)
   $(COV_TOOL) $(CXX) $(CXXFLAGS) $(CXXSTATICFLAGS) -
DAPPNAME=product

此外,COV_TOOL在 Make 调用时(示例 a)或在构建脚本(示例 b)中为添加的变量 ( )赋值

例子一

make COV_TOOL="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- "

示例 b

在此选项中,变量可能位于依赖于附加变量的条件内:

ifeq (COV_BUILD,$(BUILD_TYPE))
    COV_TOOL="cpptestcc -compiler gcc_3_4 -line-coverage
-workspace /home/test/proj/cov -- "
endif

覆盖编译器变量

在这种方法中,编译器变量用于指定覆盖工具命令行。这可以在 Make 调用时(示例 c)或在CXX指定变量的原始值之后的构建脚本(示例 d)中完成(以避免使用原始编译器覆盖覆盖工具命令)。

示例 c

如果你的构建脚本对不同类型的文件有不同的编译规则,你可能需要覆盖多个变量,例如CCand CXX

make CXX="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- g++"

例 d

在此选项中,变量可能位于依赖于附加变量的条件内:

ifeq (COV_BUILD,$(BUILD_TYPE))
    CXX="cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- g++"
endif

与 Make Linking Rule 集成

修改链接规则以包含代码检测所需的附加库。cpptestcc根据具体的项目需求工具库可以有不同的形式。它可以是共享/动态库、静态库或目标文件。在所有情况下,特定的链接器选项可能具有不同的形式,但无论情况如何,修改 Makefile 的方式都非常相似。

本节重点介绍在类 Make 环境中修改链接器命令行的一般方法。

要找到合适的修改位置,首先要分析构建脚本并找到链接规则的定义。以下示例显示了如何定义链接规则:

$(PROJ_EXECUTABLE): $(PRODUCT_OBJ)
  $(LXX)  $(PRODUCT_OBJ) $(OFLAG_EXE)$(PROJ_EXECUTABLE) $(LXXFLAGS) $(SYSLIB) $(EXECUTABLE_LIB_LXX_OPTS)

您可以添加一个特殊变量来表示cpptestcc工具库,或者将覆盖率库附加到链接规则中已使用的变量之一。 

添加一个变量来表示 Coverage 工具库

以下示例显示了修改后的规则可能是什么样子: 

$(PROJ_EXECUTABLE): $(PRODUCT_OBJ)
   $(LXX)  $(PRODUCT_OBJ) $(OFLAG_EXE)$(PROJ_EXECUTABLE) $(LXXFLAGS) $(SYSLIB) $(EXECUTABLE_LIB_LXX_OPTS) $(COV_LIB)

此外,为添加的变量赋值(COV_LIB)在 Make 调用时(示例 e)或在构建脚本中(示例 f):

例子e 

make COV_LIB="<COV_TOOL_INSTALLATION>/runtime/lib/cpptest.a "

示例 f

在此选项中,变量可能位于依赖于附加变量的条件内:

ifeq (COV_BUILD,$(BUILD_TYPE))
    COV_LIB="<COV_TOOL_INSTALLATION>/runtime/lib/cpptest.a"
endif

将覆盖库附加到链接规则中的现有变量

ifeq (COV_BUILD,$(BUILD_TYPE))
    LXXFLAGS+="<COV_TOOL_INSTALLATION>/bin/engine/lib/cpptest.a"
endif

Parasoft——领先的自动化测试工具,满足绝大多数行业标准

Parasoft是一家专门提供软件测试解决方案的公司,帮助企业打造无缺陷的软件。

从开发到质量检查,Parasoft的技术通过集成静态和运行时分析,单元、功能和API测试,以及服务虚拟化,在不牺牲质量和安全性的情况下加快软件交付,节约交付成本。

强大的报告和分析功能可帮助用户快速查明有风险的代码区域,并了解新代码更改如何影响其软件质量,而突破性的技术将人工智能和机器学习添加到软件测试中,使组织更容易采用和扩展跨开发和测试团队的有效的软件测试实践。

Parasoft针对C/C++、Java、.NET和嵌入式的开发测试都有着30多年的深入研究,很多全国500强企业使用Parasoft的产品实现了软件快速、高质量的交付。



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP