(Visual)C++项目依赖关系分析

问题描述:

我有一些大型项目正在我的新工作场所工作,它们之间有一组复杂的静态链接库依赖关系。(Visual)C++项目依赖关系分析

库的数量在40-50左右,很难确定结构最初是什么意思,在完整的依赖关系图上没有明确的文档。

有人会推荐哪些工具来提取这些数据?

据推测,在最简单的方式中,如果做了以下:

  1. 定义组路径对应于库单元

  2. 集合中的所有的.cpp/h文件内的那些属于这些编译单元

  3. 捕获一阶的#include依赖关系树

一个人将有足够的信息来组成地图 - 重构 - 并重新构图,直到创建了一些订单。

我注意到,http://www.ndepend.com有一些不错的东西,但这不过是纯粹的.NET。

我看了一些关于Doxygen能够用配置完成一些静态依赖关系分析的东西;有没有人把它变成服务来完成这样的任务?

This link导致:

CppDepend

+0

现在,这就是我一直在寻找。我感到嫉妒NDepend产品可以做什么。 然而,它确实是我们需要维护的传统C++的高峰,这是最迫切需要这种工具的。 – 2009-07-16 17:07:09

+2

嗯......也许我很密集,但似乎CppDepend(2.8.5)不允许查看文件依赖关系(#include dependency)。它确实显示了丰富的信息,但“仅”在项目+课堂级别上。 – 2011-09-01 05:30:15

这个工具是极好的分析包括树:IncludeManager。您应该能够从该工具获得大量有用的信息。

+0

那里有死者的链接。 – 2018-01-26 14:46:13

IncludeFinder是我以前使用过的免费工具。

+0

谢谢,它看起来有点过时,但有几个人提到它,所以它一定在一个阶段有鼎盛时期。 :) – 2009-07-16 17:06:17

+1

因为它有源代码,所以我可以做一些小修改以适应我的直接需求。但是,它不闪亮;) – peterchen 2009-07-16 19:58:27

我将开始使用需要依赖管理的大规模C++项目,所以自然我一直在环顾一些工具。我很惊讶地看到CppDepend被标记为最喜欢的,因为单个许可证的成本是300欧元,而IncludeManager是20英镑。并且完成同样的工作。为了防止任何人使用这两种工具中的任何一种或两种工具,为什么我应该为CppDepend花费额外的280英镑(1英镑到1欧元),是否有“好”的理由?

*请注意,我想拥有自己的个人副本,因此公司是否拥有它是无关紧要的。

http://github.com/yuzhichang/cppdep可能是你想要的。 我编写它来分析大型C/C++项目的组件/包/包组之间的依赖关系。 这是由John Lakos的书“大型C++软件设计”提供的dep_utils(adep/cdep/ldep)的重写。

您可能可以使用DoxyS作为帮助,它可以生成代表包含文件的Graps作为生成文档的一部分。

参见:http://www.doxys.org

-Martin