使用NOLINT抑制叮当声.如何抑制抑制?



我有如下代码

int do_thing( int arg1, int arg2, int arg3 ) { // NOLINT : don't care that arg2 and arg3 aren't used
return arg1;
}

NOLINT 注释通常会抑制叮叮当当的警告。 但是,如何在不更改代码的情况下为该行"重新启用"叮当声?

AFAIK 没有简单的方法可以按照您想要的方式执行此操作。每当 clang-tidy 找到 NOLINT 注释时,它只是跳过该行,没有命令行选项可以防止此行为。

由于 NOLINT 放置在注释中,因此不能使用预处理器,因为在宏扩展之前会剥离注释。

您可以做的是找到并用其他一些(最好是唯一的)文本替换// NOLINT,例如// DISABLE_NOLINT,运行您的叮当声整洁检查,然后将其替换回来。

如果你真的不想碰那个代码,你可以从源代码构建你自己的clang-tidy,你在ClangTidyDiDiagnosticConsumer中修改static bool LineIsMarkedWithNOLINT().cpp总是返回false。或者,如果值得您付出努力,甚至可以创建一个新的命令行选项来切换行为。

你根本不需要使用// 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;
}

最新更新