Loading
0

自动化测试工具Parasoft如何在Cygwin环境下生成完整的bdf文件

Parasoft C/C++test是一款用于自动化执行C/C++代码测试的集成解决方案,它支持静态分析、单元测试以及运行时错误检测等多种最佳实践,帮助开发团队提升软件质量与开发效率。在实际使用中,尤其是在构建过程的跟踪与分析环节,工程师们有时会借助cpptesttrace这类工具来捕获构建信息并生成对应的BDF(Build Data File)文件,以供后续的测试与扫描。然而,在特定的Cygwin环境下,用户可能会遇到生成的BDF文件内容不完整,进而导致无法顺利导入项目并完成测试的情况。

>>点击获取Parasoft C/C++test试用

Cygwin是一个在Windows平台上运行的Linux模拟环境,它通过提供一个动态链接库作为Linux API的模拟层,以及一系列包含Linux风格命令行工具(例如Bash shell、GCC编译器等)的软件集合,使得用户可以在Windows系统中获得类似UNIX的开发体验。正因如此,许多开发人员会选择在Cygwin下进行C/C++项目的编译。但是,Cygwin为了在Windows上模拟UNIX环境,其命令行参数处理机制与原生Windows命令行存在差异。当cpptesttrace命令在这种混合环境中运行时,可能无法准确地拦截和解析所有通过Cygwin传递的构建参数(例如源文件的完整路径、编译器选项等)。


cpptesttrace的工作原理是拦截并解析构建命令(如g++)及其参数。在纯Windows命令行(如CMD)中,参数以明确的字符串数组形式传递。然而,Cygwin的默认行为是模拟POSIX风格,它接收到一个命令行字符串后,会先由其自身进行解析和转换(例如,将Windows路径转换为Cygwin内部的POSIX路径),然后再传递给目标程序。这个额外的解析层干扰了cpptesttrace的拦截机制,使其无法正确捕获到原始的、完整的参数列表,特别是关键的源文件路径和编译选项,最终导致生成的BDF文件缺失核心信息。

当我们使用cpptesttrace命令来跟踪构建过程时,往往会发生生成的bdf不完整,在bdf只有如下的一些信息:

------- cpptestscan v.9.5.0.49 (cpptesttrace) -------
working_dir=C:\Users\daguilar\Desktop\C++Test\Exaples\Examples\ATM
project_name=ATM
arg=C:\cygwin\bin\g++.exe
------- cpptestscan v.9.5.0.49 (cpptesttrace) -------
working_dir=C:\Users\daguilar\Desktop\C++Test\Exaples\Examples\ATM
project_name=ATM
arg=C:\cygwin\bin\g++.exe

当我们尝试使用这个BDF文件将项目导入到C++test时,根本无法完成测试,会提示我们没有文件可以被扫描。

解决方案:

这种现象常常发生在Cygwin环境下,解决方法就是在执行cpptesttrace命令之前先在Cygwin终端输入一下命令:

$ export CYGWIN="$CYGWIN wincmdln"

通过设置CYGWIN环境变量来调整其命令行处理模式,有效解决了Cygwin与cpptesttrace协作时BDF文件生成不完整的问题,确保了Parasoft C/C++test测试流程的顺畅执行。这体现了Parasoft C/C++test在应对复杂环境时所提供的灵活配置能力。除了构建跟踪,该工具还能通过静态代码分析帮助团队遵循MISRA、AUTOSAR等安全编码规范,通过自动化单元测试和运行时错误检测来提前发现潜在缺陷,最终全方位地助力开发团队构建高效、可靠且易于维护的软件产品。

关于慧都

慧都科技(EVGET)成⽴于2003年,是⼀家⾏业数字化解决⽅案公司,⻓期专注于软件、油⽓与制造⾏业。公司基于深⼊的业务理解与管理洞察,以系统化的业务建模驱动技术落地,帮助企业实现智能化运营与⻓期竞争优势。

慧都科技作为Parasoft公司在中国区的官方授权合作伙伴,为国内企业提供Parasoft C/C++test产品的正版授权、定制化部署与全生命周期技术支持与服务。我们致力于助力客户精准贯彻功能安全标准、全面提升软件开发效率、有效管控项目风险,最终构建符合国际标准的高质量软件体系。