首页 > 解决方案 > 通过静态代码分析检测 Java (Guice) 中的所有注入点

问题描述

我正在开发一个使用 Guice 作为其依赖注入框架的 Java 大型项目。是否可以在该代码中找到应注入特定对象类型的 所有位置?澄清:通过静态代码分析,而不是在运行时。

具体来说,我有一个带注释的方法@Provides。我想检测代码中绑定到此方法返回值的所有位置。

更新:

据此,这项工作没有任何现有的工具。

没有任何对 Guice 的静态分析来查看您是否真的有您所说的注释的绑定。这意味着 Guice 中的故障发生在运行时。鉴于开发人员可以粗手指不作为常量引用的字符串,Guice 还允许您使用自己的注释。

标签: javajava-8guicestatic-analysis

解决方案


警告:这个解决方案既不完整也不健壮(正如评论中提到的那样),但如果没有更好的解决方案,它可能就足够了。

我为此找到的简单解决方案是使用正则表达式。例如,如果“provider”方法返回一个类Foo,那么表达式应该是:

@Inject[\s\S]+?\W(Foo)

这不包括,例如,嵌套注入模式,例如带有注释的方法的参数@Provides


推荐阅读