我有类似以下的代码
int do_thing( int arg1, int arg2, int arg3 ) { // NOLINT : don't care that arg2 and arg3 aren't used
return arg1;
}
NOLINT注释通常会抑制整洁的警告。但是,如何在不更改代码的情况下重新启用该行的clang-tidy?
答案 0 :(得分:2)
AFAIK没有简单的方法可以按照您想要的方式进行操作。每当clang-tidy找到NOLINT注释时,它都会跳过该行,没有命令行选项可以防止此行为。
由于NOLINT放在注释中,因此您不能使用预处理器,因为注释在宏扩展之前已被剥离。
您所能做的就是找到// NOLINT
并替换为// DISABLE_NOLINT
等其他(最好是唯一的)文本,运行clang-tidy检查,然后将其替换回去。
如果您真正不想触摸该代码,则可以从源代码构建自己的clang-tidy,您可以在ClangTidyDiagnosticConsumer.cpp中将static bool LineIsMarkedWithNOLINT()
修改为始终返回false。或者,如果值得的话,甚至可以使用新的命令行选项来切换行为。
答案 1 :(得分:0)
您根本不需要使用// NOLINT
。只需删除参数名称或使其成为注释即可。这将使编译器和Clang Tidy保持沉默。
int do_thing( int arg1, int /*arg2*/, int /*arg3*/ ) {
return arg1;
}
另一种替代方法是使用C ++ 17中引入的[[maybe_unused]]
属性:
int do_thing( int arg1, [[maybe_unused]] int arg2, [[maybe_unused]] int arg3 ) {
return arg1;
}