本主题可帮助您解决 C/C++test 使用过程中可能遇到的问题。
C/C++test 直接分析 C/C++ 源文件,间接分析头文件。根据当前选择,C/C++test 将分析所有 C/C++ 源文件,并报告所选项中所有源文件和头文件的违规(仅针对源文件包含的头文件)。
例如:
选择 Parasoft> 首选项,选择控制台,然后选择所需的详细级别(高、正常、低)。
高 | 正常 | 低 | |
---|---|---|---|
关于当前步骤的名称和状态(完成、失败、最新)的基本信息 | 有 | 有 | 有 |
错误 | 有 | 有 | 有 |
警告 | 有 | 无 | 无 |
命令行 | 有 | 有 | 无 |
静态分析和单元测试执行期间打印的违规 | 有,完整格式 | 有,短格式 | 无 |
您可以通过指定 -Xmx
设置的值,使用 CPPTEST_ENGINE_EXTRA_ARGS 选项自定义分配内存的大小。这可能对于执行静态分析或向 DTP 报告结果而言尤其有用。详细信息请参阅配置高级选项。
如果 C/C++test 在生成报告时内存耗尽,请参阅C/C++test 在生成报告时内存耗尽该怎么办?。
要通过代理服务器进行连接,您需要在位于以下位置的 parasoft.properties 文件中配置协议专用系统属性:
Visual Studio 2015-2019
<
INSTALL-DIR>/plugins/com.parasoft.ptest.common.vstudio/parasoft.properties
Visual Studio 2022
<INSTALL-DIR>/ptest/plugins/com.parasoft.ptest.common.vstudio/parasoft.properties
例如,如果您使用的是 HTTPS 协议,应确保配置了 HTTPS 的系统属性。至少,您必须配置 https.proxySet=true
、https.proxyHost=[hostname]
和 https.proxyPort=[port number]
。如果代理服务器要求身份验证,则可以使用 https.proxyUser
和 https.proxyPassword
属性。
您的命令行可能类似于:
https.proxySet=true https.proxyHost=proxy.parasoft.com.pl https.proxyPort=3128 https.proxyUser=username https.proxyPass=password |
此外,您还可以配置 https.nonProxyHosts
属性来指定不需要通过代理连接的主机。
请参阅准备技术支持压缩包。
网络环境的变化可能会影响用于计算机器码的接口,从而导致机器码不稳定。您可以使用 PARASOFT_SUPPORT_NET_INTERFACES 环境变量指定一个稳定的接口,防止机器码漂移。
将变量值设置为稳定的以太网网络接口。请勿使用虚拟接口、临时接口或环回接口。
- Windows:将值设为网卡的 MAC 地址。您可以使用 ipconfig-all
命令获取地址。 例如:
SET PARASOFT_SUPPORT_NET_INTERFACES=00-10-D9-27-AC-85 |
- Linux:例如,将值设为“inet”或“inet6”系列中的一个网络接口。您可以使用 ifconfig
命令获取可用接口的列表。例如:
export PARASOFT_SUPPORT_NET_INTERFACES=eth1 |
如果问题仍然存在,可以通过设置环境变量 PARASOFT_DEBUG_NET_INTERFACES 并将值设置为 true 来获取诊断信息。这将在标准输出中打印可与技术支持共享的检查步骤,以及用于计算您的机器码的界面。界面将标有 [SELECTED] 前缀。
如果您的机器码是 WIN32-0,请删除 <DRIVE>:\Users\<USER_NAME>\.parasoft\C++test\10.x\license 中的 license 文件。
与消息在不同版本之间发生更改的规则相关联的抑制可能在 DTP 上不可用,必须重新抑制相应规则。
您可以通过配置以下高级选项(请参阅配置高级选项)来恢复 10.4.1 版本中 BD 分类规则的旧消息:
CPPTEST_ENGINE_EXTRA_ARGS="-property flowanalysis.legacy.messages.for.<rule_ID>=true"
例如:
CPPTEST_ENGINE_EXTRA_ARGS="-property flowanalysis.legacy.messages.for.BD.PB.ARRAY=true -property flowanalysis.legacy.messages.for.BD.PB.ZERO=true" |
要成功恢复旧消息,应确保从以下位置删除包含本地 C/C++test 缓存数据的 .cpptest 文件夹: <workspace_location>/.cpptest/.dtpengine/.cpptes
t.
安装或更新扩展或其他 Visual Studio 组件可能会损坏 Visual Studio 的 Component Model Cache,从而阻止 C++test 启动。若要清理 Component Model Cache,可尝试运行 cpptestcli
与 -clearcmc
选项。
要确保分析完成,您可以执行以下操作之一:
cpptest.analyzer.source.timeout=<TIMEOUT_IN_SECONDS>
。
收集静态覆盖率数据时未找到文件的设置问题表明文件的本地路径与其构建时路径不一致。
您可以使用 CPPTEST_COVERAGE_SRC_ROOT
环境变量将原始路径映射到本地路径:
CPPTEST_COVERAGE_SRC_ROOT=original/path1=local/path1;original/path2=local/path2;...
可以在原始路径中使用允许的通配符“*”。例如:
CPPTEST_COVERAGE_SRC_ROOT=/*/path=/local/path
还可以在列表文件(*.lst)中指定路径映射列表,并将其位置设置为值。例如:
CPPTEST_COVERAGE_SRC_ROOT=/path/mapping.lst
*.lst 文件中的每一项都被视为一个单独的条目。
在某些情况下,链接过程可能会耗尽可映射页面。具体表现为,尽管机器有足够的空闲 RAM,仍然无法分配内存。要解决此问题,应增加每个进程的最大映射页面数。默认为 65530。将这个值增加十倍应能解决该问题。为此,可使用以下命令:
sysctl -w vm.max_map_count=655300 |
如果问题仍然存在,则可能需要进一步增加该值。
生成报告时,请指定包含以下条目的报告配置文件:
results.report.active_rules=true
Parasoft 产品生成的报告要求您的环境中使用无衬线字体。如果报告无法正确显示某些字符(如国家或地区的特殊字符),应确保系统上安装了无衬线字体。
C/C++test 使用单独的 JVM 在代码测试后生成报告。您可以通过配置 parasoft.report.separate_vm.xmx
系统属性增加分配给生成 C/C++test 报告的内存,例如:
parasoft.report.separate_vm.xmx=1280m |
此外,还可以通过设置 parasoft.report.separate_vm.java_home
系统属性,将生成报告的 JVM 配置为使用内存最大容量更大的 Java,例如:
parasoft.report.separate_vm.java_home=C:/Program Files/Java/jdk-12.0.1 |
在 Visual Studio 2017 中启用项目缓存时,C/C++test 无法生成测试用例。要确保可以生成测试用例,应禁用项目缓存:
要确保所有 Parasoft 选项能够在 Solution Explorer 上下文菜单中正常使用,以下 Visual Studio Workload 必须与 Visual Studio 2017 或更高版本一起安装:
在 Visual Studio 2017 和 2019 中,性能管理会监控并管理可能影响启动时间的扩展。因此,安装 Parasoft 插件时可能会出现弹出 Visual Studio 启动时间增加的警告。您可以点击弹出窗口中的 'Manage performance' 链接,查看启动时间并关闭该警告提醒。
当 IntelliSense(Visual Studio 的原生代码补全功能)无法识别 C/C++test 的特定语法时,Visual Studio 可能会以红色下划线标记测试套件中正确的代码元素来指示潜在的错误。 要避免该情况,您可以执行以下操作之一:
使用以下指令将代码包裹在测试套件中:
#ifndef __INTELLISENSE__ //this code block will not be analyzed by IntelliSense #endif |
如果遇到 RuleWizard UI 显示问题,请检查您的 Linux 发行版是否使用 Wayland 显示服务器。如果您使用 Wayland 显示服务器,我们建议将其更改为 X11。
您可以通过以下方式验证 Linux 发行版使用的显示服务器:
您可以通过以下方式将显示服务器更改为 X11:
/etc/gdm3/custom.conf
(需要重新启动)