【问题标题】:How to see code coverage in Clion如何在 Clion 中查看代码覆盖率
【发布时间】:2017-05-02 06:40:55
【问题描述】:

我需要能够检查我的 C++ 代码在关键位置被单元测试覆盖的程度。我使用 Clion 作为基于 Cmake 项目结构的 IDE(不确定是否支持其他内容)。有什么方法可以通过 Clion 获取代码覆盖率信息?

【问题讨论】:

  • the CLion issue tracker中搜索。如果请求尚不存在,请添加一个。或者为它创建一个插件?
  • 也许 gcov 会起作用。 Google 有一篇文章介绍了他们如何使用它来获得 gtest 的代码覆盖率。 testing.googleblog.com/2014/07/… 基本上你运行 gcov 它会告诉你哪些代码行执行了多少次。因此,您可以运行测试并检查其覆盖率,或者运行所有测试并查找未检查的代码。

标签: c++ unit-testing c++11 code-coverage clion


【解决方案1】:

目前 CLion 中没有这样的功能。功能请求exists。此外,我们不知道任何现有的 CLion 代码覆盖插件。

【讨论】:

    【解决方案2】:

    最新 vanilla 版本的 CLion(例如 2020.1.1)可以实现 - 无需插件。


    详情

    official doc

    例如,在 Linux (Fedora 31) 上:

    • 根据编译器,确保 CLion 选择正确的工具链:

      即使CMakeLists.txt 为构建设置了编译器,它也可能 不同意 IDE 选择的显示覆盖率的选项(有待改进)。

    • 显然,在 IDE 之外安装必要的工具并确保它们的版本匹配:

      sudo dnf install clang llvm # ...
      sudo dnf update
      

    gcc

    # CMakeLists.txt
    set(CMAKE_C_COMPILER cc)
    set(CMAKE_CXX_COMPILER c++)
    set(COMPILE_FLAGS "--coverage")
    set(CMAKE_EXE_LINKER_FLAGS "--coverage")
    

    文件/设置.../构建、执行、部署/工具链


    叮当

    # CMakeLists.txt
    set(CMAKE_C_COMPILER clang)
    set(CMAKE_CXX_COMPILER clang++)
    set(COMPILE_FLAGS "-fprofile-instr-generate -fcoverage-mapping")
    set(CMAKE_EXE_LINKER_FLAGS "-fprofile-instr-generate")
    

    文件/设置.../构建、执行、部署/工具链

    【讨论】:

      猜你喜欢
      • 2014-08-28
      • 1970-01-01
      • 2012-03-03
      • 2017-06-10
      • 2014-05-18
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多