Record 202309¶
开发任务
- 优化 Android Studio 插件
- 运行命令时不冻结窗口
- kotsuite-core 集成 Mock 框架
- 使用 Java Agent + ASM 做插桩,获取函数返回值,而不是在生成 Jimple 时插桩(9.26 任务)
- 重构代码,将可重用的逻辑进行抽离
- 学习如何使用 Mockito 和 Robolectric
- 实现 Mock 框架集成
- 完成遗传算法
一、Android Studio 优化¶
1. 运行命令时不冻结窗口¶
问题原因:Avoiding UI freezes
解决方案:使用 IntelliJ Platform Execution API
2. 插件流程¶
二、Mock 框架集成¶
1. 待测项目¶
simple-gallery¶
simple-common¶
Analyzer 阶段
- 将
mockito-core-5.5.0.jar和junit-4.13.2.jar放入process_dir,耗时 2min
- 不额外加入分析 jar 包,耗时 9s
- 将测试框架放入 soot classpath 中进行分析,耗时 15s
2. 算法:Mock 集成¶
3. Java Agent¶
- 问题:Instrumentation 只加载了
KotMain,没有加载com.Test - 原因:transformer 在处理
KotMain时提前加载了com.Test,导致后续无法为com.Test添加 transformer - 解决方案:在第一个 visitor 中不提前加载类
如何一个类使用多个 transformer?
现在效果:
第一个 transformer 能正常使用,即可以动态插入方法调用用于生成测试用例覆盖率; 第二个 transformer 能生效,但还无法正常插入插桩语句,需要进一步排查。








