hhvm/hhast

一个用于Hack的AST库,包含代码检查和代码迁移功能

维护者

详细信息

github.com/hhvm/hhast

源代码

问题

安装次数: 978,230

依赖项: 71

建议者: 0

安全: 0

星标: 67

关注者: 23

分支: 42

开放问题: 40

语言:Hack

v4.168.3 2023-10-31 17:20 UTC

This package is auto-updated.

Last update: 2024-08-30 01:44:51 UTC


README

Continuous Integration

HHAST是处理Hack文件AST的工具包。

抽象语法树可以成为许多工具的强大基础,而不仅仅是编译器和优化;HHAST基于Hack的Full Fidelity Parser(FFP),提供了一种可变AST的Hack对象表示。

与传统AST不同,FFP的AST包括所有'琐碎'内容,例如空白和注释,这使得您可以从AST完全重建文件,或修改AST后创建更新后的文件,保留注释和空白。

HHAST有3个主要API

  • 一个用于检查和操作FFP AST的低级库
  • 一个包含支持自动修复的代码检查框架
  • 一个迁移框架

代码检查器

screenshot of lint errors

代码检查器旨在针对主观或风格更改,这些更改不会实质上改变代码的行为,并且可能根据具体情况被拒绝。代码检查错误可以提供建议的修复方案,这可能是基于AST更改的,但不一定必须是。

我们包括了一些代码检查器作为起点,包括

  • 不要在循环中使用await
  • 方法应该使用->lowerCamelCase(),函数应该使用下划线命名
  • 总是使用大括号进行控制流
  • 尽可能使用<<__Override>>

代码检查器既可以交互式使用,也可以无人值守使用。然而,自动修复不支持无人值守,如果存在任何代码检查问题,它将退出非零状态,以便于与CI系统集成。

编辑器和IDE支持

screenshot of lint errors in VSCode

HHAST由以下支持:

迁移

screenshot of a migration

迁移适用于您希望在整个代码库中应用的大范围更改,并且通常更复杂。考虑到这一点,迁移框架内置了对多步迁移的支持(与代码检查器不同)。具有AST意识的迁移可以是强大的工具,用于

  • 调整语言更改(例如,以下所述的形状更改)
  • 用新API替换已弃用的API
  • 对代码库进行一般清理

低级AST库

请参阅文档

许可证

HHAST是MIT许可证。