使用以下信息帮助验证分析:
问题 #1:在执行C/C++作业时过早停止分析
在分析过程中,可能会发生停止分析过程的错误。在下表中,您将找到与此相关的错误消息列表以及解决问题所需遵循的步骤:
消息 | 描述 | 消息级别 | 影响 | 解决办法 |
---|---|---|---|---|
已根据用户请求取消分析。 | 用户已取消分析。 | 错误 | 分析结束。 | 重启分析。 |
发生运行时异常,分析被取消:<Reasons> | 分析失败。 | 错误 | 分析没有任何结果就结束了。 | 联系eSupport。 |
请复制文件'PATH'并将其发送到CAST,以帮助分析问题。 | 此消息与上面的分析崩溃关联。请发送支持到错误消息中提到的预处理文件。 | 错误 | 分析没有任何结果就结束了。 | 联系eSupport并将预处理的文件发送给它们。 |
发生未知异常,分析取消。 | 分析失败。 | 错误 | 分析没有任何结果就结束了。 | 联系 eSupport。 |
致命错误:<Reason> | 分析失败。 | 错误 | 分析没有任何结果就结束了。 | 联系 eSupport。 |
分析取消。 | 分析已取消。 | 错误 | 分析没有任何结果就结束了。 | 重启分析。如果再次面对此问题,请联系eSupport。 |
计算CRC时发现对象NAME的位置(开始、结束)无效:<list of positions> | 内部错误。 | 错误 | 分析结果将损坏。 | 联系eSupport并将预处理的文件发送给它们。 |
分析器错误 <Details> | 解析错误。 | 错误 | 分析结果可能会损坏。 | 联系eSupport并将预处理的文件发送给它们。 |
问题 #2: 缺失源代码
情况很明显:要么您没有完整的源代码,要么您为其配置了分析单元的操作系统与正在使用的系统头不匹配。 请在下面找到有关这些问题的错误消息:
消息 | 描述 | 消息级别 | 影响 | 解决办法 |
---|---|---|---|---|
环境概要'PROFILE'中声明的无效包含路径<path> | 包含文件的路径不正确。请改正。 | 错误 | 分析结果可能会损坏。 | 更改配置的定义或选择另一个配置。 |
配置<Message>(在解析阶段) | 宏或包含文件未正确定义。可能缺少包含文件。 | 错误 | 分析结果可能会损坏。 | 更改配置或定义缺失的宏。 |
问题 #3:配置问题
有时,整个源代码是可用的,但与配置相关的问题可能会出现。幸运的是,错误消息(参见下表)突出显示了这些问题,使您能更正它们并改善结果的质量。
消息 | 描述 | 消息级别 | 影响 | 解决办法 |
---|---|---|---|---|
无法打开文件 <name of the file> | 无法打开文件 | 错误 | 分析结果将损坏。 | 检查文件是否可用(网络、权限等)或调用eSupport。 |
WiFi打开文件 'PATH' 并计算CRC. Reason: <reason> | 无法打开文件 | 错误 | 分析结果将损坏。 | 检查文件是否可用(网络、权限等)或调用eSupport。 |
预处理器找不到文件 <name of the file> | 缺失一份包含文件。 | 警告 | 分析结果可能损坏。 | 添加文件或更正包含路径。 |
选择以下文件进行分析,同时这些文件也包含在其他已分析文件中。如果使用不同的预处理上下文(例如不同的宏定义)对它们进行分析,这可能会导致分析中出现一些不一致。 也许您要考虑从选择中删除该/这些文件:POSLIST | 选择以下文件进行分析,同时这些文件也包含在其他已分析文件中。 | 警告 | 分析结果可能损坏。 | 更正分析配置。 |
问题 #4: 关于对象名有歧义
在分析时,可能会出现与对象名称有关的问题。这可能意味着:
- 要么可移植代码的宏中有问题(即用于多个操作系统的代码):某些函数被定义多次(每个操作系统一次)且宏会组织分析器只考虑其中一个函数。要看到这一点,应使用测试分析操作 — 查看定义函数的位置并看看应该在哪个预处理器条件下编译它们。
- 或者(不太可能)有一些代码依赖于编译器的某些特定属性(这确实是不好的做法)。
下面是与这些问题有关的主要信息,包括影响和解决步骤:
消息 | 描述 | 消息级别 | 影响 | 解决办法 |
---|---|---|---|---|
遇到空变量名(那是C++文件吗?) | 有关空变量名的错误,最可能是由于早期的分析错误造成的。 | 警告 | 分析结果将损坏。 | 更正分析配置。 |
找到 'NAME'的几个定义。将追踪到每个定义的链接:<list of positions> | 分辨误差。 | 警告 | 可能创建多余链接。 | 联系eSupport。 |
找到符号<symbol mangling>的几个定义:<list of positions> | 在不同的源代码中找到同一对象的多个定义。 | 警告 | 分析将包含多余链接。 | 将分析单元分成几个部分。 |
找到<name of object>的几个定义。将创建两个对象:<list of positions> | 在同一源代码中找到同一对象的多个定义。 | 警告 | 分析将包含多余链接。 | 将分析单元分成几个部分。 |
未解析标识符<name of identifier> | 分辨误差。某些源代码可能缺失。 | 警告 | 一些丢失的链接。 | 更正分析配置或联系eSupport。 |
在未声明的情况下调用函数<name of the function>() | 此消息只涉及C语言。包含文件缺失或不推荐使用C函数的文件。 | 警告 | 没有影响。 | 检查分析配置。 |
找不到方法/函数<name of the method>的父类或命名空间。对象将只保存在其父文件下。 | 源代码不完整。大部分带有类定义的时间标头都丢失了。 | 警告 | 分析结果可能损坏。 | 更正分析配置(包含路径)。 |
未知标识符 <name of the identifier>现在被认为是一种类型。 | 分析器已更正缺少的宏定义或包含文件。请完成宏定义列表以删除警告。 | 警告 | 没有影响。 | 更正分析配置。 |
问题 #5: 内存问题
如果在分析过程中遇到内存问题,CAST建议在运行分析时使用Windows执行工具,以检查进程是否使用了超过1.9 GB的内存。
如果是这种情况,就文件大小或文件编号而言,这意味着分析单元太大 — 您需要将分析单元拆分为多个较小的分析单元。
请注意,如果分析单元是同一父应用程序的部分,则CAST Management Studio会自动管理分析单元之间的依赖项。如有需要,请检查所有新分析单元配置中的所有包含文件是否都可用。
问题#6:其他问题
如果您仍然遇到问题,但这些问题都与上述主题无关,请检查以下消息:
消息 | 描述 | 消息级别 | 影响 | 解决办法 |
---|---|---|---|---|
无法访问diags(拷贝字符串、字符数组……)中隐含的系统函数列表。某些diags可能不一致。 | 分析器无法访问系统功能列表。 | 错误 | 分析结果将损坏。 | 联系eSupport。 |
已为包含路径'PATH'设置“递归“标志。该标志通常是无用的,设置它通常是错误。 | 为包含文件定义的顺序不正确。 | 警告 | 分析结果将损坏。 | 删除“递归”标志。 |
文件<name of the file> 没有可执行代码。 | 这些文件只包含函数定义、宏或注释。 | 警告 | 分析结果可能损坏。 | 检查分析配置。 |