使用 SuppressionXpathFilter 抑制 lombok val 的 checkstyle

问题描述 投票:0回答:1

我正在使用 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 不断报告该变量应声明为最终的。任何帮助将不胜感激。

java lombok checkstyle
1个回答
0
投票

您需要使用抑制查询来寻址 VARIABLE_DEF 的 IDENT 子节点:

query="//VARIABLE_DEF[./TYPE/IDENT[@text='val']]/IDENT"
© www.soinside.com 2019 - 2024. All rights reserved.