I am about to starting to work on a project which involves refactoring and modifying existing code which is in c & c++. The code is a bloated one and is in huge volume. Ofcourse since the code needs to be modified an understanding of the code has to be developed and in a very short span of time since we have some pretty time pressed project schedule. Can anyone please suggest any open source tools which will help in acheiving the above. In short what I am looking for is tool which can:
- Reverse engineering tools which will help understand the design.
- Sequence generator tools which will help draw sequences at run time(Most probably we will be able to run the code, but not in the initial stages atleast) or through code examination.
- Good code browsing tools to study the existing code base.
- Suitable tool which can auto refactor code with minimal efforts.
Please do tell me about any experiences,preferences or favorites worth looknig out for.
[EDIT] Came up with a list of tools to help in above. Here's the list:
Graphviz & DOxygen
Generate UML class diagrams from existing code baseUmlstudio (http://www.pragsoft.com/prod_umls.html)
Creating an object model for your OO legacy code is the best approach to analysing, understanding and maintaining it. UMLStudio can automatically convert C++, Java, CORBA IDL, PHP 5, and Ada 95 code into OOA&D notation faster than any other CASE tool.codedrawer for C++(http://www.codedrawer.com/)
The CodeDrawer converts source code to visual based diagrams. Class, struct, and any elements of source code can be shown diagrams. It also shows the logics of a fuction and a method. The CodeDrawer helps understand source code of your projectImagix for c, c++ & java (http://www.imagix.com/)
Reverse engineering and visualization of source code lead to improved program comprehension. Speeds: Learning Unfamiliar Code Change Impact Analysis Integrating Open Source Code Code Reuse Software Maintenanceagilej (http://www.agilej.com/)
AgileJ StructureViews is a plug-in for the Eclipse Java IDE which generates highly customisable UML class diagrams on an industrial scale, ideal for agile development or exploration of any existing Java codebase.MaintainJ (www.maintainj.com)
If you can run the code base then MaintainJ generates UML sequence and class diagrams at runtime when you run a particular use case.reverse engineering tool(http://www.neiljohan.com/projects/reverse/)
Generates class diagrams and relations between classes from java source code.source Insight (www.sourceinsight.com) Great source browsing software
One more, Thanks to Steve Townsend
Klocwork (http://www.klocwork.com/products/insight/architect-code-visualization/)