代码验证结果和源代码颜色
属性的结果中使用的各种颜色Polyspace®代码验证™分析。
结果颜色
的图标和颜色显示不同的验证结果结果列表而且结果细节窗格。
运行时检查
多空间代码证明检查代码中的每个操作是否存在特定的运行时错误。软件根据它是否证明在所有或部分执行路径上存在或不存在运行时错误来为操作分配颜色。
检查颜色 | 目的 | 例子 | 图标 |
---|---|---|---|
红色的 |
突出显示已证明会在所有执行路径上导致特定错误的操作 多空间代码证明验证依据语言标准确定错误。尽管某些错误对于特定的编译环境是可以接受的,但是它们违反了语言标准。要允许一些依赖于环境的行为,请使用适当的分析选项。有关更多信息,请参见验证假设而且检查行为. |
红色的溢出: Z = x+y;
操作 |
|
灰色的 | 突出显示不可访问的代码。 |
灰色的遥不可及的代码检查: If (x>0) {} else{}
的 |
|
橙色 | 突出显示在某些执行路径上可能导致错误的操作。 有关更多信息,请参见多空间代码验证中的橙色检查. |
橙色溢出: Z = x+y;
分析无法证明是否操作 最常见的原因是操作仅对某些值溢出 |
|
绿色 | 突出显示已证明不会在所有执行路径上导致特定错误的操作 |
绿色溢出: Z = x+y;
操作 |
*
对于大多数检查,软件在路径上出现第一个运行时错误后终止执行路径。因此,如果它证明了某个操作有明确的错误(红色)或没有错误(绿色),那么该证明仅对代码中尚未终止的执行路径有效。看到红色和橙色检查后的代码验证分析.
其他结果
除了检查运行时错误之外,多空间代码证明还显示关于代码的其他结果。
结果 | 目的 | 图标 |
---|---|---|
编码规则的违反 | 表示违反预定义或自定义编码规则。 | 对于预定义的规则和用于自定义规则。 |
代码度量 | 指示代码复杂度度量。 | 对于不超过您指定的和限制的度量对于超出限制的度量。 |
全局变量 | 表示全局变量声明。 | 对于共享的可能不受保护的变量和对于非共享的未使用变量 |
源代码颜色
上显示代码时,Polyspace使用以下配色方案源窗格。
带有支票的行:
每一次检查结果列表窗格中,Polyspace将检查颜色分配给相应的代码段。
对于包含宏的行,如果宏是折叠的,那么Polyspace将使用该行中最严格的检查颜色对整行进行着色。严重程度按顺序递减:红色、灰色、橙色、绿色。
这遥不可及的
为
循环包含宏MAX_SIZE
.整条线是灰色的。如果在包含宏的行中没有选中,当宏折叠时Polyspace将用黑色下划线强调该行。
对于所有其他行,Polyspace只对与检查相关联的关键字或标识符进行着色。
这个作业有三个检查:
我
而且used_global
初始化数组选项卡
可以在其边界之外访问。的[
操作符用橙色表示问题。
违反编码规则的行:
对于每一个编码规则的违反结果列表窗格,Polyspace分配给相应的关键字或标识符:
一个(倒三角)表示编码规则为预定义规则。可用的预定义规则为MISRA C®, MISRA®AC AGC, MISRA c++或JSF®c++。
这
如果
语句和||
操作违反MISRA规则。一个符号,表示编码规则是自定义规则。
此函数名违反了自定义命名约定。
带有工具提示的行:
控件上的关键字或标识符是否有工具提示源窗格中,Polyspace:
如果关键字或标识符与检查相关联,则对其使用实线下划线。
这一行有检查和工具提示
输入
,%
而且used_global
.如果关键字或标识符未与检查相关联,则对其使用虚线下划线。
这一行有工具提示
为
而且<
,但没有对他们进行检查。在函数调用或循环命令上使用红色虚线下划线表示函数体或循环体包含潜在的运行时错误。工具提示显示了函数或循环体中导致错误的行。
这个调用
function_with_red
导致运行时错误。
函数定义:
定义函数时,Polyspace将函数名涂成蓝色。
由于条件编译而禁用的行:
Polyspace将由于条件编译而预处理出来的代码赋给浅灰色。例如,在
# ifdef
未定义分支宏的语句。这段代码不会影响验证(或实际的运行时行为)。
全局可变颜色
的变量访问窗格显示代码中的全局变量以及对变量的读写操作。
例如,used_global
是一个全局变量,访问四次:一次在初始化期间,一次在函数中function_with_red
,函数值为2function_with_grey
.
配色如下:
变量的颜色:
橙色:共享的、不受保护的全局变量(仅适用于多任务代码)
绿色:共享的、受保护的全局变量(只适用于多任务代码)
黑色:未共享,已使用的全局变量
灰色的:未共享、未使用的全局变量
看到全局变量.
操作的颜色:如果某个操作发生在不可达的代码中,则该操作显示为灰色,否则为黑色。
在前面的例子中,函数中的一个操作
function_with_grey
是不可触及的,但另一个是可以触及的。
有关更多信息,请参见Polyspace桌面用户界面中的可变访问.