在不执行代码的情况下获取Python函数的完全限定名称

时间:2018-05-19 20:42:38

标签: python python-3.x abstract-syntax-tree static-analysis

我正在编写一个库来帮助我可视化我自己代码的一些指标。这导致我需要在我正在分析的代码中使用任何函数调用的完全限定名称。

我曾希望使用Python的AST模块为我提供此功能。如果我走树,它确实为任何导入和别名提供节点,它确实提供了实际函数调用的节点。

但是,尝试从这些节点构建完全限定名称并不是一件容易的事,我怀疑它会处理所有情况。我该怎么做呢? (我的IDE支持Go To Definition,所以我知道这是可能的。)

这是函数调用节点的漂亮图,注意名称不是全名:

Call(func=Name(id='fib', ctx=Load()), args=[
    Num(n=100),
  ], keywords=[])

0 个答案:

没有答案