DoubleCheck

Product Website: http://www.ghs.com/products/doublecheck.html

Complexity has become the most significant challenge to meeting time to market and reliability demands for software. Traditional debugging and testing methodologies simply fall short when dealing with today's sophisticated code bases. Increased complexity reduces software quality, reliability, safety, and security. Automated tools are needed to cope with this complexity explosion, and static source code analysis represents one of the most effective strategies.

Static analyzers attempt to find code sequences that may result in buffer overflows, resource leaks, or many other security and reliability problems. Source code analyzers are effective at locating a significant class of defects that are not detected by compilers during standard builds and often go undetected during run-time testing or typical field operation.

Unlike other source code analyzers that run as separate tools, DoubleCheck is an Integrated Static Analyzer (ISA). DoubleCheck is built into the Green Hills C/C++ compiler, taking advantage of accurate and efficient analysis algorithms that have been tuned and field proven over the past 25 years. DoubleCheck can be used as a single integrated tool to perform compilation and defect analysis in the same pass.

A typical compiler will issue warnings and errors for some basic potential code problems, such as violations of the language standard or use of implementation-defined constructs. In contrast, DoubleCheck performs a full program analysis, finding bugs caused by complex interactions between pieces of code that may not even be in the same source file.

Unlike other tools, DoubleCheck automatically uses the exact same code configuration as used during the build process. This allows developers to be certain that the code executed is the same code that was checked.

DoubleCheck determines potential execution paths through code, including paths into and across subroutine calls, and how the values of program objects (such as standalone variables or fields within aggregates) could change across these paths.