[Erlang03]Erlang有哪些好用的静态分析工具?

介绍了Erlang语言中的Dialyzer静态分析工具,包括其工作原理、使用步骤及为何需要此工具等内容。
1. dialyzer

  Dialyzer starts its analysis from either debug-compiled BEAM bytecode or from Erlang source code.

  Dialyzer 可以分析*.erl和有debug-info的BEAM, Dialyzer提供GUICommand Line两种模式,推荐使用command line模式.

  使用步骤:

   1.1 设置PLT(Persitent Lookup Table),用于存放分析结果,推荐建立PLT加入OTP Applications 和你经常使用的Applications时

   最少的PLT路径应该是这样的:

dialyzer --build_plt -r $ERL_TOP/lib/stdlib/ebin\
                            $ERL_TOP/lib/kernel/ebin \
                            $ERL_TOP/lib/mnesia/ebin

   Dialyzer 会把PLT放在一个$DIALYZER_PLT目录下,如果找不到,就会入在$HOME/.dialyzer_plt 这个路径也可以用—plt 或—output_plt 选项设置。

  1.2 分析命令:

%% 可以分析单个文件,目录下文件,或一个Applications
>dialyzer test.erl
>dialyzer  -r Dir
>dialyzer -apps Applications

1.3 为什么会需要这个工具?

   Erlang不是一个强类型语言,所以基本上编译时不会像c++那样去严格检查函数的输入输出类型啊,这带来的好处就是:

foo(X) when is_integer(X) -> X + 1.
foo(X) -> list_to_atom(X).

以上这个例子在其它强类型语言也可以实现,但是总是要自己去骗下编译器,说这个能过什么的!!!但是erlang这样写函数是很正常的行为,这也是动态编译带来的好处之一,

通常的analyzers会尽量保证在运行期间也不会出错,如果Erlang也这样做,就会change it semantics.  两都不可兼得啊!

于是,就有了团队开发了dialyzer,于是世界和平啦…….

 

2 coverage

    Todo.悲伤

转载于:https://www.cnblogs.com/zhongwencool/p/3719388.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值