Skip to content

基于Rust的Lua静态分析器

背景

在很久之前, emmylualua定义了一套行之有效的静态类型注解系统, 但他功能过于匮乏, 且随着主要开发者的不再活跃, 实际上已经步入了死亡.

他的替代者是 luals, 它解决了大部分emmylua的痛点, 但是, 他的应用层是Lua, 除了所有者外其他人很难读懂全盘代码并为之做出深入的贡献, 且Lua的性能底下(相较于编译型语言)且内存占用巨大, 这使得他在巨型项目中难以应用.

随着而来的是继承了emmylua名称的 emmylua-analyzer-rust, 实际上他与emmylua的关系非常弱, 它是在luals基础上发展而来的, 使用Rust重新实现了一套注解系统, 并提供了更多人性化功能, 这也是我目前的主要开源工作.

现状

主要功能已经实现, 但仍存在一些问题:

  • 在前期为了快速开发, 控制流分析没有按照标准实现, 导致现在必须要对控制流分析器彻底重构

  • 泛型注解系统虽然覆盖常见使用场景, 但仍具有巨大的改进空间

  • 一些人性化细节需要花费大量时间处理