博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Facebook新推出AL语言,意在简化程序静态分析
阅读量:6208 次
发布时间:2019-06-21

本文共 1221 字,大约阅读时间需要 4 分钟。

是一种易用的声明式编程语言,适用于抽象语法树(AST)推理,使开发人员可以扩展静态分析器的功能。

\\

采用OCaml编写,可标识Null指针访问、资源和内存泄漏,以及其它一些C、Java和Objective-C代码中的。据Facebook介绍,在他们的iOS和Android移动应用中,80%的软件缺陷是由Infer正确地检测出的。

\\

AL易于扩展,这克服了一个局限Infer的问题。实现扩展不仅需要具备静态分析的专门技能验,而且需要掌握Infer的内部机制。具体而言,AL意在简化对过程内(Intra-procedural)软件缺陷新类型分析程序(Checker)的定义,即局限于过程代码内的软件缺陷。这类软件缺陷可使用更简单的分析手段检测到,包括借助于程序语法、通用语言习语和自定义约定。举个例子,在Objective-C中,为避免存留环路,对象的通常不应做为。针对需求的分析程序可使用AL定义为:

\\
\DEFINE-CHECKER STRONG_DELEGATE_WARNING = {\    LET name_contains_delegate =     \        declaration_has_name(REGEXP(\"[dD]elegate\"));\    SET report_when =\        WHEN\           name_contains_delegate \           AND is_strong_property()\        HOLDS-IN-NODE ObjCPropertyDecl;\    SET message = \"Property or ivar %decl_name% declared strong\";\    SET suggestion = \"In general delegates should be declared weak or assign\";\  };\
\\

在上面的AL代码中,亮点在report_when语句。该语句在ObjCPropertyDecl对象上定义了一个条件,声明为一个strong引用(is_strong_property)。ObjCPropertyDecl对象就是关联到Objective-C属性定义的AST节点。

\\

据Facebook介绍,通常使用数行AL代码就能新定义一个分析程序,并可立即投入使用,无需重新构建Infer,确保了对新分析程序的快速反馈。AL还支持定义基于模型的更复杂公式,其中一个AST节点可关联到时间上某一点,其所有的后代节点均看作是未来可验证的。例如,为保证程序的正确性,HOLDS-EVENTUALLY所关联的表达式可在未来某个时间点上得以验证。

\\

AL是Infer的一个组成部分,,适用于C、C++和Objective-C。

\\

查看英文原文:

转载地址:http://rhzja.baihongyu.com/

你可能感兴趣的文章
CentOS多网卡重命名配置
查看>>
变态青蛙跳
查看>>
Git常用命令总结
查看>>
定时任务
查看>>
MyBatis之输入与输出(resultType、resultMap)映射
查看>>
剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?
查看>>
51、YUM安装配置LAMP、phpMyAdmin实战
查看>>
Yeslab现任明教教主ISE课程前七部分免费发布
查看>>
linux下恢复误删文件
查看>>
Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...
查看>>
RAID的肤浅认识
查看>>
poxtfix+dovecot+saslauthd+courier-authlib +mysql + extmail 完整虚拟邮箱系统部署
查看>>
Erlang并发机制 –进程调度
查看>>
XEN--转载自鸟哥的linux私房菜
查看>>
我的第一程序语言python
查看>>
DHCP服务开启了,为什么老是网络冲突
查看>>
跳出多重循环 JS
查看>>
MySql 自动更新时间为当前时间
查看>>
Configuring Aggregated Ethernet Interfaces
查看>>
我的友情链接
查看>>