Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Spring Boot 强依赖分析器(Java 8)

这个项目提供了一个基于 JavaParser 的静态分析器,用于识别:

  1. 外部依赖 Bean(源码中没有定义、或在 Spring XML 中配置为外部类的 Bean)。
  2. 某个方法是否对外部 Bean 存在强依赖(方法内直接调用外部 Bean)。
  3. 强依赖在调用链中的向上传播(callee 强依赖会传播给 caller)。
  4. 最终暴露接口(HTTP Controller + Thrift 服务)是否对外部 Bean 强依赖。

支持的暴露接口

  • HTTP:@RestController/@Controller 下的 @RequestMapping/@GetMapping/... 方法。
  • Thrift:
    • 类注解包含 @ThriftService/@ThriftController;或
    • 类实现接口名以 Iface 结尾(如 Thrift 生成代码中的 XXX.Iface)。

Spring XML Bean 装配支持

分析器会解析扫描目录下的 .xml,识别 <bean><property ref="...">

  • 如果 property 引用的目标 bean class 是源码内类,则把该字段当作内部依赖参与调用链传播;
  • 如果目标 bean class 不在源码内,则记为外部依赖 Bean(例如 Thrift 客户端)。

运行

mvn test
mvn -q exec:java -Dexec.mainClass=com.analysis.analyzer.AnalyzerApplication -Dexec.args="src/test/resources/sample"

默认扫描 src/main/java,你也可以在命令行传入任意源码目录。

限制

  • 目前使用简单类名匹配,未引入完整类型解析。
  • 对重载方法使用「方法名 + 参数个数」进行匹配。
  • XML 目前只覆盖常见 <bean class=...> + <property name=... ref=...> 形式。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages