Skip to content

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.pycatcoder/{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 面板中。

最后更新于: