写点什么

Facebook 新推出 AL 语言,意在简化程序静态分析

  • 2017-06-08
  • 本文字数:933 字

    阅读完需:约 3 分钟

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_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 的一个组成部分,已开源于GitHub 上,适用于C、C++ 和Objective-C。

查看英文原文: Facebook’s New AL Language Aims to Simplify Static Program Analysis

2017-06-08 19:001800
用户头像

发布了 227 篇内容, 共 73.2 次阅读, 收获喜欢 28 次。

关注

评论

发布
暂无评论
发现更多内容

Adobe Creative Cloud(Adobe桌面应用程序ACC)轻松解决各种adobe安装问题

理理

navicat premium mac 中文版 强大数据库管理软件

理理

中石化中海燃供:搭建数智化底座,撑起产业化生态

用友BIP

数据迁移脚本优化过程:从 MySQL 到 Django 模型表

我再BUG界嘎嘎乱杀

Python MySQL 数据库 django

Mac苹果电脑 磁盘诊断和监测工具 DriveDx for mac 兼容m/intel

理理

【论文速读】| LLAMAFUZZ:大语言模型增强的灰盒模糊测试

云起无垠

堡垒机软件详细定义以及部分厂商汇总

行云管家

网络安全 堡垒机

免费看直播体育APP一周内即可上线,无需开发经验!

软件开发-梦幻运营部

工业元宇宙AI超级终端“派中心一体机”问世

科技汇

office2021破解版安装包 mac/win

理理

Beyond Compare 4 文件同步对比(Beyond Compare 4 秘钥)

理理

Microsoft Remote Desktop for mac远程连接 在不同设备之间轻松地共享文件和资源

理理

详解阿里云GPU云服务器的计费规则及管理

Geek_2d6073

Cinema 4D插件:Forester for Cinema4D(C4D花草树木森林植物生成插件) v1.5.4激活版

理理

optical flares插件(镜头光晕耀斑AE插件) V1.3.5中文汉化版

理理

基于 Paimon 的袋鼠云实时湖仓入湖实战剖析

袋鼠云数栈

数据湖 实时计算 实时数据 实时湖仓 paimon

XMind 2024思维导图软件下载安装 xmind绿色破解版资源 Mac/win

理理

用友BIP服务企业构建数智供应链、高效协同

用友BIP

AI+营销丨感知客户、洞察需求,AI打造企业营销新范式

用友BIP

10分钟掌握Python缓存

EquatorCoco

Python 缓存

天命人, 你在吗?快拿走你的《黑神话_悟空》游戏,去开启神话冒险!

极限实验室

征文活动 easysearch 极限科技 黑神话悟空

阿里巴巴1688商品详情API返回值解析:商品信息实时更新与监控

技术冰糖葫芦

API Explorer API boy api 货币化 API 文档

Parallels Desktop 18虚拟机简称PD18 允许mac电脑进行多个操作系统开发和测试

理理

2024连云港等保测评机构看这里!

行云管家

等保 等保测评 连云港

C4D流体模拟插件NextLimit RealFlow 3汉化破解版(mac/win)

理理

Facebook新推出AL语言,意在简化程序静态分析_移动_Sergio De Simone_InfoQ精选文章