Design Doc

目的

competitive-verifieroj-verify online-judge-tools/verification-helper の改善版となるのを目的として開発された。

Overview

以下のサブコマンドを持つ

verify              Verify library
docs                Create documents
download            Download problems
merge-input         Merge verify_files.json
merge-result        Merge result of `verify`
check               Check result of `verify`
oj-resolve          Create verify_files json using `oj-verify`
migrate             Migration from verification-helper(`oj-verify`) project
  1. oj-resolve: ソースコードの解析
    • いきなり多言語対応するのは労力が大きいので oj-verify のものを改造して使用。
    • 個別の新規開発するモチベーションは低いので機能追加予定はなし。
  2. verify: ドキュメント生成
    • resolve の結果から verify を実行する
    • 並列実行用の引数を用意しておく
  3. docs: ドキュメント生成
    • resolve, verify の結果からドキュメントを生成する
    • Jekyll 形式で出力する
  4. check: verify の結果が成功かどうかをチェックする
    • verify を並列実行した際にはすべてを終えてからチェックすることを想定している
  5. download: 問題のダウンロード
    • 開発時の利便性を考えて verify から問題のダウンロード部分だけ切り出して実行
  6. merge-input, merge-result: 並列実行で別々に使用したファイルをマージする
  7. migrate: oj-verify からのマイグレーション

設計思想

oj-verify の課題

2022年現在、oj-verify は開発停止となっているため、機能改善が見込めない状態となっている。

また、oj-verify には下記のような課題があった。また、透過的な実装をする

これらのなかには verification-helper#116 のように透過的な実装を目指してあえてそうなっているものもある。

competitive-verifier の設計

更新日