Error Prone为我们提供了强大的工具,禁止某些模式进入我们的Java代码。我们一定要小心使用,以便在不为他们创造繁忙的情况下使用户受益。
错误应具有以下属性:
最重要的是,当用户看到我们的错误之一时,她应该考虑:“我很高兴错误抓住了我的错误。”
ArrayEquals
检查标记使用Object.equals
方法来做两个数组之间的比较。在这些情况下,意图是比较数组的内容,但是Object.equals
却比较了引用的相等性。
一旦解释了这个问题,在程序员实际上并不打算比较引用相等性的情况下,这是一个正确的问题,因为数组内容实际上并没有被比较,这种情况偶尔会发生。
考虑使用new Integer(i)
的标记,并建议使用Integer.valueOf(i)
。这提高了性能,在大多数情况下是正确的。但是,这个错误并不是一个正确性问题,在大多数情况下,性能影响并不重要。
它也经常发生,错误消息可能会使用户烦恼。
考虑一个检查,它检测在所有覆盖其他方法的方法上使用@Override
注释。这是我们的风格指南的一部分,但不会自动执行。然而,这不是一个真正的正确性问题,我的直觉是它发生在相当高的频率。
如果这是一个错误则太挑剔了。
注意:这些标准仍在讨论之中。如果您对本主题感到强烈,请随时发送电子邮件至error-prone-discuss@googlegroups.com
。
警告可能是风格指导违规,潜在的严重错误或性能障碍。有几个原因要发出警告而不是编译器错误。
警告应具有以下属性:
他的底线是,当用户看到我们的一个警告时,她应该考虑:“我很高兴编译器指出。”
参考链接: criteria for new checks