gpt4 book ai didi

CMAKE 有条件地运行 cppcheck

转载 作者:行者123 更新时间:2023-12-05 03:59:39 31 4
gpt4 key购买 nike

我有一个定义 cppcheck 的 CMakefile,如 Cppcheck support in CMake效果很好,但我希望能够一遍又一遍地编译我的代码,并且在我认为我接近完成之前不运行 cppcheck,然后在提交之前运行 cppcheck。

cppcheck 太慢了,无法作为我的编辑/编译/测试/调试周期的一部分。

这方面的最佳做法是什么?我在想像定义一个变量并生成文件,然后构建、构建和构建这样的东西。例如

在 CMakeLists.txt 中

if(CPPCHECK STREQUAL "yes")
set(CMAKE_CXX_CPPCHECK "cppcheck")
endif()

写代码的时候

cmake3 -G "Unix Makefiles" ..
cmake3 --build .
cmake3 --build .

然后在提交代码之前

cmake3 -G "Unix Makefiles" -DCPPCHECK=yes ..
cmake3 --build .

有没有更好的办法?

最佳答案

我做的很像所描述的问题——只有在设置了特定变量时才运行代码分析。我通常在我的顶级 CMakeLists.txt 中遵循这样的模式:

option(ENABLE_CODE_ANALYSIS "Run code analysis" OFF)
message(STATUS "ENABLE_CODE_ANALYSIS ${ENABLE_CODE_ANALYSIS}")

if(ENABLE_CODE_ANALYSIS)
find_program(cppcheck cppcheck)
message(STATUS "cppcheck ${cppcheck}")
if(NOT (cppcheck MATCHES "NOTFOUND"))
# Notes:
# - unmatchedSuppression needed since not all source files are
# analyzed simultaneously
# - unusedFunction needed since not all source files are
# analyzed simultaneously
# - template needed to force "warning" into output string, and
# to make the 'id' available for suppression
set(CMAKE_CXX_CPPCHECK "${cppcheck}"
"--enable=all"
"--inconclusive"
"--inline-suppr"
"--quiet"
"--suppress=unmatchedSuppression"
"--suppress=unusedFunction"
"--template='{file}:{line}: warning: {id} ({severity}): {message}'")
endif()
endif(ENABLE_CODE_ANALYSIS)

通常我会为 clang-tidy 做同样的事情,并让 ENABLE_CODE_ANALYSIS 启用 cppcheckclang-tidy.

我默认不进行代码分析,因为代码分析往往很慢。但它可以通过在生成构建系统时执行 cmake -G "my generator"-DENABLE_CODE_ANALYSIS=ON .. 来启用。

关于CMAKE 有条件地运行 cppcheck,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56957172/

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