java - 通过静态代码分析检测 Java (Guice) 中的所有注入点
问题描述
我正在开发一个使用 Guice 作为其依赖注入框架的 Java 大型项目。是否可以在该代码中找到应注入特定对象类型的 所有位置?澄清:通过静态代码分析,而不是在运行时。
具体来说,我有一个带注释的方法@Provides
。我想检测代码中绑定到此方法返回值的所有位置。
更新:
据此,这项工作没有任何现有的工具。
没有任何对 Guice 的静态分析来查看您是否真的有您所说的注释的绑定。这意味着 Guice 中的故障发生在运行时。鉴于开发人员可以粗手指不作为常量引用的字符串,Guice 还允许您使用自己的注释。
解决方案
警告:这个解决方案既不完整也不健壮(正如评论中提到的那样),但如果没有更好的解决方案,它可能就足够了。
我为此找到的简单解决方案是使用正则表达式。例如,如果“provider”方法返回一个类Foo
,那么表达式应该是:
@Inject[\s\S]+?\W(Foo)
这不包括,例如,嵌套注入模式,例如带有注释的方法的参数@Provides
。
推荐阅读
- ionic-framework - ionicMultilingual JSON issue
- java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
- asp.net - ASP.NET - 发布到 IIS 时主页不更新
- c++ - 循环中每一步内存使用量增加的原因
- javascript - 如何在 JavaScript 中获取日期的年份
- c# - HostingEnvironment.MapPath 在 .net 项目中返回 null
- r - 将每周数据转换为时间序列“ts”对象
- javascript - 如果 \n 存在于字符串中,则打字稿
- android - 为什么我的应用在设计模式和模拟器上看起来不同?
- node.js - Heroku https://www 重定向到 https://