java – Checkstyle报告catch-exception参数的LocalFinalVariableNameCheck错误

我有一个奇怪的问题,我不确定这是两个耳朵之间的问题还是一个checkstyle问题.
运行checkstyle 6.2我们得到了两个,在jenkins和 eclipse这个错误

LocalFinalVariableNameCheck,Priority: normal 

Name 'pEx' must match pattern '^l[A-Z][a-zA-Z0-9]*$'.

这是代码

...
} catch (final XPathExpressionException pEx) {
   throw new ConfigurationException(pEx);
}

为什么checkstyle将catch块定义为局部var而不是param?

解决方法

正如@Dongqing指出的那样,pEx确实是一个局部变量,因此这里的检查适用.

但需要注意的是:此规则的认值为^ [a-z] [a-zA-Z0-9] * $,如checkstyle documentation(工具的最新版本)中所指定.您可能已经定制的模式适合某些本地标准^ l [A-Z] [a-zA-Z0-9] * $.因此,在删除违规之前,您应该确保命名模式确实正常(为什么定义自定义规则,如果它不合适?).

如果你真的想摆脱这种违规行为,Che​​ckstyle提供了各种方法来抑制警告.您可以:

>使用suppression XML file,允许您针对给定范围的行(甚至列范围)禁止特定文件上的特定规则.这样您就不必修改代码,但需要使用所有抑制来维护一个单独的文件.
>使用注释或注释通过在代码添加注释或注释(例如@SuppressWarnings)来禁用警告,其中假阳性为.
这也必须配置.有关详细信息和示例,请参阅上面的链接.

编辑:此Checkstyle规则还允许您调整变量声明或catch子句的模式.以下配置应该适合您:

<module name="LocalVariableName">
    <property name="format" value="^[a-zA-Z0-9]*$"/>
    <property name="tokens" value="ParaMETER_DEF"/>
</module>

在这里,您只为catch子句中的违规指定了一个非常宽容的模式.变量声明不应受到影响,仍然需要检查原始模式.

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...