受到understand的工具的启发,想自己做一个针对java类的代码静态调用工具。
先举个例子:
方法名称:com.person.api.AccountAPI.getPersonLeastInfo(args[1])
call {[
com.house.api.HouseApiTest.test_getConfusedPhoneNumber_normal(args[0])_935,
com.house.service.impl.UserServiceImpl.getUserInfo(args[3])_66,
com.house.api.HouseApiTest.test_getPhoneNumber_normal(args[0])_899
]}
先说下成果,可以通过关键词,计算出xxx类的方法被哪些模块的哪些方法调用例如上图计算出来的,
com.person.api.AccountAPI这个类的getPersonLeastInfo(1个参数的方法),被调用3处,分别在3个不同类的935行(0个参数方法),66行(3个参数方法),899行(0个参数方法)。
作用:可以在研发提交代码后,或者研发修改代码后,自动扫描代码的影响面。往小了说 就是修改一处代码 那里被影响了。
适用于:java类代码跨模块之间调用,如果是单一模块的话 可以直接用eclipse里面的open call hierarchy直接使用。
实现的流程哈:
第1步,首先先确保你的所有要扫描的代码都是最新的代码(这里多说几句,可以更加版本号进行比对,或者做一个类似于jenkins那样的定时触发工具。。好多种做法这个就不一一去说了)
第2步,通过递归的办法,一个一个文件扫描出来所有的*.java类文件,并记录下他们的位置
第3步,通过调用ASTView,一行一行,一个方法一个方