競プロライブラリの verify をお手軽に自動化するためのツールです。
これ読んで: https://online-judge-tools.github.io/verification-helper/installer.ja.html
$ pip3 install online-judge-verify-helper
Python のバージョンは 3.8 以上が必要です。
拡張子の前に .test
をつけたファイルに、特定の方法で verify 用問題の URL を書いておきます。 (たとえば C++
であれば、example.test.cpp
のようなファイルに #define PROBLEM "https://judge.yosupo.jp/problem/unionfind"
のような形で書きます。他の言語についてはリファレンスを参照してください。)
このとき、次のコマンドで verify できているかを確認してくれます。
$ oj-verify run
利用できる問題は主に Library Checker の問題と Aizu Online Judge の問題です。 他にもいくつかのサービスの問題が利用可能です。 より詳しい説明はリファレンスにあります。
与えられたファイル中の #include "foo.hpp"
の形の include 文を展開して出力します。
JavaScript で言うところの webpack のような機能であり、ファイル分割をしても実際のオンラインジャッジへの提出が困難にならないようにするために存在しています。
以下のように実行します。
$ oj-bundle main.cpp
競プロライブラリのディレクトリの外側にいる状態で実行する場合は -I path/to/your/library
のように指定してください。alias oj-bundle='\oj-bundle -I path/to/your/library'
のようなシェルのエイリアスを貼っておくのがおすすめです。
#pragma once
などの include guard に部分的に対応しています。複数回の include の対象になっているが出力には一度のみ含まれてほしいようなファイルがあれば、その 1 行目に #pragma once
と書いておいてください。
以下のコマンドを実行すると .verify-helper/markdown/
にドキュメントが生成されます。例: https://online-judge-tools.github.io/verification-helper/
$ oj-verify docs
ドキュメント生成時に Doxygen 風のコメントが見つかれば、それらは自動で利用されます。
また、TeX 記法の数式 (例: $O(N \sum_i A_i)$
) の MathJax による表示にも対応しています。
より詳しい説明はリファレンスにあります。
- ライブラリを verify するための問題が見つからないときは他の人のライブラリを参考にするとよいでしょう。
online-judge-verify-helper
のユーザの一覧は https://github.com/search?q=online-judge-verify-helper+path%3A.github から見ることができます - ライブラリを verify するための問題がそれでも見つからないときは Library Checker に問題を追加してください。Hello World などをダミーの問題として指定して、自前で書いたストレステストを実行することもできます。
- GitHub Actions から online-judge-verify-helper を呼び出すといった通常想定される利用法においては MIT License に関する著作権表示は要求されません (詳細)
- これはライブラリを効率良く verify するためのツールであり、コードの検査や整形をするためのツールではありません。必要なら clang-format などの formatter や cppcheck などの linter を利用してください
- committer: @kmyk (AtCoder: kimiyuki): pip での配布や online-judge-tools などその他の諸々の担当
- committer: @beet-aizu (AtCoder: beet): verify 機能担当
- committer: @tsutaj (AtCoder: tsutaj): documents 生成担当