Facebook新推出AL语言,意在简化程序静态分析
AL是一种易用的声明式编程语言,适用于抽象语法树(AST)推理,使开发人员可以扩展Facebook Infer静态分析器的功能。Infer采用OCaml编写,可标识Null指针访问、资源和内存泄漏,以及其它一些C、Java和Objective-C代码中的可检测错误。据Facebook介绍,在他们的iOS和Android移动应用中,80%的软件缺陷是由Infer正确地检测出的。 AL易于扩展,这克服了一个局限Infer的问题。实现扩展不仅需要具备静态分析的专门技能验,而且需要掌握Infer的内部机制。具体而言,AL意在简化对过程内(Intra-procedural)软件缺陷新类型分析程序(Checker)的定义,即局限于过程代码内的软件缺陷。这类软件缺陷可使用更简单的分析手段检测到,包括借助于程序语法、通用语言习语和自定义约定。举个例子,在Objective-C中,为避免存留环路,对象的delegate通常不应做为strong引用。针对需求的分析程序可使用AL定义为: DEFINE-CHECKER STRONG_DELEGATE_WARNING = { LET name_contains...
