Erlangのcommon testでcoverageをとろうとしてあまりにも初歩的なハマリ
要するにerlcでcoverageを取るための情報を付与したいのだが、そのオプションが分からずハマった。
erlのプロンプトからは、
1> compile:file(File, [debug_info]).
すればいいことはすぐ分かったのだが、erlcコマンドを使ってMakefileに書きたいではないか。単純に-dのオプションを渡すと、erlc自体がデバッグモードになってしまう。
この場合、debug_infoのオプションを渡すために +xxxx というコマンドラインオプションを指定すればいいということに気づくのに2,3時間かかった。
で、「プログラミングErlang」のサンプルMakefileをベースにするとこんな感じだろうか。
.SUFFIXES: .erl .beam .yrl .erl.beam: erlc -W +debug_info $< (中略) MODS = project all: compile compile: ${MODS:%=%.beam} ct: compile cp *.beam ./test /パス/run_test -dir . -logdir ./logs -cover ./config/project.coverspec
./config/project.coverspecは、Erlang Common Test の Code Coverage Analysis 便利! - Higepon’s blogのところを参考にして、本家ドキュメントのサンプルを大幅に簡素化すればよろし(手抜き)
%% Cover analysis level. %% Level = details | overview {level, details}. %% Specific modules to include in cover. %% Mods = [atom()] {incl_mods, [target_module]}