如何找到特定类型的toString()方法的隐式用法

时间:2016-08-17 09:52:33

标签: java tostring static-analysis findbugs

最近,我更改了代码中的所有位置,其中密码从String处理到新的Password类。 Password.toString()方法现在只打印[********]。如果我想获取密码,我必须致电Password.getPassword()。这样我可以确保不会意外地将密码写入日志文件。

在更改期间,我错过了更改一些看起来像这样的行:

String.format( "user:%s", password );

在我的更改password类型为String之前,所以它已根据需要进行了格式化。但在我的更改后password呈现为[*******]。这正是我的意图。但现在我想自动找到所有这些地方。

我使用findbugs插件(fb-contrib)尝试ITU_INAPPROPRIATE_TOSTRING_USE,但未在String.format()中找到Password.toString()的隐式用法。

有没有人知道另一个findbugs contrib项目或任何其他可以找到这些代码位置的静态代码分析器?

1 个答案:

答案 0 :(得分:0)

国际电联只会使用toString(),您可以在其中推断内容的价值,例如,如果要解析某些值,或者使用它来构建其他字符串。检测器是为了让你知道你真的不应该依赖于toString()的内容,因为它应该被认为是'调试'输出,在许多情况下。 (如你所见)。

只有检查toString()的使用才会有很多误报。

不,不知道任何探测器,但写一个探测器也是微不足道的。

相关问题