What is Static Analysis?
LDRA Testbed’s Static Analysis enables a project to ensure that a uniform set of programming standards are enforced, software is properly structured and complexity and other quality attributes are controlled within a configurable quality model. Static Analysis can also detect a significant number of software defects.
What are the benefits?
- Better understanding of the system
- Adherence to quality standards
- Identify and eliminate unnecessary and unused code
- Determine and report the complexity of the system
- Fully automated analysis, saves time.
When would you use it?
Static Analysis is the primary source of information for the automatic documentation of software. It generates all of the vital control flow information for each procedure and the inter-procedural links. The interfaces are accurately delineated, the loop structure is exposed and complexity metrics are generated.
LDRA Testbed’s Static Analysis is approved for the analysis of safety-critical code by many regulatory authorities for whom Static Analysis is the sole requirement. For other authorities it is a powerful adjunct to full Dynamic Analysis.
What analysis results will be produced?
LDRA Testbed offers the following Static Analysis functionality:
Programming Standards Verification. Assesses whether the source code conforms to a set of user-configurable programming standards.
Structured Programming Verification. Reports on whether the source code is properly structured.
Complexity Metric Production. Reports on a number of complexity metrics such as Cyclomatic Complexity, Knots, Essential Cyclomatic Complexity, Essential Knots and many more.
Full Variable Cross Reference. Examines and reports global and local variable usage within and across procedures and file boundaries.
Unreachable Code Reporting. Reports on areas of redundant code.
Static Data Flow Analysis. Follows variables through the source code and reports any anomalous use.
Information Flow Analysis. Analyses inter-dependencies of variables for all paths through the code.
Loop Analysis. Reports the looping structure and depth of nesting within the code.
Analysis of Recursive Procedures. All the analysis above is performed individually and on sets of mutually recursive procedures.
Procedure Interface Analysis. The interface for each procedure is analysed for defects and deficiencies. The interfaces are then projected through the call graph of a system to highlight integration defects.
|