(Visual) C++ project dependency analysis

2020-05-15 13:19发布

I have a few large projects I am working on in my new place of work, which have a complicated set of statically linked library dependencies between them.

The libs number around 40-50 and it's really hard to determine what the structure was initially meant to be, there isn't clear documentation on the full dependency map.

What tools would anyone recommend to extract such data?

Presumably, in the simplest manner, if did the following:

  1. define the set of paths which correspond to library units

  2. set all .cpp/.h files within those to belong to those compilation units

  3. capture the 1st order #include dependency tree

One would have enough information to compose a map - refactor - and recompose the map, until one has created some order.

I note that http://www.ndepend.com have something nice but that's exclusively .NET unfortunately.

I read something about Doxygen being able accomplish some static dependency analysis with configuration; has anyone ever pressed it into service to accomplish such a task?

6条回答
闹够了就滚
2楼-- · 2020-05-15 13:59

This tool is excellent for analyzing the include tree: IncludeManager. You should be able to get a lot of useful information from that tool.

查看更多
冷血范
3楼-- · 2020-05-15 13:59

You might be able to use DoxyS as help, which produces graps representing included files as part of the generated documentation.

See: http://www.doxys.org

-Martin

查看更多
别忘想泡老子
4楼-- · 2020-05-15 14:06
女痞
5楼-- · 2020-05-15 14:09

I am due to start working with a large scale c++ project that is need of dependency management, so naturally I have been looking around at some tools. I was suprised to see that CppDepend was flagged as the favorite here as a single license costs €300, whereas IncludeManager is £20.. And does the same job. Just in case anyone here has used either or both tools, is there "good" reason why I should spend the extra £280 (£1~€1) for CppDepend?

*Please note that I would like to have my own personal copy so whether the company has it or not is irrelevant.

查看更多
Explosion°爆炸
6楼-- · 2020-05-15 14:14

http://github.com/yuzhichang/cppdep may be what you want. I wrote it for analyzing dependencies among components/packages/package groups of a large C/C++ project. It's a rewrite of dep_utils(adep/cdep/ldep) which is provided by John Lakos' book Large-Scale C++ Software Design.

查看更多
别忘想泡老子
7楼-- · 2020-05-15 14:20

IncludeFinder is a free tool I have used before successfully.

查看更多
登录 后发表回答