gpt4 book ai didi

python - SWIG 编译的 C++/Python 代码的测试覆盖率

转载 作者:太空狗 更新时间:2023-10-29 23:13:27 26 4
gpt4 key购买 nike

我有一个经典的 SWIG 设置,其中从 Python 调用了一堆 C++ 函数。现在,在添加一些测试(在 Python 中)之后,我想获得 C++ 源代码的测试覆盖率。经典的Python方法是

nosetests --with-coverage --cover-package=mypackage

但这只适用于 native Python 模块。事实上,这将返回 SWIG 生成的 mypackage.py 文件的覆盖率。

由于我需要覆盖 C++ 文件(/SWIG 生成的共享库),因此肯定需要将 --coverage 添加到编译和链接器标志。虽然不确定从那里去哪里。

有什么提示吗?

最佳答案

遇到了类似的问题,但使用的是 C 代码。它与 SWIG 部分无关,只需要使用覆盖检测编译 C++ 代码并执行它。为此,我使用了 gcovgcovr

使用 gcov,为了使它工作,使用以下标志编译代码(启用 gcov 检测)

CFLAGS_VAL += -O0 --coverage

然后,执行测试。测试运行后,应生成 .gcno 和 .gcda 文件。

要创建覆盖率报告,请从您的根文件夹运行

gcovr -r . --filter="" --html --html-details -o coverage/coverage.html

GCOV 文档,here

同样可以用 lcov 创建,按照这个 wiki 中的例子页

关于python - SWIG 编译的 C++/Python 代码的测试覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39086957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com