【VScode】C/C++多文件夹内的多文件引用编译
1、问题
使用 VScode 编写一个简单项目,没有特别复杂配置的情况下,我需要查看代码执行后的 语句覆盖率
,用到 gcov
工具,效果如下图。(该函数语句覆盖率 100% ,18x 代表执行了18次)
2、前提(最简环境)
(1)安装VScode
配置好了GCC 【版本大于9】
(教程自己搜索哦,一大把~)
(2)安装插件
C/C++、 Code Runner(忘记用没用到了,反正属于默认安装的插件!)、 Gcov Viewer
插件
建议安装 Error Lens,提示报错原因~超级棒的插件工具
3、核心(关键配置)
(1)新建工作环境
默认的文件夹(例如你在Code_04文件夹下,新建了一个main.c文件)
(2)生成 tasks.json 文件
点击 运行 C/C++ 文件
,紧接着点击 C/C++:gcc.exe
的编译工具,然后在项目 文件夹 .vscode 多一个 tasks.json 文件
。
(3)关键一步
打开 tasks.json
文件,替换文件中的 "${file}"
为下面的参数配置,并保存
// 生成 Gcov 报告 手动设置快捷键显示Ctrl+1 清楚Ctrl+2
"-fprofile-arcs",
"-ftest-coverage",
"-fPIC",
"-O0",
"${fileDirname}\\*.c",
![]() |
![]() |
参数解释如下
"-fprofile-arcs", // 启用代码覆盖率分析,记录代码中执行的分支,用于后续生成覆盖率数据。这是用于生成覆盖率报告的重要步骤。
"-ftest-coverage", // 启用测试覆盖率支持,生成 .gcda 文件和 .gcno 文件,它们包含覆盖率信息。这些文件用于后续的代码覆盖率报告生成。
"-fPIC", // 生成与位置无关的代码(Position Independent Code),通常用于动态链接库。即使在加载到不同的内存地址,生成的代码仍然可以正常运行。
"-O0", // 禁用所有优化,以便更准确地分析覆盖率数据。优化可能会改变代码的执行路径,从而影响覆盖率分析的准确性。
"${fileDirname}\\*.c", // 替换{file}为{fileDirname}\\*.cpp ,为了可以编译一个文件夹下的全部c文件
4、成功享用~
(1)显示语句覆盖率
再次编译运行,就会发现在工作文件夹下,生成了 main.gcda
,main.gcno
两个关于代码覆盖率信息的文件
然后按下 Ctrl+Shift+P
打开命令面板,输入 gcov
点击 Gcov Viewer:Show
即可成功显示覆盖率啦!
(2)快捷键配置建议~
覆盖率显示之后只能手动删除,即按下 Ctrl+Shift+P
打开命令面板,输入 gcov
点击 `Gcov Viewer:Reset,恢复原始页面。
并且 Gcov Viewer插件
只能显示一个exe文件编译运行过程的代码覆盖率,你想显示其他文件,就需要手动删除!
显然,原本的打开命令行窗口,输入…balabala这样的反复操作很麻烦的,快捷键解决!!!方法如下:
按下 Ctrl+Shift+P
打开命令面板,输入 gcov
,在出现的页面下,点击右边的 配置
,分别设置自己快捷键就好啦!