【问题标题】:How to do Code Analysis for Python Inheritance? [closed]如何对 Python 继承进行代码分析? [关闭]
【发布时间】:2020-04-08 22:06:32
【问题描述】:

我正在寻找几天来获取类层次结构,例如任何类的超类和子类(以及文件路径和行号,方法覆盖引用),例如项目的代码分析。与 PyCharm 编辑器具有相同的功能。如果有人可以指导我如何实现这一目标,那将是一个很大的帮助

【问题讨论】:

  • 你的意思是你想要一些图书馆/软件?这在 StackOverflow 上是特别离题的。无论如何,这听起来像 PyCharm 为你做的?
  • @barny 我想要一些库来为此创建 vscode 扩展
  • 在 StackOverflow 上请求库是非常具体的题外话 - 这就是我投票结束这个问题的原因。

标签: python code-analysis static-analysis


【解决方案1】:

如果你想在 Python 上运行某种代码分析,首先你应该记住 Python 是一种动态类型语言,这意味着类型是推断出来的。

在 Python 中,一切都是object。这意味着你所有的类定义也是objects。您可以使用 ast module 将任何源文件 (.py) 解析为抽象语法树。在这个 AST 中,您将能够看到 names 之间的关系。但是,请记住 ast 模块是 intraprocedural ,这意味着如果要构建复杂的过程间代码分析,则需要做一些繁重的工作,特别是在解决别名时问题,在无数其他事情中。再说一次,你永远不会知道 ast 中每个 name 的类型。

如果您深入研究此任务,您应该扩展 ast 模块以实现您自己的NodeVisitor,该类将在您的 AST 的每个节点中执行一些例程。查看更多信息here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多