当你打开一个结果波尔盖斯®代码Prover™分析,你看到了一个列表结果清单窗格。该列表包括运行时检查,编码规则违规,代码度量和全局变量使用。
您可以首先缩小您的评论的重点:
在结果列表列上使用过滤器。例如,您可以专注于红色检查。
按文件和功能组织结果。使用列表上方的图标。
因为代码谚语运行时检查的结果取决于先前检查的结果,所以它有助于从函数的开始到结束时通过运行时间检查。
也可以看看过滤器和组结果。缩小列表后,您可以开始查看个人结果。本主题介绍如何查看结果。
要开始查看,请在列表中选择结果。
第一步是了解问题是什么。阅读上的消息结果细节窗格和相关的代码线来源窗格。
此时,您可能已准备好决定是否解决问题。
消息由几个部分组成:
检查颜色和图标:查看代码抄本结果和源代码颜色。在检查运行时错误的情况下:
:红色表示一个明确的错误。
:橙色表示可能的错误。
:格雷表示无法访问的代码。
:绿色表示特定错误不会发生。
运行时间检查的描述。
在前面的示例中,检查确定数组索引是否超出阵列界限。
与运行时检查相关的值。
在该示例中,消息指出数组大小(127),阵列界限(0..126),以及数组索引变量可以在代码中的该点处采用的值范围(0..555)。
相关的不精确来源(橙色检查)。
在该示例中,消息指出两个易失性变量可能负责检查。
在这一点来源带有工具提示的窗格,变量和操作将下划线。
在此示例中,工具提示显示在:
s8_ret.
:您在此之前看到其数据类型和值范围+
手术。
如果在+操作期间发生数据类型转换,则还会在工具提示中看到此转换。
+
:您看到左右操作数的值以及结果。
=
:您可以看到在分配期间发生的任何数据类型转换和结果。
有时,您需要额外的帮助来实现某些结果。要为所选结果打开帮助页面,请单击“图标。请参见说明结果的代码示例。
有时,根本原因可能远离显示结果的实际位置。例如,您读取的变量可能是未初始化的,因为初始化无法访问。读取变量时显示缺陷,但根本原因可能是之前的如果
或者尽管
总是假的条件。
有时,这是结果细节窗格显示导致结果的一系列事件序列。但是,在大多数情况下,您必须通过代码找到自己的导航路线。使用“变量”工具提示,按照浏览代码时遵循变量范围的传播。
int func(int var){/ * var * / ... var - = get()的初始范围;/ *新系列var * / ...集合(&var);/ *新系列var * /}
在用户界面中使用这些快速导航路径:
搜索对变量并浏览它们的所有引用。
右键单击变量名称来源窗格并选择搜索所有参考。或者,双击变量。这些选项仅执行超过字符串匹配。该选项仅显示特定变量的实例,而不是其他范围内具有相同名称的其他变量。
从函数调用导航到其定义。
右键单击函数名称来源窗格。选择转到定义。
从函数导航到呼叫者和分支机构。
点击icon上的图标结果细节窗格。您可以看到包含结果的函数,其中包含呼叫者和分支机构。单击呼叫者或Callee名称以导航到呼叫站点。双击名称以导航到定义。
或者,点击图标以查看导致结果的呼叫序列的图形表示。要在此序列中导航到函数,请单击图表中的节点。
从函数调用或循环关键字导航到函数或循环主体中的错误。
如果仅在特定函数调用或特定循环迭代中发生错误,则突出显示函数调用或循环迭代。右键单击红色函数调用或循环关键字。选择去原因如果选择可用。
浏览全局变量的所有实例。
点击icon上的图标结果细节窗格。请参阅结果中的所有全局变量以及它们上的读/写操作。
在开始通过代码中的路径导航之前,请确定您正在寻找的内容并选择相应的导航工具。例如:
调查A.非初始化变量检查,您可能希望确保完全没有初始化变量。寻找可变的前一个实例,并查看它是否已初始化。
调查违反的Misra C:2012规则17.7:
应使用具有非void返回类型的函数返回的值。
有关要查找的其他例子,请参阅代码箴言运行时间检查。导航远离当前结果后,使用icon上的图标结果细节窗格返回该结果。
如果单击包含结果的源代码令牌,则之前的结果选择结果清单和细节有关结果细节窗格不会改变。您可以在源代码中导航时保留结果列表和结果详细信息。有时,您可能希望看到与令牌关联的结果。更新结果选择和详细信息,Ctrl.
- 单击令牌或右键单击并选择在此位置选择结果。
如果查看结果需要在源代码中更深入导航,则可以创建一个重复的源代码窗口,该窗口将在导航在原始源代码窗口中导航。
右键单击来源窗格并选择创建重复的代码窗口。右键单击显示重复文件名的选项卡(结束- 奉献1
)选择新的垂直组。
在原始文件窗口中显示缺陷仍然显示“重复文件”窗口中的导航步骤。调查完成后,关闭重复窗口。