java - sangre - ¿Cómo puedo decirle a Eclipse que me advierta cuando comparo cadenas con== en lugar de.equals()
luna roja 2018 fechas (4)
Sé que al comparar String
s, debes usar .equals()
not ==
y entiendo las razones para esto. Sin embargo, a veces olvido y comparo cadenas con ==
por error. Me gustaría que Eclipse (siendo mucho más inteligente que yo) me advirtiera haciendo uno o más de los siguientes:
- Subrayando mi error con una línea roja ondulada y señalando el error
- Negarse a compilar mi código hasta que solucione el error
- Corregir el error para mí
- Golpándome en la cabeza con el libro más cercano de Joshua Bloch hasta que me disculpe
En Eclipse 3.5, puede hacer que Eclipse le advierta sobre todo tipo de cosas, yendo a Ventana> Preferencias> Compilador> Errores / Advertencias, pero lamentablemente "Comparar cadenas con == en lugar de .equals ()" no parece ser uno de ellos. ¿Lo estoy perdiendo? ¿Hay alguna posibilidad de agregar esto en una versión futura?
EDITAR: Prefiero hacer esto usando la funcionalidad integrada de Eclipse, en lugar de tener que descargar un complemento. Sin embargo, creo que aún sería útil mencionar los complementos que tienen esta característica en sus respuestas.
Al contrario de lo que se ha dicho en comentarios anteriores, FindBug (¿ahora?) Puede detectar tales errores de comparación. En mi caso, FindBug fue más capaz de informar errores que PMD.
Hay dos categorías de informes de errores:
- http://findbugs.sourceforge.net/bugDescriptions.html#ES_COMPARING_PARAMETER_STRING_WITH_EQ
- http://findbugs.sourceforge.net/bugDescriptions.html#ES_COMPARING_STRINGS_WITH_EQ
Y me gustaría agregar al debate de "¿Es útil esta advertencia?":
He convertido una gran cantidad de código JavaScript de un juego HTML5 para convertirlo en un juego de Android. En JavaScript, las cadenas se comparan con "==". Fueron convertidos de esa manera a Java. Así que necesitaba una herramienta para estar absolutamente seguro de haber reemplazado todo por ".equals (".
Eclipse nunca puede decirte eso. Findbugs o PMD probablemente sí.
EDITAR: digo
Eclipse nunca puede decirte eso.
porque no hay nada malo con el código a == b
como código java. Si desea ayuda adicional, aquí es donde otros complementos ayudan.
Editar: Según Pascal Thivent, los Findbugs no pueden hacer esto, pero parece que PMD sí. Sin embargo, estoy dejando el enlace a Findbugs, ya que probablemente sea un enlace útil para las personas que se encuentran con esta pregunta.
No creo que puedas.
Usar ==
es una característica válida del lenguaje Java. Habría circunstancias en las que querrías hacer esto exactamente. ¿Y que?
Probablemente, un buen día, algún programador querría que el IDE lo advierta cuando escribe i = 10
(en vez de i == 10
)
Afortunadamente, aquí es donde el ser humano se hace cargo de la máquina y todos tenemos nuestro trabajo :)
Lamentablemente, hay tantos sistemas defectuosos :(
Estoy seguro de que con el tiempo adquirirás el hábito de usar equals()
para String
https://bugs.eclipse.org/bugs/show_bug.cgi?id=39095
Bug 39095 - RFE: avisa cuando se comparan elementos no primitivos usando ==
Sería bueno si el compilador permitiera la advertencia cuando == se usa para comparar tipos no primitivos, de modo que se pueda atrapar String en comparación con ==, mientras que un enfoque válido si está internándose y usando el grupo de cadenas de caracteres. como advertencias de tiempo de compilación en lugar de roturas no obvias en tiempo de ejecución ...