高级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