[Erlang03]Erlang有哪些好用的静态分析工具?
1. dialyzer
Dialyzer starts its analysis from either debug-compiled BEAM bytecode or from Erlang source code.
Dialyzer 可以分析*.erl和有debug-info的BEAM, Dialyzer提供GUI和Command 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.
[Erlang03]Erlang有哪些好用的静态分析工具?的更多相关文章
- 代码静态分析工具--PMD,Findbugs,CheckStyle
最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. PMD 扫描Java源代码,查找潜在的问题,如: 可能的bugs,如空的try/catch/final ...
- 代码静态分析工具——splint的学习与使用
引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对其他平 ...
- Analyze 静态分析工具中显示 大量的CF类型指针 内存leak 问题, Core Foundation 类型指针内存泄漏
Analyze 静态分析工具中显示 大量的CF类型指针 内存leak 问题 今天使用Analyze 看了下项目, 解决办法,项目中使用了ARC,OC的指针类型我们完全不考虑release的问题 ...
- 一款C++静态分析工具 —— CppDepend
Wrote by mutouyun. (http://darkc.at/cppdepend/) 去年6月份的时候,CppDepend的一位技术社区经理(technical community mana ...
- 代码静态分析工具PC-LINT安装配置
代码静态分析工具PC-LINT安装配置--step by step 作者:ehui928 ...
- Jenkins集成源码静态分析工具
1.static code analysis插件说明 Jenkins提供了插件"static code analysis",该插件搜集不同的分析结果,并集合显示出来. 实际上,我们 ...
- C++代码静态分析工具splint
1.引言 最近在项目中使用了静态程序分析工具PC-Lint, 体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对 ...
- 开源静态分析工具androguard体验
原文链接:http://blog.csdn.net/xbalien29/article/details/21885297 虽然在windows端免费版的IDA.VTS等工具都可用来静态分析,但相对来说 ...
- 逆向中静态分析工具——IDA初学者笔记之字符串分析
逆向中静态分析工具——IDA初学者笔记之字符串分析 程序中往往包含很多字符串资源,这些资源存在于PE文件的rdata段,使用IDA反编译后,可以查找到这些字符串, 逆向破解程序通常需要一个突破点,而这 ...
随机推荐
- git账户的存储
在使用git时,使用git pull,或git push,每次都要我输入用户名和密码,比较麻烦.git有个参数可以解决这个问题. 修改./git/config文件,增加 [credential] he ...
- 对称加密——对入参进行DES加密处理
体验更优排版请移步原文:http://blog.kwin.wang/programming/symmetric-encryption-des-js-java.html 对称加密是最快速.最简单的一种加 ...
- multiprocessing.dummy
昨晚发现放在腾讯云主机上通过crontab定时执行用以爬去斗鱼分类页面数据的爬虫在执行的时候速度特别慢,于是想通过多线程来提高效率. 打开浏览器,键入关键字"python 多线程" ...
- An Intuitive Explanation of Fourier Theory
Reprinted from: http://cns-alumni.bu.edu/~slehar/fourier/fourier.html An Intuitive Explanation of Fo ...
- 不同应用场景的10个Linux面试问题与解答
本文由 极客范 - 小道空空 翻译自 Avishek Kumar.欢迎加入极客翻译小组,同我们一道翻译与分享.转载请参见文章末尾处的要求. 这一次我们不再介绍某个特定主题的Linux面试问题,而是随机 ...
- linux服务器中Apache隐藏index.php失败
可以通过URL重写隐藏应用的入口文件index.php,下面是相关服务器的配置参考: [Apache] httpd.conf配置文件中加载了mod_rewrite.so模块 AllowOverride ...
- css常用属性总结之 id和class的区别,使用类还是ID?
前面两篇文章我们分别谈到了class和id的相关知识和如何使用,但是在实际项目中,我们该如何抉择,class还是id? 先回顾下两者的区别吧! 1.id具有唯一性,class具有普遍性,所以一个页面同 ...
- Go语言的基本类型转换-golang类型转换
简单整理一下Golang的基本类型转换,作为备忘: 1.整形到字符串: var i int = 1 var s string 3. s = strconv.Itoa(i) 或者 s = Format ...
- go反射实例
需求分析: 如在rocketmq的网络通信中,所有通信数据包以如下形式传输: (注:rocketmq的java结构体,这里使用了go形式表示) type RemotingCommand struct ...
- 一道面试题Lintcode196-Find the Missing Number
http://www.lintcode.com/en/problem/find-the-missing-number/# Find the Missing Number Given an array ...