Skip to content

Latest commit

 

History

History
80 lines (52 loc) · 5.96 KB

README.ja.md

File metadata and controls

80 lines (52 loc) · 5.96 KB

online-judge-tools/verification-helper

Actions Status GitHub Pages PyPI LICENSE

README in English

なにこれ

競プロライブラリの verify をお手軽に自動化するためのツールです。

使い方

競プロライブラリのリポジトリに設定する

これ読んで: https://online-judge-tools.github.io/verification-helper/installer.ja.html

手元で実行する

インストール

$ pip3 install online-judge-verify-helper

Python のバージョンは 3.8 以上が必要です。

verify 自動実行

拡張子の前に .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 の自動展開

与えられたファイル中の #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/ GitHub Pages

$ oj-verify docs

ドキュメント生成時に Doxygen 風のコメントが見つかれば、それらは自動で利用されます。 また、TeX 記法の数式 (例: $O(N \sum_i A_i)$) の MathJax による表示にも対応しています。 より詳しい説明はリファレンスにあります。

Tips

  • ライブラリを 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 を利用してください

Authors