问题描述
我正在使用Java开发一个大型项目,该项目使用Guice作为其依赖项注入框架。 是否可以在该代码中找到所有位置,应将特定对象类型注入到其中? 澄清:通过静态代码分析,而不是在运行时进行。
具体来说,我有一个注释为@Provides
的方法。
我想在代码中检测到所有与该方法返回值绑定的地方。
更新:
根据this,该作业没有任何现有工具。
没有对Guice进行任何静态分析,以查看您实际上是否对您说过的注释具有绑定。这意味着Guice中的故障在运行时发生。鉴于开发人员可以使用没有被常量引用的字符串,因此Guice还允许您使用自己的注释。
解决方法
注意事项:此解决方案既不完整也不稳健(正如评论中提到的那样),但是在没有更好解决方案的情况下可能就足够了。
为此找到的简单解决方案是使用正则表达式。
例如,如果“ provider”方法返回类Foo
,则表达式应为:
@Inject[\s\S]+?\W(Foo)
例如,这不包括嵌套的注入模式,例如用@Provides
注释的方法的参数。