Domain: scitools.com
Stories and comments across the archive that link to scitools.com.
Comments · 14
-
Understand for C++
A non-free but worth it tool for making code make sense from https://scitools.com./ I don't work for the company. There is a 15-day free trial. It costs $1K-$2K but if the code is important and you are going to live with it a long time it is worth it.
-
Re:How to read code
Are there tools that do this automatically?
Have a look at Scitools Understand.
-
Use a tool
I was unemployed for the first quarter of 2002 and found some by-the-hour contract work maintaining an old Win16 application. Hideous tangle of C code making up a very vertical application.
I wound up using SciTool's Understand to figure out unwieldy code bases. Honestly I never paid for it, as I said it was a short-term, per-hour contractor job and they weren't paying for tools, so I used the demo until the demo period ran out. (And this wasn't a $200 an hour kind of contract.)
I've also had Indian consulting firms, as part of their claim that "they can analyze and understand our code base" hand me a report that I'm pretty sure was the output of that product.
In any case, something like that is a good starting point.
I guess Visual Studio now has some of that sort of thing built in, but a proper just-for-that tool may suit you better depending on language and style.
-
Try Trackback
Trackback comes with Understand for Ada and seems to be separately downloadable for free from http://www.scitools.com/products/trackback/. I had Meridian Ada long ago but don't remember much about the IDE. Some editors can do multiple undos back through previous editing sessions.
-
Sourcepublisher
Source publisher is a great tool. http://www.scitools.com/ it is a compiler that produces web pages not machine/binary code. It won't produce macros but can create calling trees, review docs, metrics etc. You can 'execute' the code by follow links etc really helpful for degugging to. Plus if you don't know a type you can vew it. Great little tool.
-
Understand?
Understand for C++ http://www.scitools.com/products/understand/cpp/product.php if you have some money to spend. SCI will give you a 15 day evaluation copy and the cost is $495 (cheaper each if you buy more). Nobody has been maintaining it for a while but for free you can have Source Navigator http://sourcenav.sourceforge.net/. It is basically a Tcl/Tk based editor that has decent cross-referencing capabilities. It also builds a class hierarchy and lets you search on files, variables, functions, etc.
-
Understand C++
Sorry I don't have an open source tool for you, but I've used Understand for C++ in the past and it was pretty helpful. To me, the most useful piece of information for understanding a large codebase is a browseable call graph. I'm sure there are simpler tools out there that generate a call graph, but this is the only one I've used with C++.
-
Re:IDE for Linux, yup
Does it do everything that Understand does? Does it do everything Codesurfer does? How about DMS? CDT and Eclipse sure use large amounts of ram and cpu, but I don't see much payoff in terms of features for all that resource usage.
-
Understand for C++I'm working on a project that's evolved over several years and there's been high turnover among the developers. We use a product called Understand for C++. It has a lot of great reverse engineering, metric generation, and source browsing features that make it pretty useful.
From their marketing blurb...
Understand, our flagship product, helps thousands of companies maintain impossibly large or complex amounts of source code. It parses source code for reverse engineering, automatic documentation, and calculating code metrics. We have versions for Ada 83, Ada 95, FORTRAN 77, FORTRAN 90, FORTRAN 95, Jovial, K&R C, ANSI C and C++, Delphi, and Java. Multi-million SLOC projects are common with our users.
-
Re:Visual Studio
Microsoft has the best virtual machine with
.NET, the best development tool with Visual Studio...
This is a rather subjective statement, and as far as .NET being the best VM, I say BS. .NET is proprietary and only works on M$ platforms. Relying upon a proprietary standard with regards to computer and network systems in business is a costly mistake. Mono folks need not chime in as they are taking a huge risk and I don't even want to go there. As a developer, I don't like either one (.NET or VS). I used to develop using VS and liked it, but have since found better tools that support multiple platforms as well as the real stanadards (as compared to the standards that M$ has decided upon. I also no longer have to deal with M$ platform bugs, quirks, and security problems.
If linux had any dev environment that was ANYWHERE NEAR as good as VC++, maybe I wouldn't despise working on it.
As for a decent IDE for Linux, there are several. I like Code Forge as it supports a wide range of languages, editiors, debuggers, compilers, assemblers, and source control. For the past year, I've been using Sun's IDEs for Java and C/C++. The UML modeling capability in Sun Java(r) Studio Enterprise 11 is great - make a UML model of your application and tell the IDE can generate the code from it (or do it the other way around: create the model from existing code). For getting a quick handle on how an application - or the Linux kernel - works, what all the functions, methods, opjects, etc. are, nothing beats Understand for C++ and Understand for Java. The Sun IDEs are cross-platform and free for registered SDN developers (free registration). Understand tools are not free, but well worth the money, and are also cross-platform. Code Forge is UNIX only.
The bottom line is: Saying Linux has no good IDEs or other development tools is not true and one only needs to look and select the one that they like the most. I've found I can develop applications on Linux, with Linux tools, far faster, easier, and cheaper than I ever have on Windows. That includes developing Windows applications (I simply do the GUI portion on a Windows box, if I need to).
PGA -
Understand from ScitoolsI regulary use Understand C/C++ from SCITools (is available for Java and other languages) to browse source code (in my case, embedded sources that is supposed to be compiled using the Keil compiler). It's "right-click, for information" attetude makes browsing around a breeze. The reason is that it builds an internal database when loading the project (which takes a second or a few, depending on the size of the sources), and once built, the interface is astonishingly fast!
One of the things I like most, is that it also colours all parts of the code that is #ifdef'ed out. Another thing is that the information windows for any token displays all kind of information: calls, callees, references, uses (including sets/get/modifies), used locals, used globals, exposed globals etc - all of which in a tree view, so it is very easy to decide what's important and what's not.
It is possible to use it as an editor as well, which I do, but as such it isn't perfect.
Also, importing a completely new project requires almost no intervension - it will simply prompt for where any missing #includes are located and add them to the searchpath, so just setting it up for a quick test is done in no-time.
-
Understand for C++
We use Understand for C++ (link is to the index of all "Understand for..." family members) when reviewing and designing formal unit tests for our clients' code. It's extremely useful for manual static analysis: understanding structure and inter-relatedness, so to speak.
However, to understand dynamic behavior you should look at various tracing options, even the lowly printf(), or try stepping through in a debugger. The larger, more complex and the more object-oriented the code, the more important understanding the dynamics are.
Anyway, Understand for C++ is much more interactive than any of the free comment extraction or cross reference tools and the database has a Perl API, though we've not had a chance to use it. It's worth the price if your doing this as part of your job.
- Barrie -
Understand for C++ and Source-Navigator
We are evaluating some tools along these lines. The ones we liked most are RedHat's Source-Navigator (GPL) and Scitool's Understand for C++ ($$$).
Sorce-Navigator seems to be slow compared to Understand C++, I'm sure this has to do with the way they index the DB. On the other hand, the Linux version of Understand C++ needs some polishing IMHO (too many crashes on Debian/serge).
As for report-generating tools that just index and cross-reference the whole project, Gonzui is a pretty good one.
-
Understand
I never used it myself, but was told that Understand was pretty good at doing exactly this. It claims to support big and hairy projects, and runs both on Windows and Unix. Unfortunatly it is Free as in "Free trial" only.