Je reçois cette erreur de style de contrôle:
'serverURL' hides a field
dans ce
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
Quelle pourrait être la raison et comment le résoudre?
Il existe déjà une variable définie serverURL
qui est disponible pour cette méthode (en plus du paramètre formel que vous acceptez). C'est ce qu'on appelle "l'observation".
Je pense que la plupart des programmeurs Java Java désactivent cette vérification, car ce n'est pas vraiment déroutant.
Par exemple, cela déclencherait l'erreur:
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;
}
}
Je pense qu'il est très courant chez les constructeurs et les setters que le nom du champ set soit le même que le nom du paramètre setter. C'est pourquoi je recommande cette configuration:
<module name="HiddenField" >
<property name="ignoreSetter" value="true" />
<property name="ignoreConstructorParameter" value="true" />
</module>
De cette façon, les autres cas de champs cachés sont toujours interdits.
Le paramètre et le champ statique ont le même nom. Renommez simplement l'un d'eux. Certaines personnes suivent une convention de dénomination qui préfixe tous les paramètres avec p
. Vous auriez alors serverURL
comme nom de champ et pServerURL
comme nom de paramètre. Ou vous pouvez simplement désactiver le chèque.
Je l'ai résolu en le désactivant dans Eclipse. Je cherchais comment faire cela quand j'ai atterri sur cette page. Je n'ai pas trouvé la réponse dans le top 10 des requêtes Google, j'ai donc dû le comprendre à la dure. Pour quelqu'un qui cherche ça, voici comment je l'ai fait:
Ouvrir
Eclipse> Préférences> Checkstyle
Trouvez la configuration de style de contrôle que vous utilisez (vous avez peut-être défini cela ou vous utilisez par défaut, auquel cas il est préférable de créer une copie de votre choix, puis de la modifier). Sélectionnez-le, puis cliquez sur le bouton de configuration sur le côté droit. Recherchez la configuration suivante dans la liste:
Problèmes de codage> Champ masqué
Ouvrez la configuration (il y a un bouton appelé "ouvert" dans l'interface utilisateur).
Désélectionnez "Déclaration des paramètres". Cliquez sur OK, puis sur OK, puis sur OK.
Changez simplement le nom de votre paramètre dans la méthode ur
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
à
private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
}
Prendre plaisir...
Jigar Patel
Erreur un peu stupide, mais voici la solution facile que je mets dans mes setters pour y remédier:
était:
public void setName(String name) {
this.name = name;
}
mis à jour:
public void setName(String val) {
this.name = val;
}