[英]How to find implicit usages of toString() method for specific type
最近,我将代码中处理密码的所有位置从String
更改为新的Password
类。 Password.toString()
方法现在仅显示[********]
。 如果要获取密码,则必须调用Password.getPassword()
。 这样,我可以确保不会将密码意外写入日志文件。
在更改期间,我错过了更改某些类似于以下内容的行:
String.format( "user:%s", password );
在我进行更改之前, password
的类型为String
,因此其格式已根据需要设置。 但是在我更改password
后, password
显示为[*******]
。 那正是我的意图。 但是现在我想自动找到所有这些地方。
我试过的FindBugs与FB-的contrib插件( ITU_INAPPROPRIATE_TOSTRING_USE ),但没有发现的隐式使用Password.toString()
内的String.format()。
是否有人知道另一个findbugs contrib项目或任何其他可以找到这些代码位置的静态代码分析器?
ITU仅发现使用toString()来推断内容的值,例如,是将其解析为某个值,还是使用它来构建其他字符串。 检测器在那里告诉您,实际上,您不应该依赖toString()的内容,因为在许多情况下,应将其视为“调试”输出。 (如您在此处看到的)。
会有很多误报的方法只是为了检查对toString()的使用,该方法始终有效。
不,不知道任何检测器,但是写一个检测器很简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.