我有一个奇怪的问题,我不确定这是两个耳朵之间的问题还是一个checkstyle问题.
运行checkstyle 6.2我们得到了两个,在jenkins和 eclipse这个错误:
运行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] * $.因此,在删除违规之前,您应该确保命名模式确实正常(为什么定义自定义规则,如果它不合适?).
如果你真的想摆脱这种违规行为,Checkstyle提供了各种方法来抑制警告.您可以:
>使用suppression XML file,允许您针对给定范围的行(甚至列范围)禁止特定文件上的特定规则.这样您就不必修改代码,但需要使用所有抑制来维护一个单独的文件.
>使用注释或注释通过在代码中添加注释或注释(例如@SuppressWarnings)来禁用警告,其中假阳性为.
这也必须配置.有关详细信息和示例,请参阅上面的链接.
编辑:此Checkstyle规则还允许您调整变量声明或catch子句的模式.以下配置应该适合您:
<module name="LocalVariableName"> <property name="format" value="^[a-zA-Z0-9]*$"/> <property name="tokens" value="ParaMETER_DEF"/> </module>