修改clang-format的IndentWidth为4后,如何屏蔽cpplint关于类内public等关键字缩进的警告?
解决cpplint类访问控制符缩进警告的方法
刚好碰到过类似自定义格式和cpplint规则冲突的情况,给你几个可行的解决思路:
1. 命令行直接过滤警告
运行cpplint时,通过--filter参数关闭对应的缩进检查规则就行:
cpplint --filter=-whitespace/indent your_code.cpp
这里需要注意,这个参数会关闭所有缩进相关的警告,如果你的项目里其他缩进规则还想保留,那这个方式可能有点一刀切,但如果整个项目都用4空格缩进,这是最省事的方案。
2. 代码内局部屏蔽警告
如果只想在特定的类里跳过这个检查,不想影响全局的缩进校验,可以在public:这一行上方加个NOLINT注释:
class SearchDoneService : public DoneService { // NOLINTNEXTLINE(whitespace/indent) public: explicit SearchDoneService(const string &); };
这样cpplint会忽略这一行的缩进警告,其他代码的缩进检查依然生效。
3. 配置文件全局设定
在项目根目录创建一个.cpplintrc文件,写入以下内容:
filter=-whitespace/indent
之后每次运行cpplint都会自动读取这个配置,全局关闭缩进相关的警告,适合整个项目统一用4空格缩进的场景。
说下问题根源:你自定义了clang-format的IndentWidth:4,但cpplint严格遵循Google默认的2空格规则,要求访问控制符(public/protected/private)相对于类的左大括号缩进1个空格,和你的配置冲突,所以通过上面的方式屏蔽对应的检查就能解决问题啦。
内容的提问来源于stack exchange,提问作者mariolu
相关产品推荐
相关产品推荐

