Slack 开源 Hack 语言的类型检查工具 Hakana

Slack 开源类型检查工具 Hakana

Slack 最近开源了其类型检查工具 Hakana。Hakana 基于 Psalm 并使用 Rust 编写,主要目标是确保代码质量,同时还能进行安全分析。

Hakana 的背景与开发

Slack 的高级工程师 Matt Brown 在一篇博客文章中宣布了这一消息。类型安全性指的是语言工具在代码执行时帮助防止类型错误的能力。Slack 从 PHP 迁移到 Hack 后,需要使用比默认 PHP 类型检查器更严格的工具,因此去年开始内部开发 Hakana。

Hakana 的主要功能

Hakana 目前已在 Slack 内部使用,主要功能包括:

  • 防止未使用的函数和私有方法
  • 防止闭包中未使用的赋值
  • 检测不可能和冗余的类型检查
  • 警告团队潜在的 SQL 注入攻击和跨站脚本漏洞
  • 防止内部 Slack API 的误用

安全分析

Hakana 的安全分析基于 Psalm,通过分析代码库中函数之间的数据流动,验证攻击者控制的数据是否会出现在不期望的位置。Hakana 使用过程间分析,通过在函数边界检查类型来检测 SQL 注入。

社区反应与互动

Reddit 上的技术社区对这一公告表示关注。Brown 通过 Reddit 帖子与用户互动,解释了继续使用 Hack 的决定,并回答了一些关于开发进度的问题。

Zend 2023 PHP 调查报告

Zend 2023 PHP 调查报告指出,46% 的受访者将其 PHP 应用部署在 AWS 上,本地部署同比下降超过 10%。调查期间(2022年10月至12月),PHP 7.4 是最常用的版本,尽管它在2022年11月已停止支持。

Hakana 的性能与扩展性

Hakana 的运行速度比 Psalm 快五倍,这对于拥有约500万行代码的 Slack 代码库非常理想。Brown 还提到,Hakana 可以通过插件扩展,例如 Slack 使用自定义插件来通知 Hakana,其内部 Result 对象的方法调用 $some_result->is_ok() 类似于更复杂的 $some_result is ResultSuccess<_> 类型检查。

开源的意义

尽管使用 Hack 语言的组织非常少,但将 Hakana 开源可能对更广泛的编程语言社区有价值。由于 Hakana 基于 Psalm 构建,开源也可以视为对社区的回馈。

阅读 44
0 条评论