我是stackoverflow的新手,但到目前为止我得到了很多帮助,感谢社区。 p>
我正在尝试创建一个软件,向我显示调用者depandencys for legacycode。
我使用pycparcer解析带有c代码的目录,并且对于每个文件,我想用pydot创建一个子图。
两个问题:
解析c文件时,解析器从包含的文件中引用#includes,我的AST中也有函数。我怎么知道,如果包含该功能,或者原始来自这个实际文件/或忽略#includes ??
对于我想要创建子图的每个文件,然后将此文件中的所有函数添加到此子图中。我不知道我要创建多少个子图...
我有一组文件,其中每个文件都是具有此文件功能的冻结集 这样的事情是不可能的?
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)
答案 0 :(得分:0)
我可以解决pycparser部分问题。预处理器留下#line
指令,指定哪个文件&行代码来了,pycparser消耗了这些代码。您可以从它创建的AST中获取该信息(请参阅测试示例)。