查找代码中2个变量/对象之间的链接/关系

时间:2015-03-25 20:29:17

标签: visual-studio ide doxygen code-analysis call-graph

编辑:


我发现doxygen可以为类生成调用图,但我找不到任何选项或示例,其中为类的公共/私有成员(如字段,方法等)生成调用(er)图。 。?请参阅我在下面提供的示例。


是否可以使用某些IDE工具和代码编辑器在代码中找到2个变量/对象之间的链接/关系,即在Visual Studio,Sublime等中。

e.g。

a=func(b,c);
w=func(a,c);

此处wb间接相互关联。

在复杂的代码中,手动查找此类关系非常困难。

我理解某些语言的反思和动态性质会限制这种分析。

2 个答案:

答案 0 :(得分:1)

找到工具和比较列表:

https://github.com/OpenGrok/OpenGrok/wiki/Comparison-with-Similar-Tools

修改


可能在doxygen中,但仅适用于类及其关系

from web


我找到了,这是VS Ultimate中的代码映射:

http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/12/announcing-visual-studio-2015-preview-availability.aspx

Developer can filter link types on Code Map

答案 1 :(得分:1)

您需要提供您要使用的语言。如果我猜测并说C / C ++,您通常可以使用CCTreeCscope来实现此功能。大多数开源开发人员为此目的广泛使用Cscope。

Eclipse CDT也有call graph's。我知道,为了这个目的,在VisualStudio之外工作有点痛苦。但成本是使用开源的部分原因。

为了浏览目的,涵盖所有语言的最佳选择是Exuberant Ctags。这适用于相当数量的编辑和您列出的所有语言。有了这么大的语言和用例列表,可能值得花时间学习vim或emacs以及这里支持的集成。

对于Python,您还可以使用pyscope查看cscope。 Python的另一个很好的替代方案是Rope。 Rope支持将定义和用法作为其标准工具集的一部分。

大多数开发人员不需要CCTree,因为使用cscope浏览代码库相对简单。多年来,我在各种各样的语言中使用了丰富的ctags + emacs。学习需要一点时间,但好处是 它是免费的,便携的,功能强大的。对于某些目标语言,CCTree的另一种替代方法是codegraph