Loading
0

Parasoft C/C++test 命令行运行测试:静态分析的构建、执行与报告

在自动化开发流程中,集成静态代码分析对保障代码质量至关重要。Parasoft C/C++test 的命令行工具为持续集成提供了强大支持。下面将说明如何使用 cpptesttrace 和 cpptestcli 这两个核心工具,完成从项目构建到静态分析的全流程。

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

生成BDF——cpptesttrace

相关参数

使用安装目录下bin目录下的cpptesttrace命令,主要介绍四个参数。

  • --cpptesttraceProjectName 指定的是C/C++test的项目名;
  • --cpptesttraceOutputFile 指定的是BDF的生成路径及BDF的名称,一定要是绝对路径,例如/home/root/project/project.bdf;
  • --cpptesttraceTraceCommand指定的是跟踪编译器的名称。一般来说不需要指定,但是如果编译器不在C/C++test已知列表中,如交叉编译器,就需要额外指定,示例:arm-linux-gcc;
  • --cpptesttraceHelp打印帮助输出。

使用方式

基本命令为cpptesttrace
[参数]
[构建命令],示例:

如果项目构建命令是./build.sh,那生成BDF的命令可以为

cpptesttrace \
--cpptesttraceProjectName=project \
--cpptesttraceOutputFile=/home/root/project/project.bdf \
--cpptesttraceTraceCommand=ntoaarch64-gcc \
./build.sh

项目运行——cpptestcli

项目的测试需要依靠cpptestcli,介绍一下几个重要的参数。

相关参数

  • -config: 指定本次测试的测试配置,可以是文件、测试配置名或者连接等。
  • -data: 指定工作空间。
  • -resource: 指定测试范围。测试范围的.properties文件: com.parasoft.eclipse.checker.core.resources指定测试范围,用:隔开。
  • -include&-exclude: 指定额外包含或者排除的文件。
  • -bdf: 对应导入操作,指定项目的bdf文件,C/C++test会导入对应的项目。
  • -gpj: 对应导入操作,适用于Green Hills项目。
  • -import: 对应导入操作,适用于eclipse项目(实测不适用于基于eclipse的环境如tasking、CCS,读不到特定于这些项目的属性配置等)、已存在的C/C++test项目以及特殊情况(比如CMake项目,通过修改CMakeLists.txt文件配置的方式)。
  • -publish: 加上这个选项,C/C++test会在测试完成后将结果上传到DTP。
  • -report: 指定报告生成的路径。
  • -localsettings: 指定一个.properties文件,这个文件主要是设置首选项的内容。
  • -showdetails: 打印详细的进度信息。
  • -appconsole: 命令行输出控制台内容。
  • -list-configs&-list-compilers: 分别是打印可使用的测试配置以及可供选择的编译器。
  • -encodepass: 对密码加密。
  • -machineid: 打印机器码。

config选项

这个参数后面可以接文件,文件可以由界面导出:

1、找到菜单栏的Parasoft,然后选择测试配置;


2、找到要导出的配置,右击,选择导出;

3、然后导出文件的路径和名字就好了。

localsettings选项

4、编译器相关设置:

# 指定编译器家族,如果不清楚,可以使用cpptestcli [其他参数] -list-compilers
# 打印出可选择的编译器家族名称
# 交叉编译器一般需要
bdf.import.compiler.family=gcc_5_custom0
# 设置具体的C编译、C++编译器和链接器
bdf.import.c.compiler.exec=/home/admins/prebuilt_QNX700/host/linux/x86_64/usr/bin/ntoaarch64-gcc
bdf.import.cpp.compiler.exec=/home/admins/prebuilt_QNX700/host/linux/x86_64/usr/bin/ntoaarch64-gcc
bdf.import.linker.exec=/home/admins/prebuilt_QNX700/host/linux/x86_64/usr/bin/ntoaarch64-gcc

5、DTP相关设置:

# 指定服务器的ip地址
dtp.server=127.0.0.1
# 指定端口号
dtp.port=8443
# 指定用户名密码
dtp.user=admin
dtp.password=admin
# 如果需要上传报告到DTP,需要指定上传到DTP的具体的项目,这个项目名必须是存在的
dtp.project=Default Project
# 设置为true相当于`cpptestcli -publish`
dtp.share.enabled=true

6、license相关设置:

# 浮动license
cpptest.license.use_network=true
# license版本,具体看不同的license
cpptest.license.network.edition=automation_compliance_edition
# 锁定license
cpptest.license.use_network=false
cpptest.license.local.password=[具体license]

7、另外也可以从本地导出设置,方法是:

(1)找到菜单栏的Parasoft,然后选择首选项;

(2)还是选择Parasoft,然后是右边的共享;

(3)选择要导出的设置,比如报告、许可证等,然后输入要导出的路径文件,应用之后设置就能导出成文件了。

附上cpptestcli.properties供参考。

项目导入

通过前面对选项的描述,可以了解项目导入主要是使用-bdf、-gpj或-import参数指定。一般需要指定工作空间以及通过-localsettings选项指定项目编译器。

示例:

cpptestcli -data $proj_workspace -bdf ${proj_loc}/${proj_name}.bdf \
    -localsettings $proj_workspace/localsettings.properties

执行静态分析

执行静态分析主要是跟-config参数相关。如果有执行项目导入,这一步可以省去-bdf、-gpj或-import参数,指定-data和-localsettings,一般也会加上-report指定报告生成路径,如果不指定,会生成在当前目录下。如果有DTP,也可能会加上-publish参数,将报告同时上传到DTP中。

示例:

cpptestcli -data $proj_workspace -config "builtin://MISRA C 2012" \
    -report ${proj_workspace}/report \
    -localsettings $proj_workspace/localsettings.properties \
    -publish

通过组合运用cpptesttrace生成BDFcpptestcli执行分析,能快速构建起高效的自动化静态代码分析流程。而且Parasoft C/C++test还能进行深入的单元测试、运行时错误检测,并集成代码覆盖率分析。通过将这些能力统一融入开发周期,C/C++test能够从根本上提升软件质量,降低后期修复成本,并确保产品符合最严苛的安全与可靠性标准。

关于慧都

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

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