views:

832

answers:

8

I'm starting work on a huge C++ codebase, and was wondering if someone could suggest good source code comprehension tools.

I usually use doxygen but was curious to see if anything better existed.

Thanks.

+2  A: 

There's a list of tools at http://www.stack.nl/~dimitri/doxygen/links.html

Colin
+1  A: 

I've actually had good results with good old cscope.

Charlie Martin
A: 

I can recommend Source Insight.

Nemanja Trifunovic
A: 

As an emacs user I can suggest ebrowse. More info could be found here

Serge
+2  A: 

OpenGrok is great for a multi-language project (C,C++,shell scripts,Perl,python ...). Provide a nice web interface (apart from a stand-alone Java GUI) for search and code traversal.

swamy
+2  A: 

Understand for C++ can be used for reverse engineering, documentation and metrics for C/C++ code. It generates cross reference and allow code navigation, and graphical reverse engineering views.

philippe
A: 

Often understanding requires following leads from one place in the text to others. Simple "grep" helps with this, but scales badly and has a poor "browse the text" UI (eg., none).

Our language-sensitive source code search engine can be found at SD Source Code Search Engine. It can handle many languages at the same time. Searches can be performed for patterns in a specific langauge, or patterns across languages (such as "find identifiers involving TAX"). By being sensitive to langauge tokens, the number of false positives is reduced, saving time for the user. It understands C, C++, C#, COBOL, Java, ECMAScript, Java, XML, Verilog, VHDL, and a number of other languages.

Ira Baxter
+1  A: 

To somewhat repeat my answer for the C++ code visualization question:

Check out SourceNavigator, it's open source, works on a bunch of platforms and has a Hierarchy Browser, a Class Browser, a Cross-Reference Browser and more that will allow you navigate and understand the code (it pretty much does all that Understand for C++ does).

If you want something online (so more than 1 guy/girl can examine the code) you can use the good old LXR or (as swamy said) OpenGrok.

Eugen Constantin Dinca