Logo
Get direct access via EPNdirect to Europe’s most comprehensive database of electronic products & suppliers
Search    Advanced Search Criteria

TOP PRODUCTS

Print | PDF | Digg This | Slashdot It! | Add to Del.icio.us |
Source code analysis tool detects run-time and logic errors
03/02/2010
Report dead link
Reference: 39609

AdaCore has released CodePeer, a source code analysis tool that detects run-time and logic errors in Ada programs. Serving as an accurate code reviewer, the tool identifies constructs that are likely to lead to run-time errors such as buffer overflows, and it flags legal but suspect code typical of logic errors.  The tool also produces a detailed analysis of each subprogram, including pre- and post-conditions. Such an analysis makes it easier to find potential bugs and vulnerabilities early. If the implicit specification deduced by the tool does not match the component's requirements, a reviewer is alerted immediately to a likely logic error. The tool can be used both during system development to prevent errors from being introduced or as part of a systematic code review process to increase the efficiency of human review and retrospectively on existing code, to detect and remove latent bugs.

Developed in partnership with SofCheck, the tool can be used either as a standalone tool or fully integrated into the GNAT Pro Ada development environment. It is flexible, with performance that can be tuned based on the memory and speed available on the developer's machine, and can efficiently exploit multi-core CPUs. The tool can be run on partially complete programs and does not require stubs or drivers.

The tool analyses programs for a range of flaws including use of uninitialised data, pointer misuse, buffer overflow, numeric overflow, division by zero, dead code, and concurrency faults (race conditions). The tool identifies them statically, without running the program, and determines where the failure could occur and also identifies where the bad values originate, be it within the current subprogram or from some distant subprogram that reached the point of failure through a series of calls. The tool also looks for code that although syntactically and semantically correct, is performing a suspect computation, such as an assignment to a variable that is never subsequently referenced, or a conditional test that always evaluates to the same true or false value.

Internally the tool uses static control-flow, data-flow, and value propagation techniques to identify possible errors. It mathematically analyses every line of code without executing the program, considering all combinations of program input across all paths within the program. It automatically generates both human-readable and machine-readable component specifications in the form of pre-conditions, post-conditions, inputs, outputs, and heap allocations, which along with the error messages can be displayed graphically or as in-line comments in the source code listing to help immediately pinpoint the root cause of any defect. In a multi-threaded system, the tool identifies where race conditions might occur. To increase performance and usability it internally maintains a historical error database, which allows it to highlight the new coding problems and to track trends across multiple analyses.


AdaCore

104 Fifth Avenue, 15th floor
95014 New York - USA -New York
tel: +1 212 620 7300
fax: +1 212 807 0162

Search in the archives
Advanced Search Criteria
Magazine_mai_2012_small
Loupe
issue
May 2012