clang-format 标头包含防护

ily*_*725 6 clang-format

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

#ifndef DOPELIB_DOPESTUFF_WHATITISYO_H
#define DOPELIB_DOPESTUFF_WHATITISYO_H

/** Code here. **/

#endif  // DOPELIB_DOPESTUFF_WHATITISYO_H
Run Code Online (Sandbox Code Playgroud)

可以clnag-format检查这个结构并确保包含保护存在并且它的命名与中的文件名适当#ifndef(类似于 cpplint 的作用)?

Eri*_*kus 7

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

clang-tidy但是,您可以使用(此处记录)来完成此操作。像这样调用它:

clang-tidy -checks='-*,llvm-header-guard' -fix-errors myIncludeFile.h
Run Code Online (Sandbox Code Playgroud)

解释:

  • 告诉-*禁用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,它执行类似的操作。