如何告诉Eclipse当我比较string==而不是.equals()时提醒我

我知道在比较String ,应该使用.equals()而不是== ,我理解这个的原因。 但是我有时忘记和比较string==错误。 如果Eclipse(比我更聪明),我会喜欢它会警告我做一个或多个以下:

  • 强调我的错误与一个摆动的红线,并指出了错误
  • 拒绝编译我的代码,直到我解决了这个错误
  • 解决了我的错误
  • 打我最近的Joshua Bloch书的头,直到我道歉

在Eclipse 3.5中,你可以让Eclipse通过Window> Preferences> Compiler> Errors / Warnings来警告你所有types的东西,但遗憾的是“用==比较string而不是.equals()”似乎不是他们。 我只是想念它吗? 在未来的版本中是否有机会添加这个function?

编辑:我宁愿这样做使用Eclipse的内置function,而不必下载一个插件。 不过,我认为在你的答案中提到具有这个特性的插件仍然是有用的。

Eclipse永远不能告诉你。 Findbugs或PMD可能可以。

编辑:我说

Eclipse永远不能告诉你。

因为没有错误代码a == b作为java代码。 如果你想要一些额外的帮助,这是其他插件来帮助的地方。

编辑:根据帕斯卡尔Thivent,Findbugs不能做到这一点,但它看起来像PMD可以。 但是,我将这个链接留给了Findbugs,因为对于遇到这个问题的人来说,这可能是一个有用的链接。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=39095

错误39095 – RFE:使用==比较非基元时的警告

如果编译器在使用==比较非基本types时允许警告,那么String会与==比较,如果您正在使用和使用string池,则可以捕获一个有效的方法作为编译时警告而不是运行时间不明显的断点。

我不认为你可以。

使用==是一个有效的Java语言function。 有些情况下,你会想做这件事。 那又怎样?

也许,有一天,一些程序员会希望IDE在他写i = 10 (而不是i == 10 )时提醒他,

幸运的是,这是人类接pipe机器的地方,我们都有我们的工作:)

可悲的是,有这么多的越野车系统:(

我相信,随着时间的推移,你将习惯于使用equals()作为String

与之前的评论相反,FindBug(now?)可以检测到这种比较错误。 就我而言,FindBug比PMD更能报告错误。

有两个错误报告类别:

我想补充一下“这个警告有用吗?”的辩论:

我已经从HTML5游戏转换了很多JavaScript代码,将其转换为Android游戏。 在JavaScript中,string与“==”进行比较。 他们被转换成Java。 所以我需要一个工具来确保我全部replace为“.equals(”)。