首页 > 解决方案 > 铿锵格式标头包括后卫

问题描述

我想clang-format检查我的每个标题是否都有正确的包含保护。例如,对于文件dopelib/dopestuff/whatitisyo.h,我希望代码的格式如下:

#ifndef DOPELIB_DOPESTUFF_WHATITISYO_H
#define DOPELIB_DOPESTUFF_WHATITISYO_H

/** Code here. **/

#endif  // DOPELIB_DOPESTUFF_WHATITISYO_H

可以clnag-format检查此结构并确保包含保护存在并且使用文件名正确命名#ifndef(cpplint 的作用)?

标签: clang-format

解决方案


据我所知,clang-format目前不支持这个。

clang-tidy但是,您可以使用(在此处记录)来做到这一点。像这样调用它:

clang-tidy -checks='-*,llvm-header-guard' -fix-errors myIncludeFile.h

解释:

  • -*告诉禁用所有clang-tidy检查
  • llvm-header-guard告诉clang-tidy启用处理包括警卫的检查(在此处记录
  • -fix-errors告诉修复任何由此产生的clang-tidy问题,即使它在解析文件时遇到其他错误

包含守卫的llvm-header-guard预期格式正是您上面要求的;例如文件 mydir/myfile.h 将使用 MYDIR_MYFILE_H。我没有看到任何实际指定这是它使用的格式的文档,但我已经验证至少版本 6.0.0 确实使用了该格式。

另请参阅:clang include fixer,它做类似的事情。


推荐阅读