CatCoder
目录结构
catcoder
目录包含 CatCoder 的源代码、基准数据集和评测脚本。catcoder-vscode
目录包含集成了 CatCoder 的 VSCode 插件的源代码。results
目录包含评测结果,包括指标值以及生成的详细代码。
基本要求
- Linux 操作系统
- Python 3.10 及以上版本
- NVIDIA GPU(具有足够的显存以运行大语言模型)
- 安装 Defects4J 及其依赖项(请参考 https://defects4j.org/ 提供的安装说明)
- 安装 Rust、Cargo 和 rust-analyzer(运行
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
,然后执行rustup component add rust-analyzer
)
安装步骤
- 推荐使用干净的 conda 环境,以便以下操作仅影响特定环境。
- 进入
catcoder/rust
目录,并解压crates.zip
到当前目录。 - 运行评测代码前,需要安装依赖项:在
catcoder
目录下执行pip install -r requirements.txt
。 - 如果希望进一步研究 CatCoder 的代码,则除了上述步骤外,还需进行额外配置:
- 进入
catcoder/tools/java
目录,并运行python setup.py install
。 - 进入
catcoder/tools/intellirust
目录,并运行./configure && cargo cmd install
。
- 进入
使用方法
- 若要运行论文中的实验,并在基准数据集上评测 CatCoder:
- 进入
catcoder/{java|rust}
目录,修改evaluation.py
中的__main__
代码块(指定评测的方法和模型),然后运行python evaluation.py
。(所有方法的上下文数据,包括基线方法,已预先生成并存储在基准数据集中)
- 进入
- 若要进一步研究:
- 基准数据集位于
catcoder/{java|rust}/datasets
目录。 - CatCoder 的实现位于
catcoder/tools
目录,以及catcoder/{java|rust}/retrieve_relevant_code.py
和catcoder/{java|rust}/extract_type_context.py
文件中。
- 基准数据集位于
CatCoder VSCode 插件
安装步骤
- 安装依赖项:
- 完成上文提到的所有安装步骤
- 根据
catcoder-vscode/env.txt
文件创建 conda 环境 - 从 Hugging Face 下载
all-mpnet-base-v2
模型
- 安装 rust-analyzer 的 VSCode 插件以及本插件(编译、打包后的文件名应为
catcoder-vscode-x.x.x.vsix
)
使用方法
在 VSCode 中打开一个 Rust 项目工作区
在 设置 > 扩展 > CatCoder 位置设定配置文件中的各个参数。
打开一个 Rust 源文件,然后选择或将光标放在一个 Rust 函数内。只要选区或光标位于函数内部,CatCoder 就能正常工作。调用 CatCoder 的方式为:右键 > Generate code for this function。
- 运行 CatCoder 时,可以查看状态栏的进度。
最终,生成的代码建议将显示在 输出 > CatCoder 面板中。