我有几个项目要解析很多标头,但是有几个我不想用clang-tidy解析的标头
我的文件夹层次结构如下
A \
B\
C\
coco.h
D\
E\
我的项目位于C和D文件夹中,我希望它们解析B下的所有标头,因此我的解决方案是 HeaderFilterRegex:“ B / *” 我想包含很多标头,所以我不能为每个标头命名。
但是在C和D文件夹中,有几个我想排除的标头(例如coco.h)。
我尝试将NO_LINT放入包含coco.h的cpp中,但这没有帮助,
我该怎么做?
谢谢
答案 0 :(得分:1)
我找到了适合自己目的的解决方法(我要过滤的文件数量有限,并且具有唯一的名称)
我使用行过滤器并添加所有要过滤的文件,但是在行范围内,我放置了一条不存在的行,这样它将文件过滤掉。在行过滤器的末尾添加.h和.cpp,以便它将过滤其余文件。
例如说我只想过滤掉coco.cpp -line-filter = [{“ name”:“ coco.cpp”,“ lines”:[[9999999,9999999]]},{“ name”:“。h”},{“ name”:“。cpp” }]
要注意的一件事是,为什么我认为它不起作用:行过滤器仅在进行分析后才起作用,而页眉过滤器仅对include起作用。
在coco.cpp中,我有一行(调用模板)引起了警告,但是警告显示在应该由标题过滤器过滤掉的标题上。
它没有被过滤掉,因为警告是由于cpp引起的,但是实际的警告显示在标题上,因此行过滤器直到我也将特定的标题也放入行过滤器后才有用。
不是很直观
答案 1 :(得分:0)
有可能(尽管很笨拙)为此使用header-filter
选项。
如果重命名不需要处理的文件,使其后缀与其他头文件不同(例如,用.h_nolint代替.h),则可以使用头过滤器仅匹配* .h文件:
-header-filter=\.h$
(clang-tidy使用POSIX ERE)
这当然要付出代价,除了重命名文件外,还必须重命名代码中的所有相应标头引用,但是不错的IDE应该能够处理它。
答案 2 :(得分:0)
从选项名称看来,您似乎需要输入 regex
,在这种情况下,您的语法有错误。
也许
HeaderFilterRegex: 'B/'
就是你所需要的,或者也许
HeaderFilterRegex:
B/.*\.hpp$' 如果您想具体过滤仅 hpp
个文件