【速来围观】IAR环境下代码覆盖率功能的使用

0?wx_fmt=gif

在设计测试程序,验证是否所有的代码都被执行到时,就要考虑到代码覆盖率,IAR环境下的代码覆盖率是一个在这方面很有用的功能,且使用方便,今天我们就来讲讲这一功能如何使用

代码覆盖率

当设计测试程序验证是不是多有的代码可以被执行,代码覆盖率是非常有用的功能,并且可以帮你识别不可到达的代码。在IAR环境下,代码覆盖率窗口可以记录报告当前代码的覆盖分析,该分析可以显示出自代码覆盖率功能打开到应用程序停止的地方,每一个模块,代码,函数执行的百分比,另外还会列出所有未被执行的代码表达式。需要注意的一点是在仿真的时候,单步执行时不会记录收集代码覆盖信息。在IAR环境仿真模式下,通过view菜单可以打开代码覆盖率窗口,如下图所示

0?wx_fmt=jpeg

如何使用代码覆盖率功能

在工程中如果要使用代码覆盖率功能,必须配置一些选项,以飞思卡尔SDK1.2版的定时器demo工程为例,如果是默认安装路径,可以参考如下路径代开工程

C:\Freescale\KSDK_1.2.0\examples\twrkv46f150m\driver_examples\pit\iar

例程已经默认配置了可以使用代码覆盖率功能,如果是自己的工程要使用代码覆盖率,必须保证如下的配置正确

0?wx_fmt=jpeg

必须保证C/C++配置选项中的Generate debug information 选项勾选上。

0?wx_fmt=jpeg

必须保证连接器配置选项中的Include debug information in output 选项勾选上0?wx_fmt=jpeg

必须保证调试器配置选项中的code coverage插件勾选上

0?wx_fmt=jpeg

配置正确后,正确编译完程序后,仿真,并打开代码覆盖率窗口,点击0?wx_fmt=jpeg

激活按钮,或者在代码覆盖率窗口空白处单击右键激活如下图所示

0?wx_fmt=jpeg

运行程序,当程序停止,或者由于断点触发停止,单击刷新按钮,可以观察代码覆盖率信息,例如下图所示:

0?wx_fmt=jpeg

代码覆盖率窗口左侧的红色钻石图标表示,函数或者模块已经被执行了0%,而绿色钻石图标表示,模块或者函数已经被执行的100%,红绿相间的钻石图标表示模块或函数部分已被执行,黄色的钻石图标表示还没有被执行的代码表达式,每一行末尾的百分数表示到程序运行目前运行的地方,已经覆盖到的语句数量。计算方法为已经执行的代码语句数除以总的代码语句数。在代码覆盖率窗口空白处单击右键选择另存为,代码覆盖率的分析结果还可以保存为txt的文本格式文件,如下图所示。

0?wx_fmt=jpeg

0?wx_fmt=jpeg

可以方便的保存代码覆盖率信息,留作他用,或者调试用,由此可见代码覆盖率确实非常有用。

嵌入式

程序猿

微信号:InterruptISR

嵌入式程序猿致力于打造程序猿工程师交流分享的精品移动平台,欢迎各位猿友加入和分享。微信搜索嵌入式程序猿添加关注,或者长按下方二维码,选择识别图中二维码添加关注。

0?wx_fmt=jpeg

IAR Embedded Workbench环境中,代码覆盖率分析是一种用于评估测试完整性的关键工具。通过代码覆盖率分析,可以识别代码中被执行的部分以及未被执行的部分,从而确保测试用例的全面性。IAR提供了内置的代码覆盖率功能,能够以模块、函数为单位展示代码执行的百分比,并列出未被执行的代码表达式[^1]。 ### 代码覆盖率分析方法 #### 1. 使用IAR内置的代码覆盖率窗口 IAR Embedded Workbench支持在仿真模式下进行代码覆盖率分析。具体操作步骤如下: - 在仿真模式下,通过菜单栏的 **View > Code Coverage** 打开代码覆盖率窗口。 - 代码覆盖率窗口会记录并显示从覆盖率功能开启到程序停止期间的执行情况。 - 该窗口支持按模块、函数和代码行的粒度显示执行百分比,并高亮显示未被执行的代码部分[^1]。 #### 2. 配置工程以启用代码覆盖率 为了启用代码覆盖率功能,需要对工程进行适当的配置: - 在 **Project > Options > Debugger** 中,选择合适的调试器配置。 - 确保在 **Code Coverage** 选项卡中启用相关设置,以便在调试过程中收集覆盖率数据。 - 选择 **Reset Code Coverage Data** 以清除之前的覆盖率数据,确保分析结果的准确性。 #### 3. 运行测试程序并收集数据 在测试程序运行过程中,IAR会自动收集代码覆盖率数据。需要注意的是,单步执行模式不会记录覆盖率信息,因此应使用连续运行模式以确保数据的完整性[^1]。 #### 4. 分析覆盖率报告 覆盖率窗口会生成详细的报告,显示每个函数的执行次数、覆盖率百分比以及未执行的代码路径。通过这些信息,可以识别出测试未覆盖的代码区域,并优化测试用例以提高覆盖率。 ### 代码覆盖率工具 除了IAR内置的代码覆盖率功能,还可以结合外部工具进行更深入的分析: - **iUnit** 和 **Visual Unit** 是两款支持IAR环境的单元测试工具,它们提供全表格化操作,无需手动编写测试代码。这些工具具备用例管理、数据分析和报告生成等功能,适用于复杂的代码覆盖率分析需求[^3]。 ### 示例代码:简单函数的覆盖率分析 ```c #include <stdio.h> int add(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } int main() { int result1 = add(5, 3); // int result2 = subtract(5, 3); // 该函数未被调用 return 0; } ``` 在上述示例中,`subtract` 函数未被调用,因此在代码覆盖率报告中会被标记为未执行代码。通过分析该报告,可以识别出未覆盖的函数并优化测试用例。 ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值