Checkstyle:如何解决“隐藏字段”错误

我得到这个checkstyle错误:

'serverURL' hides a field 

在这

  private static void setServerURL(final String serverURL) { Utility.serverURL = serverURL; } 

可能是什么原因,以及如何解决?

已经有一个variables定义的serverURL可用于此方法(除了正在接受的forms参数之外)。 这就是所谓的“阴影”。

我认为大多数Java程序员都把这个检查closures了,因为这并不是那么令人困惑。

例如,这会触发错误:

 public class Foo { private int bar = 0; public void someMethod(int bar) { // There are two bars! All references in this method will use the parameter bar, // unless they are explicitly prefixed with 'this'. this.bar = bar; } } 

我认为在构造函数和setter中,set字段名与setter参数名是相同的。 这就是为什么我推荐这个configuration:

 <module name="HiddenField" > <property name="ignoreSetter" value="true" /> <property name="ignoreConstructorParameter" value="true" /> </module> 

这样,其他隐藏的现场案件仍然被禁止。

参数和静态字段具有相同的名称。 只需重命名其中一个。 有些人遵循一个命名约定,所有参数都以p作为前缀。 然后,您将有serverURL作为字段名称和pServerURL作为参数名称。 或者你可以简单地关掉支票。

我通过在eclipse中禁用它来解决它。 我一直在寻找如何做到这一点,当我登陆这个网页。 我没有find前10谷歌查询的答案,所以我不得不弄清楚了困难的方式。 对于那些正在寻找的人来说,我是这样做的:

打开

Eclipse的>首选项>的Checkstyle

find你正在使用的checkstyleconfiguration(你可能已经设置好了,或者你正在使用default,在这种情况下创build一个你自己的副本,然后编辑它)是一个更好的主意。 select它,然后点击右侧的configurationbutton。 在列表中find以下configuration:

编码问题>隐藏字段

打开configuration(在UI中有一个名为“open”的button)。

取消select“参数声明”。 单击确定,然后单击确定,然后单击确定。

只需在你的方法中改变你的参数名称

 private static void setServerURL(final String serverURL) { Utility.serverURL = serverURL; } 

 private static void setServerURL(final String serverURLXYZ) { Utility.serverURL = serverURLXYZ; } 

请享用…

Jigar Patel