高级AST验证
项目描述
astvalidate
一组用于验证给定抽象语法树完整性的AST验证器。
API
validate(tree: ast.Module, level: Optional[Literal[1, 2, 3]] = None) -> bool
tree 是您想要验证的AST对象。 level 是传递严格程度参数的选项,可以开启/关闭一些验证器。有关验证器的详细列表,请参阅下表
| 验证器 | 级别 | 描述 |
|---|---|---|
| 语法 | 1 | 模拟编译器通常生成的语法警告。 |
| 简单 | 1 | 进行简单验证,类似于 PyAST_Validate 接口。 |
| 符号 | 2 | 模拟符号表通常生成的语法错误。 |
| 上下文 | 3 | 确保一切都在正确的上下文中。 |
如果有任何错误, validate() 将在目标节点的位置引发 SyntaxError 或发出 SyntaxWarnings。
import ast
import astvalidate
tree = ast.parse("""
def func():
raise ValueError from something
""")
tree.body[0].body[0].exc = None
assert astvalidate.validate(tree)
File "<string>", line 3
SyntaxError: Raise's cause can't be used without setting an exception