You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CLion中排除库文件,仅分析自有代码的覆盖率?

解决CLion代码覆盖率排除GTest等库文件的方法

方法1:通过CMake配置过滤规则

在你的CMakeLists.txt中,为测试目标添加覆盖率相关配置,明确排除GTest的目录:

if (BUILD_TESTING)
    include(FetchContent)
    FetchContent_Declare(
            googletest
            GIT_REPOSITORY https://github.com/google/googletest.git
            GIT_TAG release-1.12.1
    )
    FetchContent_MakeAvailable(googletest)

    add_executable(${PROJECT_NAME}_test
            test/matrix_test.cpp
            src/matrix.cpp)
    target_compile_features(${PROJECT_NAME}_test PUBLIC cxx_std_17)
    target_link_libraries(${PROJECT_NAME}_test GTest::gtest_main)
    target_include_directories(${PROJECT_NAME}_test PRIVATE include)

    # 配置覆盖率过滤(针对GCC/Clang编译器)
    if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
        target_compile_options(${PROJECT_NAME}_test PRIVATE --coverage)
        target_link_options(${PROJECT_NAME}_test PRIVATE --coverage)
        
        # 获取GTest的路径并设置排除规则
        get_target_property(GTEST_INCLUDE_DIR GTest::gtest INTERFACE_INCLUDE_DIRECTORIES)
        set(COVERAGE_EXCLUDES "${GTEST_INCLUDE_DIR}/*" "${CMAKE_BINARY_DIR}/googletest-src/*")
    endif()

    include(GoogleTest)
    gtest_discover_tests(${PROJECT_NAME}_test)
endif ()

方法2:直接在CLion中设置过滤规则

  1. 打开CLion的Settings/Preferences(Windows/Linux按Ctrl+Alt+S,Mac按Cmd+,)
  2. 进入Build, Execution, Deployment > Coverage
  3. 在Exclude files区域点击+,添加需要排除的路径:
    • 直接添加你观察到的GTest路径:cmake-build-debug-coverage/googletest-src/googletest/*
    • 也可以添加系统级的GTest头文件路径(如/usr/include/gtest/*)
  4. 保存设置后重新运行覆盖率测试即可

方法3:用lcov手动处理覆盖率数据

如果需要更精细的控制,可以用lcov工具手动过滤:

  1. 运行测试生成原始覆盖率文件(.gcda/.gcno)
  2. 生成原始覆盖率信息文件:
    lcov --capture --directory . --output-file coverage_raw.info
    
  3. 过滤掉GTest等库文件:
    lcov --remove coverage_raw.info '/usr/*' '*/googletest-src/*' --output-file coverage_filtered.info
    
  4. 在CLion中导入coverage_filtered.info文件查看过滤后的覆盖率结果

内容的提问来源于stack exchange,提问作者fdermishin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:05:15