40 votes

Comment puis-je demander à Eclipse de m'avertir lorsque je compare des chaînes de caractères avec == au lieu de .equals() ?

Je sais que en comparant String vous devez utiliser .equals() pas == et j'en comprends les raisons. Cependant, il m'arrive parfois d'oublier et de comparer les cordes avec == par erreur. J'aimerais qu'Eclipse (qui est beaucoup plus intelligent que moi) m'avertisse en faisant une ou plusieurs des choses suivantes :

  • Souligner mon erreur avec une ligne rouge ondulée et indiquer l'erreur.
  • Refuser de compiler mon code jusqu'à ce que je répare l'erreur.
  • Réparer l'erreur pour moi
  • Me frapper à la tête avec le livre de Joshua Bloch le plus proche jusqu'à ce que je m'excuse.

Dans Eclipse 3.5, vous pouvez demander à Eclipse de vous avertir de toutes sortes de choses, en allant dans Fenêtre > Préférences > Compilateur > Erreurs/Avertissements, mais malheureusement "Comparer des chaînes de caractères avec == au lieu de .equals()" ne semble pas en faire partie. Est-ce que je l'ai manqué ? Est-il possible de l'ajouter dans une prochaine version ?

EDIT : Je préfère faire cela en utilisant la fonctionnalité intégrée d'Eclipse, plutôt que de devoir télécharger un plugin. Cependant, je pense qu'il serait quand même utile de mentionner les plugins qui ont cette fonctionnalité dans vos réponses.

18voto

16voto

fastcodejava Points 22174

Eclipse ne pourra jamais vous le dire. Findbugs ou PMD peut probablement le faire.

EDIT : Je dis

Eclipse ne pourra jamais vous le dire.

parce qu'il n'y a rien de mal avec le code a == b en tant que code java. Si vous souhaitez une aide supplémentaire, c'est là que d'autres plugins viennent vous aider.

Edit : Selon Pascal Thivent, Findbugs ne peut pas le faire, mais il semble que PMD le puisse. Je laisse cependant le lien vers Findbugs, car c'est probablement un lien utile pour les personnes qui rencontrent cette question.

0voto

Sebien Points 108

Contrairement à ce qui a été dit dans les commentaires précédents, FindBug (maintenant ?) peut détecter de telles erreurs de comparaison. Dans mon cas, FindBug était mieux à même de signaler les erreurs que PMD.

Il existe deux catégories de rapports de bogue :

Et j'aimerais ajouter au débat "Cet avertissement est-il utile ?" :

J'ai converti beaucoup de code JavaScript d'un jeu HTML5 pour le convertir en jeu Android. En JavaScript, les chaînes de caractères sont comparées avec "==". Elles ont été converties de cette façon en Java. J'avais donc besoin d'un outil pour être absolument sûr d'avoir remplacé toutes les chaînes par ".equals(".

-1voto

Mihir Mathuria Points 3060

Je ne pense pas que tu puisses.

Utilisation de == est une caractéristique valide du langage java. Il y aurait des circonstances où vous voudriez faire exactement la même chose. Alors quoi ?

Probablement, un jour, un programmeur voudra que l'IDE l'avertisse lorsqu'il écrit i = 10 (au lieu de i == 10 )

Heureusement, c'est là que le humain prend le contrôle de la machine et nous avons tous notre travail :)

Malheureusement, il y a tellement de systèmes bogués :(

Je suis sûr qu'avec le temps, vous prendrez l'habitude d'utiliser equals() pour String

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X