[Erl_Question03]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.

时间: 2024-07-29 18:47:43

[Erl_Question03]Erlang有哪些好用的静态分析工具?的相关文章

一款C++静态分析工具 —— CppDepend

Wrote by mutouyun. (http://darkc.at/cppdepend/) 去年6月份的时候,CppDepend的一位技术社区经理(technical community manager)突然发邮件联系我,赠送了我一份license,并邀请我体验下他们的C++静态分析工具,也就是CppDepend. 在这款软件的官方网站上,我们可以看到使用CppDepend可以帮助我们做些什么: 1. 提高代码质量 2. 可以使用CQLinq来自动化Review代码 3. 帮我们做代码重构

C++代码静态分析工具splint

1.引言 最近在项目中使用了静态程序分析工具PC-Lint, 体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对其他平 台的PC-Lint版本.由于PC-Lint/FlexeLint是商业的程序分析工具,不便于大家对其进行学习和使用,因而下面我将介绍一个针对C语言 的开源程序静态分析工具——splint. 2.静态程序分析 先来说说什么是“静态程序分析(Static program analysis)”,静态

代码静态分析工具--PMD,Findbugs,CheckStyle

最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. PMD 扫描Java源代码,查找潜在的问题,如: 可能的bugs,如空的try/catch/finally/switch声明 死亡的代码,没有使用的本地变量,参数和私有方法 不合标准的代码,如String/StringBuffer用法 过于复杂的表达式,如不必要的if表达式 重复的代码,拷贝.粘贴的代码 FindBugs 它用来查找Java代码中存在的bug.它使用静态分析方法标识出Java程序中上

代码静态分析工具PC-LINT安装配置

代码静态分析工具PC-LINT安装配置--step by step                             作者:ehui928                             2006-5-20 PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器.它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误. C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来

开源静态分析工具androguard体验(二)

逆向分析dex的话,个人还是比较中意VTS,JEB(穷人买不起),IDA等.之前有尝试使用过androguard,感觉还是不咋习惯,虽然基于其基础上演变的一些项目挺有吸引力.不过作为项目的基础,androguard确实再适合不过了.至少静态分析很多功能直接调用或者在其上修改效果倒是事半功倍.也正因为这个目的,才有了第二篇体验. 其实官网的wiki写的很详细了,包括一些使用方法,api参考,都挺丰富的.但是官网提供的demo不多,我觉得通过对androlyze.py的一些常见功能的使用,可以帮助我

代码静态分析工具

今天在haskell群里请教问题时,某巨说我需要hlint,然而我并不知道hlint是什么鬼. (haskell linter) 也就是haskell的代码静态分析工具.并不会对代码进行编译,只是会给出一些tips.可以帮助代码变得 strong,safe and so on. 然后出于好奇,便找了一个cpplinter, google用python写的一个工具.可以对c++进行静态分析. 这边有篇不错的文章可以借鉴.传送门

开源静态分析工具androguard体验

原文链接:http://blog.csdn.net/xbalien29/article/details/21885297 虽然在windows端免费版的IDA.VTS等工具都可用来静态分析,但相对来说这些工具用来人工分析在合适不过,但对于项目开发,相对来说都忽视很好扩展.而在androguard却很适合进行扩展或者移植成为自己项目的某一模块,虽然早有耳闻,但也最近才动手体验几把.当然,androguard也被很多人再次开发过了,包括一些提供上传入口的检测网站,静态分析部分感觉都有使用该模块,很多

C++ 代码静态分析工具cppcheck

C++ 代码静态分析工具cppcheck Author:Echo Chen(陈斌) Email:[email protected] Blog:Blog.csdn.net/chen19870707 Date:Jan.1st , 2015 近来游戏进入尾期,已上线运营,需求比较少,可以有时间整理优化下代码,但是优化如果没有一个标准,很难有一个实际的效果,所以先从简单的代码静态分析开始,找了许多代码静态检查的工具,splint,pclint.purify,infusion.cppcheck等,但cpp

代码缺陷静态分析工具FindBugs插件安装使用图解

1.     FindBugs介绍 FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析,去发现许多代码中间潜在的bug,比较典型的,如引用了空指针(nullpointer dereference), 特定的资源(db connection)未关闭,等等.如果用人工检查的方式,这些bug可能很难才会被发现,或许永远也无法发现,直到运行时发作- 这就是FindBugs存在的价值