在用rebar构建的项目里,研究了一下dialyzer的使用。发现rebar支持的并不是很友好。在一些情况下会直接报错退出。在工具的使用上,如果没有足够的时间去研究他的源码,则最好寻找最快捷的解决方案。比如用原生的dialyzer命令。简单的使用脚本如下dialyzer.sh
#!/bin/sh
DEPS=./deps
APPS=./apps
function build_plt(){
dialyzer --build_plt \
--apps erts kernel stdlib mnesia crypto sasl xmerl ssl tools syntax_tools \
-r $DEPS $APPS
}
function dialyze(){
dialyzer -r $APPS/android_push_logic \
$APPS/push_server \
$APPS/push_common
}
case "$1" in
dialyze)
dialyze
exit 0
;;
build)
build_plt
exit 0
;;
*)
echo $DIR
echo 'Usage: {dialyze|build}'
;;
esac如果一定要使用rebar提供的方法,则需要在rebar.conf里进行配置{dialyzer,
[
{plt_extra_apps,[your_apps]},
{warnings,[
unmatched_returns,
error_handling,
race_conditions
]}
]}.然后使用的命令行如下./rebar -r build-plt skip_apps=cowboy,mochiweb,cowlib
./rebar -r dialyze skip_apps=cowboy,mochiweb,cowlib又撸了个片子。