hhvm / hhast
一个用于Hack的AST库,包含代码检查和代码迁移功能
v4.168.3
2023-10-31 17:20 UTC
Requires
- hhvm: ^4.168.2
- facebook/difflib: ^1.0.0
- facebook/hh-clilib: ^2.5.0rc1
- hhvm/type-assert: ^4.2.2
Requires (Dev)
- facebook/fbexpect: ^2.8.1
- facebook/hack-codegen: ^4.0
- hhvm/hacktest: ^2.3.0
- hhvm/hhvm-autoload: ^2.0.4|^3.0
- dev-main / 4.x-dev
- v4.168.3
- v4.168.2
- v4.166.3
- v4.166.2
- v4.166.1
- v4.166.0
- v4.161.2
- v4.161.1
- v4.161.0
- v4.158.3
- v4.158.2
- v4.158.1
- v4.158.0
- v4.157.0
- v4.156.0
- v4.139.4
- v4.139.3
- v4.139.2
- v4.139.1
- v4.139.0
- v4.135.1
- v4.135.0
- v4.133.0
- v4.127.1
- v4.127.0
- v4.123.1
- v4.123.0
- v4.113.1
- v4.113.0
- v4.103.2
- v4.103.1
- v4.103.0
- v4.102.0
- v4.101.0
- v4.100.0
- v4.95.2
- v4.95.1
- v4.95.0
- v4.94.0
- v4.92.1
- v4.92.0
- v4.91.0
- v4.88.x-dev
- v4.88.1
- v4.88.0
- v4.84.1
- v4.84.0
- v4.82.x-dev
- v4.82.2
- v4.82.1
- v4.82.0
- v4.80.0
- v4.78.2
- v4.78.1
- v4.78.0
- v4.72.4
- v4.72.3
- v4.72.2
- v4.72.1
- v4.72.0
- v4.64.6
- v4.64.5
- v4.64.4
- v4.64.3
- v4.64.2
- v4.64.1
- v4.64.0
- v4.62.0
- v4.53.4
- 4.53.3
- v4.53.2
- v4.53.1
- v4.53.0
- v4.41.2
- v4.41.1
- v4.41.0
- v4.33.9
- v4.33.8
- v4.33.7
- v4.33.6
- v4.33.5
- v4.33.4
- v4.33.3
- v4.33.2
- v4.33.1
- v4.33.0
- v4.29.x-dev
- v4.29.4
- v4.29.3
- v4.29.2
- v4.29.1
- v4.29.0
- v4.25.x-dev
- v4.25.1
- v4.25.0
- v4.21.10
- v4.21.9
- v4.21.8
- v4.21.7
- v4.21.6
- v4.21.5
- v4.21.4
- v4.21.3
- v4.21.2
- v4.21.1
- v4.21.0
- v4.15.x-dev
- v4.15.5
- v4.15.4
- v4.15.3
- 4.15.2
- v4.15.1
- v4.15.0
- v4.14.4
- v4.14.3
- v4.14.2
- v4.14.1
- v4.14.0
- v4.13.x-dev
- v4.13.2
- v4.13.1
- v4.13.0
- v4.12.x-dev
- v4.12.0
- v4.11.0
- v4.8.1
- v4.8.0
- v4.7.1
- v4.7.0
- v4.6.x-dev
- v4.6.3
- v4.6.2
- v4.6.1
- v4.6.0
- v4.5.x-dev
- v4.5.2
- v4.5.1
- v4.5.0
- v4.3.0
- v4.2.1
- v4.2.0
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.30.0
- v3.29.1
- v3.29.0
- v3.28.7
- v3.28.6
- v3.28.5
- v3.28.4
- v3.28.3
- v3.28.2
- v3.28.1
- v3.28.0
- v3.27.4
- v3.27.3
- v3.27.2
- v3.27.1
- v3.27.0
- v3.26.0
- v1.0.1
- v1.0
- v0.6
- v0.5
- v0.4
- v0.3
- v0.2
- v0.1
This package is auto-updated.
Last update: 2024-08-30 01:44:51 UTC
README
HHAST是处理Hack文件AST的工具包。
抽象语法树可以成为许多工具的强大基础,而不仅仅是编译器和优化;HHAST基于Hack的Full Fidelity Parser(FFP),提供了一种可变AST的Hack对象表示。
与传统AST不同,FFP的AST包括所有'琐碎'内容,例如空白和注释,这使得您可以从AST完全重建文件,或修改AST后创建更新后的文件,保留注释和空白。
HHAST有3个主要API
- 一个用于检查和操作FFP AST的低级库
- 一个包含支持自动修复的代码检查框架
- 一个迁移框架
代码检查器
代码检查器旨在针对主观或风格更改,这些更改不会实质上改变代码的行为,并且可能根据具体情况被拒绝。代码检查错误可以提供建议的修复方案,这可能是基于AST更改的,但不一定必须是。
我们包括了一些代码检查器作为起点,包括
- 不要在循环中使用await
- 方法应该使用->lowerCamelCase(),函数应该使用下划线命名
- 总是使用大括号进行控制流
- 尽可能使用
<<__Override>>
代码检查器既可以交互式使用,也可以无人值守使用。然而,自动修复不支持无人值守,如果存在任何代码检查问题,它将退出非零状态,以便于与CI系统集成。
编辑器和IDE支持
HHAST由以下支持:
- ALE支持Vim 8和neovim
- atom-ide-hhast支持Atom IDE和Nuclide
- vscode-hack支持Visual Studio Code
迁移
- 用户文档
- 大多数代码检查器开发者文档也适用于迁移
迁移适用于您希望在整个代码库中应用的大范围更改,并且通常更复杂。考虑到这一点,迁移框架内置了对多步迁移的支持(与代码检查器不同)。具有AST意识的迁移可以是强大的工具,用于
- 调整语言更改(例如,以下所述的形状更改)
- 用新API替换已弃用的API
- 对代码库进行一般清理
低级AST库
请参阅文档。
许可证
HHAST是MIT许可证。