鲁棒性和上下文代码验证

第一部分:鲁棒性验证

这是第一部分一个由两部分组成系列概述代码验证方法。

我们从一个问题开始:在软件开发的什么阶段应该我验证我的代码吗?

答案很简单。你应该核实正确的编译之后,当代码是新鲜在你的脑海中。一旦你显示潜在的错误,检查和修复这些错误可以几乎微不足道。修复错误永远不会容易后阶段工作流程。

如果你按照这种方法,您最有可能验证的代码。单位可能会集成到现有的代码库在以后的开发过程中。Polyspace®下载188bet金宝搏产品让你接近你的验证在两个不同的方面:通过鲁棒性验证,验证你的单位在隔离,或通过上下文验证,验证你的单位中剩下的代码库。在以下两篇文章中,我们提供了一些指导方针,将帮助您确定哪种方法。

但首先,每种方法有什么区别?让我们开始与鲁棒性验证。

在鲁棒性验证,Polyspace产品验证您的单位(即具有很好的鲁棒性。下载188bet金宝搏针对某些错误的,它是安全的所有输入,未定义的函数,函数调用序列)。如果你按照这种方法,没有新的错误应该出现在代码集成和测试。如果你检查和修复所有错误标记Polyspace产品,你不需要再次审查单位(文件或函数)。下载188bet金宝搏

让我们举例说明这种行为与几个简单的例子。

鲁棒性对所有输入

num1和num2 dividebydifference输入的函数

例子显示num1和num2 dividebydifference输入功能。

在这个例子中,num1和num2输入功能dividebydifference。除了他们的数据类型,Polyspace不能确定什么num1num2从这个代码。因此,考虑所有可能的值的范围int变量:

  • 操作的结果num1——num2num /窝超过允许的价值吗int变量。因此,Polyspace警告潜在的溢出在两个操作。
  • num1可以等于num2。因此,Polyspace警告潜在的除零错误的部门。

然而,一旦Polyspace产品指出这样的弱点在下载188bet金宝搏您的代码,你可以使你的函数更健壮的采取适当的行动。例如,在上面的示例中,您可以将检查防止溢流和分裂的零。

鲁棒性对所有未定义的函数

假设你的单位代码调用函数外部的单位和/或你没有定义的函数。你怎么能保证自己一个新的代码中不会发生运行时错误一旦定义了函数?您可以使用鲁棒性的方法。

窝是1和3之间的赋值在声明

例子showng窝期间是1和3之间的赋值声明。

在上面的示例中,期间是1和3之间的赋值声明。然而,它的地址传递给checkDenominator可能的变化checkDenominator。自定义checkDenominator没有提供,Polyspace产品考虑的可能性吗下载188bet金宝搏可以改变,可以有价值的范围吗int变量。因此,它警告说,该部门可能会导致一个除零错误。

然而,一旦Polyspace产品指出这个错误,您下载188bet金宝搏可以保护部门,例如,通过checkDenominator值,而不是通过一个指针。现在部门操作是安全的,任何的定义checkDenominator可能是。

保护部门通过窝checkDenominator价值而不是通过一个指针

保护部门通过窝checkDenominator价值而不是通过一个指针。

鲁棒性验证也是吸引人的从用户的角度。设置验证使用这种方法需要较少的努力。提供源文件和目标设置之后,您可以运行验证。默认设置是为了验证所有输入代码,功能定义,等等。

因此,鲁棒性验证的路要走,不是吗?嗯…实际上,你必须权衡的时间设置时间回顾更高数量的错误。然而,使用鲁棒性方法可能导致太多的潜在错误检查。

为了发现所有的错误在鲁棒性验证,Polyspace产品广泛假设未知输入变量等。下载188bet金宝搏大多数操作涉及那些未知可能失败。因此,您可以有更多潜在的错误比你的时间允许的审查。

下一篇文章演示了另一种验证方法(称为上下文代码验证),解决了这个问题。