我怎么能应用多个间隔作为数据范围规范在Polyspace变量?

7视图(30天)
可以应用一个数据范围规范(DRS)变量Polyspace通过创建和修改约束设置xml文件。这包括数值类型和结构体。然而,只有可以定义一个间隔作为每个变量的DRS,相应的每个字段的结构。
我怎么能应用多个间隔作为数据范围规范在Polyspace变量?

接受的答案

MathWorks支万博1manbetx持团队
编辑:MathWorks支万博1manbetx持团队 2021年10月1日
应用范围约束的唯一方法是通过使用一个手动存根。手动创建存根通过提供一个定义一个函数,在这种情况下f(),在一个单独的文件只有Polyspace分析,哪里还用等功能的unchecked_assert ()“Polyspace提供的,一个可以操纵相应的输入函数的有效范围。
请记住,一个自动存根的存根Polyspace创建为一个函数,而手动存根是提供一个自己定义的函数的唯一目的操作数据的输入范围。
这个演示,请考虑一个函数f(),用于初始化结构体,而在Polyspace没有定义,因此创建一个自动Polyspace存根,即
无效f (mystruct * buf);
让我们假设struct mystruct”类型的定义在头文件中提供如下,
类型定义结构体{
int一个;
intb;
}mystruct;
下面提供了一个手动存根,可以用来输入变量的初始化字段“缓冲区”,指向结构的指针类型的“mystruct”,也就是说,
挥发性mystruct假;/ /将通过Polyspace提供全方位值初始化
无效f (mystruct * buf) {
int挥发性rnd = 0;/ /得到一个随机值
* buf =假;
}
本手册存根必须输入的字段结构体指针的作用“缓冲区”全系列。可以修改本手册存根来精确设置特定的标量值的字段结构如下:
无效f (mystruct * buf) {
buf - > = 10;
buf - > b = 20;
}
此外,如果是寻求一系列应用于输入缓冲区的结构体指针函数f(),然后Polyspace函数”unchecked_assert()”可以被使用,也就是说,
无效f (mystruct * buf) {
int挥发性rnd = 0;/ /得到一个随机值
aa =研发;/ /全程
unchecked_assert (aa aa > = 0 & & < = 10);
buf - > = aa;/ /将0 . . 10
buf - > b = 20;
}
像断言函数,unchecked_assert将断言中使用的变量条件,但没有颜色(断言函数是彩色根据维护的状况)。
最后,让我们假设是寻求范围约束的形式[a, b] U c{}为字段”buf - >“。然后,可以相应地使用以下手册存根,
无效f (mystruct * buf) {
int挥发性rnd = 0;/ /得到一个随机值
aa =研发;/ /全程
unchecked_assert ((aa aa > = 0 & & < = 10) | | aa = = 15);
buf - > = aa;/ /将0 . . 10U 15
buf - > b = 20;
}
这段代码可以被添加到Polyspace验证的新源文件,而不需要修改现有文件。
compilable,这个文件应该包含的定义结构mystruct或包含头文件定义这个结构。

更多的答案(0)