检测未实行的和Constant-Folded代码
在模拟你的测试文件,MATLAB®编码器™应用程序检测未实行的是常量折叠代码或代码。代码不是由试验台可能无法执行代码或死代码。应用程序时使用的代码覆盖率信息翻译代码从浮点MATLAB代码定点MATLAB代码。审查代码覆盖率结果帮助您验证您的测试文件充分行使算法。
应用在定点插入内联注释代码标记未实行的和翻译区域。它包括生成的代码覆盖率信息定点转换HTML报告。程序编辑器显示一个颜色栏左边的代码。此表描述了颜色编码。
覆盖栏颜色 | 表明 |
---|---|
绿色 | 下列情形之一:
不同深浅的绿色表示不同范围的行执行计数。最黑暗的阴影绿色表示最高的范围。 |
橙色 | 的入口点函数执行多次,但是代码执行一次。 |
红色的 | 代码不执行。 |
未实行的代码是什么?
未实行的代码执行的代码,不是在模拟试验台。未实行的代码可以从这些场景的结果:
防御性目的代码包含角落没有达到的情况下
人为错误的代码,导致不能达成的任何执行路径的代码,有时被称为不可到达的代码或死代码
试验台范围不足,不提供输入,执行代码中的所有路径
常数合并
检测未实行的代码
这个例子展示了如何在你的算法检测代码不执行的测试台上使用MATLAB编码器应用程序。
在当地可写文件夹,创建函数
myFunction.m
。函数y = myFunction (u, v)% # codegen为i = 1:长度(u)如果u (i) > v (i) y =酒吧(u, v);其他的tmp = u;v = tmp;y =巴兹(u, v);结束结束结束函数y =酒吧(u, v) y = u + v;结束函数y =巴兹(u, v) y = uv;结束
在同一个文件夹中,创建一个测试文件,
myFunction_tb
。u = 1:10 0;v = 101:200;myFunction (u, v);
从应用程序的画廊,打开MATLAB编码器应用程序。
集数字转换来
转换为定点
。在选择源文件页面,浏览到
myFunction
文件,然后单击开放。点击下一个。在定义输入类型页面中,选择您创建的测试文件浏览,
myFunction_tb
。点击Autodefine输入类型。点击下一个。在检查运行时问题页面,点击检查问题。
应用程序运行
myFunction_tb
测试文件和检测没有问题。点击下一个。在转换为定点页面,点击分析模拟的入口点函数,收集范围信息,提出数据类型。
颜色栏编辑窗口的左侧显示是否执行的代码。if语句的第一个条件中的代码不执行在模拟u不会超过v。的
酒吧
函数不会执行,因为if语句不执行。这些算法的部分标识为一个红色的酒吧,表明它们不是由试验台执行。应用提出的数据类型的功能,点击转换。
的MATLAB编码器应用程序生成一个定点的功能,
myFunction_fixpt
。生成的定点周围的代码包含注释的代码标识为未执行的试验台。的验证结果窗格中建议您使用一个更彻底的试验台。当MATLAB编码器应用程序检测未实行的代码,考虑编辑你的测试文件,这样你的算法对其全面锻炼。如果你的测试文件已经反映了全方位的输入变量,考虑编辑算法消除遥不可及的代码。
关闭MATLAB编码器应用程序。
修复未实行的代码
编辑测试文件
myFunction_tb.m
包括更广泛的输入。u = 1:10 0;v = 50:2:149;myFunction (u, v);
重新打开MATLAB编码器应用程序。
使用相同的功能和编辑测试文件,再通过转换过程。
你点击后分析,这一次代码覆盖率栏显示的所有部分算法执行新的测试文件输入范围。
完成转换过程和函数转换为定点,点击转换。