简介:
代码静态分析工具,背后的技术基础是JAVA ASM。项目地址:https://github.com/sorra/TraceSonar
项目最后提交于2年前,贡献者寥寥,能不能用笔者还是报一些怀疑的。
使用方法- 开箱即用
项目提供了一个 test.sh的案例,可以让用户直接体验使用效果
mvn assembly:assembly && java -Xmx2048m -jar target/tracesonar-0.1-SNAPSHOT.jar -f target/tracesonar-0.1-SNAPSHOT.jar -q "sorra.tracesonar.core.GraphStore#*"
执行该命令,TraceSonar 将扫描分析sorra.tracesonar.core.GraphStore这个类的所有方法的调用关系,并将结果写入traceback.html。用户可以读取该报告并了解这个类的调用情况。
例如,我们来看一下这个类中的getCallerCollector方法
在IDEA中,可以获取到如下的调用关系
可以看到,该方法分别在MethodInsnCollector#visitInvokeDynamicInsn以及
Searcher#searchCallers中有三处调用。
来看一下traceback.html报告中getCallerCollector方法的调用链分析结果
可以看到,该方法的确是有3处外部调用,与IDEA中的分析结果一致。
此外,也可以看到,这个工具可以一直追踪调用链直到main方法。
根据这个项目的readme.md,
报告中的染色规则是:
蓝色:调用链起始节点
绿色:调用链结束节点
灰色:可能的调用
这样,如果一个类或者方法被重构了,通过这个工具就可以非常方便地分析出工程中的哪些地方需要开发和测试人员关注了。
全部扫描
在运行了demo案例后,笔者简单找了一个项目进行全量扫描。在项目的根目录中,运行以下的命令,
java -Xmx2048m -jar tracesonar-0.1-SNAPSHOT.jar -f target/super-jacoco.jar -q "*#*"
从执行日志上看,扫描分析的速度还是非常快的,
只用了1秒钟不到,就把一个开源项目分析好了。
怎么样,5分钟入门精准测试,想试试了吗?