gpt4 book ai didi

多行的 Clang-Tidy `NOLINT`?

转载 作者:行者123 更新时间:2023-12-04 04:31:44 26 4
gpt4 key购买 nike

我正在处理一个 C++ 项目,该项目有一些自动生成的大段代码,我不想被 linted。是否有类似于 //NOLINT 注释的内容可以应用于多行?像下面这样:

// BEGINNOLINT
bad-code;
// ENDNOLINT

我在网上能找到的只有一个 suggestion that this should be implemented 。有什么办法可以避免在每一行的末尾写 // NOLINT 吗?

最佳答案

不幸的是,没有直接的方法可以做到这一点,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 行。然而,这很难维护,因为您每次在文件中添加/删除行时都需要更新过滤器。如果可能的话,将代码生成到单独的文件中可能是个好主意。

关于多行的 Clang-Tidy `NOLINT`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com