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 面板中。
