我正在一个C ++项目中,该项目具有自动生成的大部分代码,并且我不希望被删除。是否有类似于//NOLINT
注释的内容可以应用于多行?如下所示:
// BEGINNOLINT
bad-code;
// ENDNOLINT
我在网上只能找到一个suggestion that this should be implemented。有什么方法可以避免在每一行的末尾写// NOLINT
?
答案 0 :(得分:1)
不幸的是,没有直接的方法可以执行此操作,clang-tidy仅支持//NOLINT
和//NOLINTNEXTLINE
。
我不知道您对代码生成有多少控制权...您可以在一行中生成它,这对您有很大帮助,因为c ++不在乎空白。
一种粗略而有效的解决方案是使用诸如sed之类的文本处理工具:
$ sed -i -re '/^\/\/BEGIN_NOLINT/,/^\/\/END_NOLINT/{s/$/\/\/NOLINT/}' *.cpp
这将在//NOLINT
和//BEGIN_NOLINT
注释之间的每一行的末尾添加//END_NOLINT
(可能会生成)。
您还可以使用参数运行clang-tidy
-line-filter='[{"name":"test.cpp","lines":[[1,10],[12,100]]}]'
在此示例中,将跳过第11行。但是,这很难维护,因为每次添加/删除文件中的行时都需要更新过滤器。如果可能的话,最好将代码生成到单独的文件中。
答案 1 :(得分:0)
我确定,当我在 MACRO 上应用 //NOLINTNEXTLINE
时,会跳过整个 MARCO。所以尝试在你的类或函数中实现 //NOLINTNEXTLINE