Main Content

解释 Polyspace Access Web 界面中的 Bug Finder 结果

本主题展示了如何在 Polyspace Access Web 界面中审查 Bug Finder 结果。若要了解 Polyspace 桌面端产品的用户界面中的类似工作流,请参阅解释 Polyspace 桌面端用户界面中的 Bug Finder 结果 (Polyspace Bug Finder)。要了解如何在 IDE 中审查 Polyspace as You Code 的结果,请参阅在 IDE 中审查 Polyspace as You Code 结果 (Polyspace Bug Finder)

在 Polyspace Access 的审查视图中打开 Bug Finder 分析的结果时,您会在结果列表窗格中看到一个列表。结果包括缺陷、编码违规或代码度量。

您可以首先缩小审查的重点:

  • 使用工具条中的过滤器来缩小列表范围。例如,您可以重点关注影响程度高的缺陷。

  • 点击结果列表中的某个列标题来根据该列的内容对列表进行排序。例如,您可以按或按文件进行排序。

缩小列表范围并对列表进行排序后,您可以开始审查各个结果。本主题介绍了如何审查结果。

要开始审查,请在列表中选择一个结果。

解释结果详细信息中的消息

解释消息

第一步是了解问题所在。阅读结果详细信息窗格中的消息和源代码窗格中的相关代码行。

查找其他资源以寻求帮助

有时,您需要更多帮助才能得到一定的结果。您可点击 图标以打开所选结果的帮助页面。查看对结果进行说明的代码示例。检查 CERT-C 等外部标准,这些标准为解决问题提供了更多的依据。点击 图标(如果可用)可查看该缺陷的修复建议。

此时,您应能决定是否修复该问题。如已确定问题的修复方案,一起审查该类型的所有结果会更有帮助。

查明导致结果的根本原因

有时,根本原因可能与显示结果的实际位置相去甚远。例如,您读取的某个变量可能未初始化,因为初始化代码不可达。当您读取该变量时会显示该缺陷,但根本原因可能是前面的 ifwhile 条件始终为 false。

导航到相关事件

通常情况下,结果详细信息窗格会显示导致该结果的事件序列。源代码窗格还会突出显示这些事件。

在上面的事件回溯中,显示了以下序列:

  1. 声明变量 value

  2. 执行路径绕过一条 if 语句。如果该变量在 if 块内初始化,则此信息可能与问题有关联。

  3. 当前缺陷的位置:未初始化的变量

通常情况下,回溯会显示控制流中的重要点:进入或绕过条件语句或循环、进入函数等。对于特定缺陷,回溯会显示与该缺陷相关的其他类型的事件。例如,对于声明不匹配缺陷,回溯会显示两个互相冲突的声明的位置。

创建您自己的导航路径

如果事件回溯不可用,请使用其他导航工具跟踪您自己的代码路径。

在开始导航至代码中的路径之前,请提出以下问题:我要查找什么?根据您的回答,选择合适的导航工具。例如:

  • 要调查未初始化的变量缺陷,您可能需要确定该变量根本没有初始化。要查找该变量的先前实例,请在源代码窗格中右键点击该变量并选择搜索所有引用。此选项仅列出特定变量的实例,而不列出其他作用域中同名的其他变量。

  • 要调查以下 MISRA C:2012 Rule 17.7 规则的违规情形:

    The value returned by a function having non-void return type shall be used.
    您可能需要从函数调用导航到函数定义。右键点击该函数并选择转至定义

离开当前结果后,可以使用结果详细信息窗格中的 图标返回。

要从源代码窗格中选择其他结果,请在按住 Ctrl 键的同时点击该结果,或右键点击并选择选择此位置处的相关结果结果详细信息窗格会更新,但您选择的结果不会在结果列表窗格中突出显示。点击结果列表中的结果会更新结果详细信息源代码窗格。

相关主题