【问题标题】:Ignore includes with #pycparser and define multiple Subgraphs in #pydot忽略 #pycparser 包含并在 #pydot 中定义多个子图
【发布时间】:2013-01-28 18:30:47
【问题描述】:

我是 stackoverflow 的新手,但到目前为止我得到了很多帮助,感谢社区的帮助。

我正在尝试创建一个软件,向我展示遗留代码的调用者依赖关系。

我用 pycparcer 用 c 代码解析一个目录,并且对于每个文件我想用 pydot 创建一个子图。

两个问题:

  1. 在解析 c 文件时,解析器会从包含的文件中引用 #include,这是我的 AST 中的一个函数。我怎么知道该函数是否包含在内,或者来自这个实际文件/或忽略#includes??

  2. 对于我想要创建一个子图的每个文件,然后将此文件中的所有函数添加到此子图中。我不知道我要创建多少个子图...

我有一组文件,其中每个文件都是具有该文件功能的冻结集 这样的事情可能吗?

    for files in SetOfFiles:
        #how to create subgraph with name of files?

        for function in files:
            self.graph.add_node(pydot.Node(funktion))  #--> add node to subgraph "files"

希望你能接受我的挑战...有什么想法吗?

谢谢!

编辑:

我解决了关于 pydot 的问题,这很容易......所以我继续解决我的 pycparser 问题:(

    for files in ListOfFuncs:
        cluster_x = pydot.Cluster(files, label=files)

        for functions in files:
            cluster_x.add_node(pydot.Node(functions))

        graph.add_subgraph(cluster_x)          

【问题讨论】:

    标签: pydot pycparser


    【解决方案1】:

    我可以解决 pycparser 部分。预处理器留下 #line 指令来指定哪个文件和行代码来了,pycparser 使用这些指令。您可以从它创建的 AST 中获取该信息(参见测试示例)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 2018-05-24
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2011-03-20
      相关资源
      最近更新 更多