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