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 构建,开源也可以视为对社区的回馈。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。