1 个稳定版本
3.0.0 | 2022年9月12日 |
---|
#1157 in 开发工具
59KB
1.5K SLoC
Advocat
在咨询你的 Advocat 之前,不要在 jutge 上提交任何代码!
Advocat 做什么?
这个程序能够编译 jutge 的题目并自动进行测试。测试会自动下载并检查。如果题目要求一个过程而不是一个程序,它将下载用于评估程序的 jutge 的 main()
过程,避免你不得不自己编写一个 judger 不会评估的方法。
要求
- g++
- curl
- rust (构建)
- cargo (构建)
使用说明
将你的工作保存为 main.cc
到一个名为 judger 问题 ID 的文件夹中(例如 P90615_ca/main.cc
)。在目录中执行 advocat
,程序将自动编译和测试你的程序。请注意,如果问题 ID 以 'X' 开头,则问题为私有,并且无法在没有登录的情况下下载文件。你可以在通过 Advocat 登录到 judger 时修改配置文件 ~/.config/advocat/config.ini
以包含以下参数
[auth]
email = EL_TEU_CORREU
password = LA_TEVA_CONTRASENYA
安装/更新说明
要安装或更新程序
cargo install --git https://github.com/rdvdev2/advocat
如果你曾经通过 cargo install
安装过程序,请将安装路径添加到 path
# Al final del teu .bashrc / .zshrc
export PATH=$PATH:$HOME/.cargo/bin
如果你重新打开终端或重新加载 .bashrc
/ .zshrc
文件,程序将可用。
如何向问题添加测试
一些问题没有公开测试,或者你可能想在你的测试套件中添加一个失败的私有测试或你自己编造的其他情况。在这些情况下,律师可以阅读存储在与你的 main.cc
相同文件夹及其子文件夹中的测试。每个测试由两个文件组成,具有相同的名称但不同的扩展名。
NOM_TEST.inp
:包含程序的输入。NOM_TEST.cor
:包含程序对于对应输入的正确输出。
重要的是要注意 .cor
文件末尾的空白行,因为如果文件末尾有一个空白行,测试只有在程序也产生一个空白行时才被视为正确。在编写没有 main()
的程序流程问题时,建议检查 ~/.cache/advocat/ID_PROBLEMA/main.cc
文件以了解如何读取输入。
源代码许可证
文件夹 templates/
中的模板以及编译程序的步骤是从 jutge-org/jutge-driver-std 存储库中改编的。
待办事项
尽管律师是一个功能性的程序,但仍有一些特性有待实现
- 与其他编译器的兼容性(目前使用
p1++
) - 与其他语言的兼容性(目前仅处理 C++ 程序)
- 并行执行测试
- 翻译为西班牙语和葡萄牙语(目前程序是英文)
- 直接与裁判器交互
- 下载题目
- 发布解决方案和展示判决结果
- 列表导航
- 下载以前的解决方案
- 计算度量(ccn, cl, diff...)
- 修改程序行为的参数(删除缓存,不下载文件,使用与 main.cc 不同的文件)
- 更多的配置选项(类似于参数)
此列表不分优先级,欢迎任何贡献。
依赖关系
~11–21MB
~305K SLoC