scat : source code analysis tool

scat displays function call graphs of C programs. scat also displays the conditions that need to be satisfied for a function to be called.

scat allows a programmer to quickly see and comprehend the structure of a program.

 

User Interface

Try it! Below is a simple applet which simulates some of scat's user interface. Point at a function call arc to see the conditions that must be satisfied for that call to occur. Point at a function name to see the function's signature and where the function is defined.

Your browser can not run the Java applet that is supposed to appear here!

Here's an old picture showing a graph being created interactively:

I used the GTK-- and GNOME-- libraries (which provide a C++ interface to GTK+ and GNOME). libsigc++ was also used.

 

Features

 

Function call database

The function call database is interrogated using cscope.

 

Similar programs

I hope scat makes it possible to understand how programs are structured more quickly than with similar programs. (I've used v0.8 of cbrowser and v5.0.0 of Source Navigator.) Enhancements include:

 

Planned features

 

Conditions for a function call to occur

The code which determines the conditions for a particular function call to occur is not finished. Below is a list of some things that are yet to be done:

 

Source code

Download

I use gcc v3.0.3 to compile scat.

 

Requirements

The following packages are required to build scat. I have listed the versions I have installed (older versions may also work).

gtk 1.2.9
gtk-- 1.2.8
gnome-- CVS 21/10/'01
libsigc++ 1.0.1
 

Running scat

scat will use the cscope.out file in the current working directory, however, you can specify a different file (or several files) using the "Cscope Connections" window.

scat does not create nor update cscope databases. ("cscope -Rb" will build a database for all files in the current directory and sub-directories of the current directory. I recommend using the cscope "-q" option as it increases the speed to interrogate the database.)


Last update: 25 November 2002