verification-helper

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub online-judge-tools/verification-helper

Online Judge Verification Helper の細かい仕様

English Version

対応している言語

一覧表:

言語 認識される拡張子 テストファイルだと認識されるパターン 属性の指定方法 対応機能 (verify / bundle / doc) ファイル例
C++ .cpp .hpp .test.cpp #define [KEY] [VALUE] :heavy_check_mark: / :heavy_check_mark: / :heavy_check_mark: segment_tree.range_sum_query.test.cpp
C# script .csx .test.csx // verification-helper: [KEY] [VALUE] :heavy_check_mark: / :x: / :heavy_check_mark: segment_tree.range_sum_query.test.csx
Nim .nim _test.nim # verification-helper: [KEY] [VALUE] :heavy_check_mark: / :x: / :heavy_check_mark: union_find_tree_yosupo_test.nim
Python 3 .py .test.py # verification-helper: [KEY] [VALUE] :heavy_check_mark: / :x: / :heavy_check_mark: union_find_yosupo.test.py
Haskell .hs .test.hs -- verification-helper: [KEY] [VALUE] :heavy_check_mark: / :x: / :warning: HelloWorld.test.hs
Ruby .rb .test.rb # verification-helper: [KEY] [VALUE] :heavy_check_mark: / :x: / :warning: hello_world.test.rb
Go .go .test.go // verification-helper: [KEY] [VALUE] :heavy_check_mark: / :x: / :warning: helloworld.test.go
Java .java _test.java // verification-helper: [KEY] [VALUE] :heavy_check_mark: / :x: / :warning: HelloWorld_test.java
Rust .rs 特殊 // verification-helper: [KEY] [VALUE] :heavy_check_mark: / :x: / :warning: itp1-1-a.rs

C++ の設定

.verify-helper/config.toml というファイルを作って以下のように設定を書くと、コンパイラやそのオプションを指定できます。 設定がない場合は、自動でコンパイラ (g++clang++) を検出し、おすすめのオプションを用いて実行されます。

[[languages.cpp.environments]]
CXX = "g++"

[[languages.cpp.environments]]
CXX = "clang++"
CXXFLAGS = ["-std=c++17", "-Wall", "-g", "-fsanitize=undefined", "-D_GLIBCXX_DEBUG"]

C# script の設定

設定項目はありません。 コンパイラには .NET Core が使われます。

Nim の設定

.verify-helper/config.toml というファイルを作って以下のように設定を書くと、コンパイルの際に変換する言語 (例: c, cpp) やそのオプションを指定できます。 設定がない場合は AtCoder でのオプションに近いおすすめのオプションが指定されます。

[[languages.nim.environments]]
compile_to = "c"

[[languages.nim.environments]]
compile_to = "cpp"
NIMFLAGS = ["--warning:on", "--opt:none"]

Python 3 の設定

設定項目は特にありません。

Rust の設定

binary ターゲットexample ターゲット (ただしcrate-typeが指定されているのは除く) の root source file のうち、PROBLEMが設定されてあるソースファイルがテストファイルだと認識されます。

依存ファイルを列挙する動作は .verify-helper/config.tomllanguages.rust.list_dependencies_backend で変更できます。

その他の言語の設定

上記以外の言語でも実行可能です (例: examples/awk/circle.test.awk)。 .verify-helper/config.toml というファイルを作って、以下のようにコンパイルや実行のためのコマンドを書いてください (例: .verify-helper/config.toml)。 compileexecute のフィールドは必須で、その他は省略可能です。

[languages.awk]
compile = "bash -c 'echo hello > {tempdir}/hello'"
execute = "env AWKPATH={basedir} awk -f {path}"
bundle = "false"
list_dependencies = "sed 's/^@include \"\\(.*\\)\"$/\\1/ ; t ; d' {path}"
verification_file_suffix = ".test.sed"

verify 自動実行

対応サービス一覧

サービス名 備考
Library Checker  
Aizu Online Judge  
HackerRank  
AtCoder 環境変数 DROPBOX_TOKEN の設定が必要です。token の値は $ oj d --system https://atcoder.jp/contests/agc001/tasks/agc001_a として表示されるヒントに従って取得してください。
yukicoder 環境変数 YUKICODER_TOKEN の設定が必要です。ヘルプ - yukicoder の「ログインしてないと使えない機能をAPIとして使いたい」の節や 暗号化されたシークレットの作成と利用 - GitHub ヘルプ 参考にして設定してください。

これらの他サービスはテストケースを利用できる形で公開してくれていないため利用できません。

利用可能な属性

変数名 説明 備考
PROBLEM 提出する問題の URL を指定します 必須
IGNORE これが定義されていれば verify は実行されません #ifdef __clang__ などで囲った中で指定することで特定の状況下でのみ実行を抑制することができます
ERROR 許容誤差を指定します  

ドキュメント生成

ソースコードのページへの Markdown の埋め込み

リポジトリ内に Markdown ファイルを置いておくと自動で認識されます。 Front Matter 形式で documentation_of という項目にファイルを指定しておくと、指定したファイルについての生成されたドキュメント中に、Markdown ファイルの中身が挿入されます。

たとえば、path/to/segment_tree.hpp というファイルに説明を Markdown で追加したいときは for/bar.md などに次のように書きます。

---
title: Segment Tree
documentation_of: ./path/to/segment_tree.hpp
---

## 説明

このファイルでは、……

documentation_of 文字列は、./ あるいは .. から始まる場合は Markdown ファイルのパスからの相対パスであると認識されます。また、// から始まる場合は .verify-helper ディレクトリがある場所をルートとする絶対パスであると認識されます。 また、ディレクトリ区切り文字には / を使い、大文字小文字を正しく入力してください。

トップページへの Markdown の埋め込み

.verify-helper/docs/index.md というファイルを作って、そこに Markdown で書いてください。

ローカル実行

.verify-helper/markdown/ ディレクトリ内で以下のようにコマンドを実行すると、生成されたドキュメントが http://localhost:4000/ から確認できます。

$ bundle install --path .vendor/bundle
$ bundle exec jekyll serve

ただし Ruby の Bundler が必要です。 これは Ubuntu であれば sudo apt install ruby-bundler などでインストールできます。

その他の仕様