最近,我更改了代码中的所有位置,其中密码从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项目或任何其他可以找到这些代码位置的静态代码分析器?
答案 0 :(得分:0)
国际电联只会使用toString(),您可以在其中推断内容的价值,例如,如果要解析某些值,或者使用它来构建其他字符串。检测器是为了让你知道你真的不应该依赖于toString()的内容,因为它应该被认为是'调试'输出,在许多情况下。 (如你所见)。
只有检查toString()的使用才会有很多误报。
不,不知道任何探测器,但写一个探测器也是微不足道的。