【问题标题】:Clang-Tidy llvm-header-guard directory configurationClang-Tidy llvm-header-guard 目录配置
【发布时间】:2018-03-10 03:54:14
【问题描述】:

在使用 clang-tidy 运行静态分析时,有没有办法在建议的 llvm-header-guard 字符串上删除建议的计算机特定路径?

例如,文件 (cls/math/matrix.hpp) 的建议标头保护是: _USERS_NAME_DESKTOP_PROJECT_SRC_CLS_MATH_MATRIX_HPP

但为了避免将其专门用于我的计算机,它应该只是: _PROJECT_SRC_CLS_MATH_MATRIX_HPP

有没有办法配置 clang-tidy,使其建议从 /project/ 目录而不是 /users/ 目录开始的标头保护?

我正在使用 clang 5.0.0,从 cmake 运行。

【问题讨论】:

  • 你解决过这个问题吗?如果是这样,请告诉我怎么做!
  • 很遗憾没有,抱歉!我的工作是解决创建文件模板脚本。

标签: c++ clang llvm llvm-clang include-guards


【解决方案1】:

我也遇到这个问题很久了,终于弄明白了,至少对于公共包含:clang-tidy 假定标题位于名为 include 的目录中。

因此,如果您的标题类似于/home/me/myproject/include/myproject/header.h,那么它将正常工作并推荐MYPROJECT_HEADER_H。如果它没有找到include 目录作为根目录,则返回到绝对路径。

所以库的解决方案是使用该结构(无论如何这可能是一个好主意)。不过,我仍然不确定项目源代码中的标头。

【讨论】:

  • “无论如何这可能是个好主意”,如果您有要保留在项目内部的标题,那肯定不是。通常最好将 MyApi.cppMyApi.h 放在一个 src 文件夹中,远离面向外部的接口。
  • 当然,我只是指公共包含,显然这不适用于并行标头和实现。我猜这是专门为 LLVM 实施的检查的症状,但它没有这样做。如果它更通用,或者至少有更好的文档记录,那就太好了。
  • 是的,我同意。这个测试几乎非常有用,但根本没有多大用处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 2019-03-13
  • 2019-04-01
  • 2020-11-27
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
相关资源
最近更新 更多