准备工作 #
了解项目的构建命令以及编译器。
生成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
: 指定本次测试的测试配置,可以是文件、测试配置名或者连接等。
示例:-config "MISRA C 2012.properties"
、-config "builtin://MISRA C 2012"
、-config "dtp://MISRA C 2012"
. -
-data
: 指定工作空间。工作空间需要是已有的工作空间或者空文件夹,如果文件夹不存在,C/C++test会创建一个。
示例:-data "/home/root/parasoft/workspace"
. -
-resource
: 指定测试范围。这个测试范围可以是项目、文件,也可以是单个项目的多个文件或是多个项目。示例:-resource "MyProject"
、-resource "/MyProject/src"
、-resource "/MyProject/src/MyClass.cpp"
、-resource testedprojects.properties
.- 测试范围的
.properties
文件:com.parasoft.eclipse.checker.core.resources
指定测试范围,用:
隔开。
示例:com.parasoft.eclipse.checker.core.resources=MyProject1:MyProject2:MyProject3
- 测试范围的
-
-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。需要提前配置好DTP相关设置。配置DTP相关见 localsettings选项 。 -
-report
: 指定报告生成的路径。
示例:-report /home/root/parasoft/workspace/report
. -
-localsettings
: 指定一个.properties
文件,这个文件主要是设置首选项的内容,详细可以了解 localsettings选项 。 -
-showdetails
: 打印详细的进度信息。 -
-appconsole
: 命令行输出控制台内容。
示例:-appconsole stdout
(控制台重定向到标准输出)、-appconsole console.out
(控制台重定向到console.out
文件) -
-list-configs
&-list-compilers
: 分别是打印可使用的测试配置以及可供选择的编译器。由于这些一般可能会跟工作空间绑定,所以需要加上-data
参数一起使用,指定工作空间。 -
-encodepass
: 对密码加密。有的时候我们需要配置DTP,会涉及到用户名密码,而这些一般都是存放在.properties
中通过-localsettings
选项指定。如果我们不希望自己的登录密码暴露在文件中,可以通过这个方式生成加密的密码。
示例:-encodepass admin
。 -
-machineid
: 打印机器码。config选项 #
这个参数后面可以接文件,文件可以由界面导出:
- 找到菜单栏的Parasoft,然后选择测试配置;
- 找到要导出的配置,右击,选择导出;
-
然后导出文件的路径和名字就好了。
localsettings选项 #
-
编译器相关设置:
# 指定编译器家族,如果不清楚,可以使用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
-
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
-
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]
-
另外也可以从本地导出设置,方法是:
- 找到菜单栏的Parasoft,然后选择首选项;
- 还是选择Parasoft,然后是右边的共享;
- 选择要导出的设置,比如报告、许可证等,然后输入要导出的路径文件,应用之后设置就能导出成文件了。
附上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