基于Rust的Lua静态分析器
背景
在很久之前, emmylua
为lua
定义了一套行之有效的静态类型注解系统, 但他功能过于匮乏, 且随着主要开发者的不再活跃, 实际上已经步入了死亡.
他的替代者是 luals, 它解决了大部分emmylua
的痛点, 但是, 他的应用层是Lua
, 除了所有者外其他人很难读懂全盘代码并为之做出深入的贡献, 且Lua
的性能底下(相较于编译型语言)且内存占用巨大, 这使得他在巨型项目中难以应用.
随着而来的是继承了emmylua
名称的 emmylua-analyzer-rust, 实际上他与emmylua
的关系非常弱, 它是在luals
基础上发展而来的, 使用Rust
重新实现了一套注解系统, 并提供了更多人性化功能, 这也是我目前的主要开源工作.
现状
主要功能已经实现, 但仍存在一些问题:
在前期为了快速开发, 控制流分析没有按照标准实现, 导致现在必须要对控制流分析器彻底重构
泛型注解系统虽然覆盖常见使用场景, 但仍具有巨大的改进空间
一些人性化细节需要花费大量时间处理