我正在使用 lombok 的
val
来指定代码中的最终变量。 FinalLocalVariable 的 checkstyle 规则将任何 val
变量报告为非最终变量。我正在尝试编写一个自定义的suppress.xml来抑制对任何 val
字段的检查。目前,我的抑制.xml 看起来像这样
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionXpathFilter Experimental Configuration 1.2//EN"
"https://checkstyle.org/dtds/suppressions_1_2_xpath_experimental.dtd">
<suppressions>
<suppress-xpath
checks="FinalLocalVariable" query="//VARIABLE_DEF[./TYPE/IDENT[@text='val']]"/
</suppressions>
我已经为具有
val
字段的类生成了 AST 树,这是声明 val
的部分
`--SLIST -> { [32:96]
| |--VARIABLE_DEF -> VARIABLE_DEF [33:4]
| | |--MODIFIERS -> MODIFIERS [33:4]
| | |--TYPE -> TYPE [33:4]
| | | `--IDENT -> val [33:4]
我的想法是指定身份
val
的任何变量定义对于这个精确检查都应该被忽略。我已阅读 checkstyle 的 SuppressionXpathFilter 文档,但找不到我的问题是什么,因为 checkstyle 不断报告该变量应声明为最终的。任何帮助将不胜感激。
您需要使用抑制查询来寻址 VARIABLE_DEF 的 IDENT 子节点:
query="//VARIABLE_DEF[./TYPE/IDENT[@text='val']]/IDENT"
或者也许这是一个更强大的:
query="//VARIABLE_DEF[./TYPE/IDENT[@text='val']]/*"