1. 前言
创作开始时间:2022年11月18日20:50:38
如题,本文记录一下软件自动修复工具Jaid配置、调试、运行及相关问题的解决方案。
2. Jaid原论文
- 【ASE’17】Contract-Based Program Repair without the Contracts
- 【TSE’20】Contract-Based Program Repair without The Contracts: An Extended Study
3. 环境
- Ubuntu 16
- Eclipse Version: 2019-12 (4.14.0)
- JDK 8
4. 配置
1)先克隆:
git clone https://bitbucket.org/maxpei/jaid.git
2)打开Eclipse,按照Gradle项目导入Jaid。
5. 调试
1)程序入口在:
2)调试参数:
--JaidSettingFile /mnt/data/jaid/example/af_test/mac_project.properties
3)需要将jaid/example/af_test/mac_project.properties
文件修改一下,主要是适配一下本地环境:
JDKDir = /home/apr/env/jdk1.8.0_202
ProjectRootDir = /mnt/data/jaid/example/af_test
4)然后在Eclipse中调试即可。
6. 碰到的问题
一开始调试碰到了这样的问题:
java.util.ServiceConfigurationError: com.sun.jdi.connect.Connector: Provider com.sun.tools.jdi.SharedMemoryAttachingConnector could not be instantiated
java.util.ServiceConfigurationError: com.sun.jdi.connect.Connector: Provider com.sun.tools.jdi.SharedMemoryListeningConnector could not be instantiated
xxx
然后显示没有反例。
不得其解,毕竟这个项目的代码模式和TBar,SimFix的不太像,所以一下搞不清原因在哪。
输出显示没有反例,应该是执行测试的问题。
然后调试找到测试执行的代码:
调试发现launchingConnector里面的变量JDK竟然是JDK 11,而不是JDK8.
打开。找到问题了!
赶紧把调试configuration的JDK换一下:
就可以成功运行了!
7. 一些发现
1)对表达式的收集,两类:basic,extended:
8. 小结
后续再补充吧。
创作结束时间:2022年11月19日09:46:23