cmake - 如何在 CMake 中使用 cpplint 代码样式检查?

标签 cmake cpplint

我找到的唯一在线资源是 CMAKE_<LANG>_CPPLINT 上的 CMake 文档。 (链接 here )和这个例子(链接 here ),但我不知道如何在 CMakeLists.txt 文件中实际使用它。
我尝试了提供的示例,但无法使其工作。仅供引用,我按照说明安装了 cpplint here .

到目前为止,我可以使用以下 CMake 命令在 CMakeLists.txt 中运行 cpplint python 脚本:

execute_process(COMMAND cpplint path/To/File/To/Analyse.cpp)

但是,我很确定这不是执行此操作的正确方法。

最佳答案

Daniel Pffeifer 的“Effective Cmake”(https://www.youtube.com/watch?v=rLopVhns4Zs&amp=&t=77m13s)介绍了在 CMake 中使用静态分析工具的推荐方法。

您可以在调用 cmake 时定义它,例如:

cmake "-DCMAKE_CXX_CPPLINT=cpplint" ..

或放入CMakeLists.txt :
set(CMAKE_CXX_CPPLINT "cpplint")

推荐的选项是第一个(我们不应该在项目中定义什么不是项目要求)。

CMake 将调用 cpplint对于它编译的每个文件。您可以在分号后传递额外的参数(例如 -DCMAKE_CXX_CPPLINT=cpplint;--linelength=100 )。

这种方法的缺点:
  • 错误计数不会累积(因为 cpplint 分别为每个文件调用)。
  • 它不会检查头文件(与 D. Pffeifer 在他的演示文稿中所说的相反,包含文件不会被 cpplint 扫描)。


  • 请注意,您可以以相同的方式使用其他静态分析工具:
  • 部落整洁 "-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-3.9;-checks=*"
  • CppCheck "-DCMAKE_CXX_CPPCHECK=/usr/bin/cppcheck;--std=c++11"
  • IWYU "-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=/usr/bin/iwyu;--transitive_includes_only"
  • LWYU cmake -DCMAKE_LINK_WHAT_YOU_USE=TRUE
  • 疯子

  • 其中一些将需要“编译数据库”( set(CMAKE_EXPORT_COMPILE_COMMANDS ON) )。

    关于cmake - 如何在 CMake 中使用 cpplint 代码样式检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51582604/

    相关文章:

    c++ - 禁用来自 cpplint 的特定警告

    c++ - cpplint.py 和 cmake : how to specify include files

    google-style-guide - 在整个项目上运行 CPPlint

    sdk - 带有 cmake 工具链文件的 Yocto SDK

    c++ - CMake 项目中的 qmake 子项目

    c++ - CMake 未找到 librdkafka

    c++ - CMake add_custom_command 没有输出

    python - 如何将 IANA/Olson 时区转换为 POSIX.1?

    c - 如何强制cppstyle使用c和h文件?