clang-format header 包括守卫
clang-format header include guard
我想让 clang-format
检查我的每个 headers 是否都有正确的包含防护。
例如,对于文件 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-tidy
(documented here) 完全做到这一点。像这样调用它:
clang-tidy -checks='-*,llvm-header-guard' -fix-errors myIncludeFile.h
解释:
-*
告诉 clang-tidy
禁用所有检查
llvm-header-guard
告诉 clang-tidy
启用处理 include guards (documented here) 的检查
-fix-errors
告诉 clang-tidy
修复任何由此产生的问题,即使它在解析文件时遇到其他错误
include-guards 的 llvm-header-guard
预期格式正是您上面所要求的;例如文件 mydir/myfile.h 将使用 MYDIR_MYFILE_H。我没有看到任何实际指定这是它使用的格式的文档,但我已经验证至少版本 6.0.0 确实使用该格式。
另请参阅:clang include fixer,其功能类似。
如果
,接受的解决方案可能不起作用
- 该项目具有不同的文件结构
- 使用了一些 clang 不理解的扩展
我这里有一个脚本:https://github.com/milasudril/texpainter/blob/master/devtools/include_guard_fix.py
我想让 clang-format
检查我的每个 headers 是否都有正确的包含防护。
例如,对于文件 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-tidy
(documented here) 完全做到这一点。像这样调用它:
clang-tidy -checks='-*,llvm-header-guard' -fix-errors myIncludeFile.h
解释:
-*
告诉clang-tidy
禁用所有检查llvm-header-guard
告诉clang-tidy
启用处理 include guards (documented here) 的检查
-fix-errors
告诉clang-tidy
修复任何由此产生的问题,即使它在解析文件时遇到其他错误
include-guards 的 llvm-header-guard
预期格式正是您上面所要求的;例如文件 mydir/myfile.h 将使用 MYDIR_MYFILE_H。我没有看到任何实际指定这是它使用的格式的文档,但我已经验证至少版本 6.0.0 确实使用该格式。
另请参阅:clang include fixer,其功能类似。
如果
,接受的解决方案可能不起作用- 该项目具有不同的文件结构
- 使用了一些 clang 不理解的扩展
我这里有一个脚本:https://github.com/milasudril/texpainter/blob/master/devtools/include_guard_fix.py