regex Clang-tidy header-filter正则表达式:Makefile ->.clang-tidy

of1yzvn4  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(190)

我正试图将clang-tidy的硬编码配置选项从Makefile移到.clang-tidy YAML文件中。到目前为止,我们将www.example.comrun-clang-tidy-6.0.py称为:

# Run clang-tidy. The header filter includes files in the foo and bar/baz directories
# but it excludes files ending in .g.h (auto-generated headers).
run-clang-tidy-6.0.py -header-filter='.*(foo|bar\/baz).*(?<!\.g\.h)$$' > clang-tidy-output.txt

这样可以正常工作,但是如果我在.clang-tidy中有HeaderFilterRegex: '.*(foo|bar\/baz).*(?<!\.g\.h)$$',过滤就不能像预期的那样工作。
我尝试了各种各样的东西围绕着什么字符被转义/不转义,因为我知道Make和YAML有不同的期望,但我不能得到正确的。

  • 替换$$ -〉$
  • 双转义\(\ -〉\)
  • 正在删除“”

有人能给我解释一下这个正则表达式在YAML文件中的适当格式吗?

n3h0vuf2

n3h0vuf21#

据我所知,正则表达式应该在YAML文件中写成字符串,反斜杠应该用另一个反斜杠转义。在你的场景中,YAML文件应该包括:

HeaderFilterRegex: '.*(foo|bar\\/baz).*(?<!\\.g\\.h)$'

在这种情况下,正斜杠之前和点之前的反斜杠将被另一个反斜杠转义。反斜杠用于转义美元符号之前的反斜杠和负lookbehindAssert中的点。要在YAML中包围正则表达式,请使用单引号或双引号。如果使用双引号,则必须转义反斜杠和其他几个YAML特定的符号。比如美元符号。举个例子:

HeaderFilterRegex: ".*(foo|bar\\/baz).*(?<!\\.g\\.h)$"

相关问题