Gcovr文件夹级摘要
gcovr folder level summaries
我有一个这样的项目:
/path/to/source/A/ChildA1/A1.cpp
/path/to/source/A/ChildA2/A2.cpp
/path/to/source/B/ChildB1/B1.cpp
/path/to/source/B/ChildB2/B2.cpp
最高级别的覆盖率报告向我展示了直接包含代码的每个文件夹的摘要:
/path/to/source/A/ChildA1/
/path/to/source/A/ChildA2/
/path/to/source/B/ChildB1/
/path/to/source/B/ChildB2/
是否有任何方法我也可以在不直接包含代码的级别上获得报告?也就是说,只适用于:
/path/to/source/A/
/path/to/source/B/
几个月来我一直在使用gcovr。我只是为源级创建报告。但是,是的,它也可以为你的目的。
一种方法是从整个报告中提取特定文件夹的(grep或findstr)数据。
例如,我们从gcovr得到的报告是这样的:
------------------------------------------------------------------------------
GCC Code Coverage Report
Directory: ...../src/
------------------------------------------------------------------------------
File Lines Exec Cover Missing
------------------------------------------------------------------------------
src/A/A1/xyz.cpp 1609 2 0% 97,99,101....
src/A/A2/abcg.cpp 271 4 1% .......
src/B/B1/mnop.cpp 74 2 2% 34,42,56-.....
src/B/B2/wrds.cpp 1533 6 0% 76,83,85-.....
src/C/C1/abcdefg.cpp 1079 8 0% 143,150,152.....
因此,您可以通过指定目录结构(如"src/A")来简单地grep语句,并从所有被grep-ed的行中取第二个字段和第三个字段和来获得该目录的覆盖率。
这看起来很忙,但它只需要一个简单的3-4行脚本就可以完成。
脚本类似于:
python gcovr -d -r src/directory/ > ABCcoverage.txt
while read -r DIRPATH ; do
grep "$DIRPATH" ABCcoverage.txt > temp.txt
#ln is lines in file and ex is no. of executed lines
lnsum=0 ; exsum=0
while read -r LINE ; do
ln=$(echo $LINE | awk '{print $2}')
ex=$(echo $LINE | awk '{print $3}')
lnsum=$(expr $lnsum + $ln)
exsum=$(expr $exsum + $ex)
done < "temp.txt"
echo $DIRPATH, lines:$lnsum, executed:$exsum, covered %:$(expr ( $exsum / $lnsum ) * 100 ) >> IntendedResult.txt
done < "DIRLIST.txt"
还有很多更方便的运算方法。所以随便编辑吧,朋友们。: D
另一种方法是生成xml报告而不是这个控制台报告。它使用cobertura xml格式,因此有包标记(每个目录结构都有包)。但是相信我,编写代码来计数每一行并检查每个包是否有任何命中是非常令人厌烦的。
相关文章:
- 如何将更多文件夹添加到c++include路径
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在文档文件夹中创建目录
- "assimp/config.h"找不到,但它在文件夹中
- C++入门 5 版:类消息和文件夹
- 我可以在 Arduino 的库文件夹之外安装库吗?
- 如何按文件扩展名引用文件夹中的文件
- 在QTreeView中仅显示共享驱动器和文件夹
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- 介子复制/安装头文件到输出目录并保持文件夹结构
- vcruntime.h 从 Windows 包含文件夹中丢失?
- 在文件夹迭代上实现 RAII
- 使用 Powershell 命令将 cpp 文件的文件夹编译为 GNU 的 g++
- 使文件夹中的所有文件可供所有项目(子目录)访问
- 无法使用 CMake 从其他文件夹添加源文件
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- 如何从Windows控制台调用.exe(C++)以在不同的目录(或任何目录)中创建文件夹?
- Gcovr文件夹级摘要