Checkstyle配置MatchXpath规则提示无法实例化类如何解决?
错误根因
- 你使用的Checkstyle版本低于8.39:
MatchXpath是Checkstyle 8.39版本才新增的内置模块,低版本中不存在该类,因此会抛出无法实例化的错误 - 规则配置层级错误:
MatchXpath属于语法树遍历模块下的子规则,必须放在TreeWalker模块内,不能直接作为Checker的直接子节点
修复方案
步骤1:升级Checkstyle版本
在项目的build.gradle文件中调整Checkstyle配置,指定不低于8.39的工具版本,推荐使用最新稳定版:
checkstyle { toolVersion = '10.17.0' }
步骤2:修正规则配置
调整你的Checkstyle规则文件的模块层级,正确配置如下:
<module name="Checker"> <module name="TreeWalker"> <module name="MatchXpath"> <property name="query" value="//VARIABLE_DEF[./ASSIGN/EXPR and not(./TYPE/IDENT[@text='var'])]"/> <message key="matchxpath.match" value="局部变量必须使用var关键字声明"/> </module> </module> </module>
修改完成后重新运行Checkstyle检查即可正常生效,规则会自动识别所有未使用var声明的带初始化赋值的局部变量,并抛出对应提示。
内容的提问来源于stack exchange,提问作者Cube.
相关产品推荐
相关产品推荐

