CScout logo


About

CScout: The C Refactoring Browser

CScout is a source code analyzer and refactoring browser for collections of C programs. It can process workspaces of multiple projects (we define a project as a collection of C source files that are linked together) mapping the complexity introduced by the C preprocessor back into the original C source code files. CScout takes advantage of modern hardware advances (fast processors and large memory capacities) to analyze C source code beyond the level of detail and accuracy provided by current compilers, linkers, and other source code analyzers. The analysis CScout performs takes into account the identifier scopes introduced by the C preprocessor and the C language proper scopes and namespaces. After the source code analysis CScout can
  • perform accurate cross project identifier renames,
  • process sophisticated queries on identifiers, files, and functions,
  • locate unused or wrongly-scoped identifiers,
  • identify header files that don't need to be included, and
  • create call graphs spanning both C functions and function-like macros.
CScout has already been applied on projects ranging from tens of thousands of lines, like the Apache web server, to millions of lines, like the Linux, the FreeBSD, and the Windows Research kernels. With CScout you can make your hardware really work for its money. For example, processing the 2.6.11 Linux kernel (4.2 million lines of code) requires 4052MB of RAM and 4.7 hours of processing on a dual-CPU 2.2MHz AMD Opteron computer. After the processing CScout holds details on 1.1 million identifiers and 89 thousand functions and function-like macros.
Read more ..., walkthrough (CScout documentation).

The license of the free unsupported CScout version allows you to freely use CScout on open source software code. A different CScout version is available under a support contract for use on proprietary software.

CScout runs and has been tested under Linux, Microsoft Windows, Apple Mac OS X, FreeBSD, and Sun Solaris, under several processor architectures.