(Visual)C ++项目依赖性分析

时间:2009-07-16 13:12:40

标签: c++ visual-c++ refactoring

我在我的新工作地点有一些大型项目,它们之间有一组复杂的静态链接库依赖项。

libs数量大约为40-50,而且很难确定最初的结构是什么,没有关于完整依赖关系图的明确文档。

有人建议使用哪些工具来提取此类数据?

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

  1. 定义与库单元对应的路径集

  2. 将那些文件中的所有.cpp / .h文件设置为属于那些编译单元

  3. 捕获第一个订单#include依赖关系树

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

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

    我读到了一些关于Doxygen能够通过配置完成一些静态依赖性分析的内容;有没有人曾经将它投入使用以完成这项任务?

6 个答案:

答案 0 :(得分:11)

This link导致:

CppDepend

答案 1 :(得分:4)

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

答案 2 :(得分:3)

此工具非常适合分析包含树:IncludeManager。您应该能够从该工具中获得大量有用的信息。

答案 3 :(得分:2)

IncludeFinder 是我成功使用过的免费工具。

答案 4 :(得分:2)

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

请参阅:http://www.doxys.org

-Martin

答案 5 :(得分:1)

我准备开始使用需要依赖管理的大型c ++项目,所以很自然地我一直在寻找一些工具。我很惊讶地看到CppDepend被标记为最喜欢的,因为单个许可证的成本为300欧元,而IncludeManager的成本为20英镑。并且做同样的工作。如果这里的任何人都使用过其中一种或两种工具,那么为什么我应该为CppDepend花费额外的280英镑(1英镑~1欧元)是“好”的理由?

*请注意,我希望拥有自己的个人副本,因此无论公司是否拥有该副本都无关紧要。