ADVANCED CODE ANALYSIS

QA·C++

QA·C++ is the market leader—bar none.


QA·C++ is the market leader—bar none. It’s consistently recognized worldwide as the most powerful, most robust, and most technically advanced solution available today for analyzing source code and automatically enforcing coding standards.
QA·C++ identifies problems in C++ source code caused by language usage that’s dangerous, overly complex, non-portable, difficult to maintain, or simply diverges from coding standards—you get comprehensive coverage.
QA·C++ warns about issues that are not reported by compilers or other tools. Then, it explains why they are problems and shows you how to fix them.

 

QA·C++ BENEFITS
   
Identifies coding problems early in the development cycle
Accelerates the code review process—improves teamwork
Ensures quality code and coding standard compliance
Educates and raises programmer awareness
Reduces the risk of program failure
Enhances reliability, portability, and maintainability
Lowers software development costs—increases productivity
Improves time-to-market while reducing costs
Allows instant and repeatable code audits and reviews
Delivers unmatched technology & strong ROI

 

QA·C++ PRODUCT OVERVIEW

ENSURES CODE QUALITY: BEYOND BUG CATCHING Whether your application is safety critical or mission critical—or you simply want to produce the highest integrity code possible—QA·C++ quickly ensures code quality while enhancing productivity in your development process. It delivers much more than a simplistic bug catching approach—although QA·C++ can catch bugs better than anything out there. It equips you with the tools you need to inject best practices into your development process to prevent problems—so you’re not wasting resources fixing them later. Market leader QA·C++ is fast, non-disruptive, easy-to-use, and adds value to any size development environment.

AUTOMATICALLY ENFORCES CODING STANDARDS Coding standards serve as repositories of best practices. They’re the collaborative efforts of the best minds out there—filled with insight and widely recognized as an integral step toward building high-integrity, quality software. QA·C++ provides a robust, fully automated environment to efficiently introduce and enforce your custom coding standards, those mandated by your industry, and those required by your customers. Its flexibility is unmatched as it seamlessly integrates into your development environment. Then, QA·C++ documents and proves your compliance—a growing customer requirement especially for contract developers and offshore development firms.

DELIVERS ADVANCED TECHNOLOGY: DEEP FLOW STATIC ANALYSER QA·C++ is powered by an advanced language parsing engine that quickly analyses your code then delivers accurate results regardless of project size. It detects problems like language implementation errors, inconsistencies, depracated features, and coding standard violations—early, quickly, and efficiently—preventing delays at later stages in your development cycle when problems are always more costly to fix.

COMMUNICATES MEANINGFUL INFORMATION QA·C++ combines many industry-standard code metrics including CYCLOMATIC COMPLEXITY and ESTIMATED STATIC PATH COUNT with easy-to-understand, flexible, reporting. QA·C++ automatically generates reports, graphs, diagrams, and customizable HTML output—information to keep your projects on the right track. QA·C++ exports its results in an open format so you can further analyse, share, and present your information in applications like Microsoft Office®, StarOffice™, and others. And, its configurable PDF REPORTS feature quickly generates project details useful for code reviews and audits—so everyone’s on the same page.

INCLUDES AN EXPERT KNOWLEDGE BASE QA·C++ serves as a valuable learning tool for even the most seasoned developer. Its powerful MESSAGE BROWSER delivers a contextual drill-down environment linked to a deep knowledge base. QA·C++ explains why problems it discovers need to be corrected and then provides detailed examples of how to fix them. Working with QA·C++ means a virtual mentor with years of language implementation and standards expertise is simply a click away. Watch your development team become more skilled and more productive—even your best coders will quickly get better—and you get meaningful reporting to prove it.

PROVIDES IMMEDIATE & FUTURE SAVINGS QA·C++ identifies software defects and non-compliance issues early in your development cycle and prevents them from entering your production code—thwarting potentially huge problems in your deployed products. QA·C++ provides the ability to limit complexity so you can develop code that’s truly testable and easier to maintain. Wouldn’t it be nice to know you’re not wasting time and money fixing preventable problems?

TECHNICAL SPECIFICATIONS
GENERAL FEATURES
SOURCE CODE COMPREHENSION TOOLS
 RELATIONSHIPS BROWSER
 FUNCTION STRUCTURE DIAGRAMS 
 DEMOGRAPHICS
 METRICS BROWSER
COMMAND LINE INTERFACE (CLI)
INTERACTIVE MESSAGE BROWSER
ONLINE HELP & KNOWLEDGE BASE
 USAGE & IMPLEMENTATION 
 CONTEXTUAL MESSAGE
 C++ LANGUAGE  
 CODING STANDARD SPECIFIC  
SUMMARY & DETAILED REPORTS
STANDALONE Qt®-BASED GUI
IDE INTEGRATIONS
 
MESSAGE OUTPUT CONTROL  
COMMENT BASED SUPPRESSION
CONFIGURATION BASED SUPPRESSION
SUPPRESSION TRACKING
BASELINING
 
METRICS  
CLASS BASED: 8
FILE BASED: 10
FUNCTION BASED: 8
USER DEFINABLE METRICS
GRAPHICAL METRIC ANALYSIS 
KIVIAT DIAGRAMS
WARNINGS ON METRICS THRESHOLDS
METRIC VALUES EXPORTABLE (CSV FORMAT)
 
RESULTS OUTPUT  
CONFIGURABLE PDF REPORTS
 QUALITY
 COMPLIANCE 
 CODE REVIEW  
 SUPPRESSION  
ANNOTATED SOURCE (TEXT & HTML)
CONFIGURABLE OUTPUT
 
OPERATING ENVIRONMENTS  
MICROSOFT WINDOWS™ (32-bit & 64-bit)
SOLARIS™
HP-UX™ 
LINUX™
 
COMPILERS  
EXTENSIVE COMPILER SUPPORT
CUSTOMIZABLE CONFIGURATIONS
AUTO COMPILER CONFIGURATION
 
INTEGRATIONS   
MICROSOFT VISUAL STUDIO™
ECLIPSE™ CDT
WINDRIVER TORNADO™ & WORKBENCH™
VectorCAST™
MAKEFILE INTEGRATION
CUSTOM INTEGRATIONS (INCLUDING TO VCS)
 
LICENSING OPTIONS  
NO LIMITS ON PROJECT SIZE OR SLOC
FLEXlm™ LICENSE MANAGEMENT 
FLEXid™ DONGLES
CUSTOM LICENSING OPTIONS
 
CODE ANALYSIS FEATURES  
1,000+ SELECTABLE MESSAGES 
C++ LANGUAGE-SPECIFIC PARSING ENGINE
PARSES CODE OF ANY SIZE & COMPLEXITY 
TEMPLATES: FULL PARSING & SEMANTIC ANALYSIS
HANDLES COMMON LANGUAGE EXTENSIONS
CROSS MODULE ANALYSIS (LINK TIME CHECKING)
SEMANTIC ERROR DETECTION
DATAFLOW ERROR DETECTION
CLOSE NAME ANALYSIS 
 
CODING STANDARD ENFORCEMENT  
USER CONFIGURABLE CODING STANDARDS
HIGH·INTEGRITY C++ (ADD-ON MODULE AVAILABLE)
JSF++ (ADD-ON MODULE AVAILABLE)
ISO C++ STANDARD SUPPORT
RULE SUBSETS FOR LEGACY CODE (CRITICAL.PS)
BEST PRACTICE ISSUES
NAMING CONVENTION CHECKER
LAYOUT CHECKER
DEFENSIVE PROGRAMMING—DEFECT AVOIDANCE
EXTENSIBLE RULE BASE
CUSTOMIZABLE MESSAGE TEXT 
DEVIATION SUPPORT
 
ISO C++ STANDARD SUPPORT  
FULL CHECKING OF ISO C++ CONSTRAINTS 
 UNDEFINED BEHAVIOUR  
 UNSPECIFIED BEHAVIOUR  
 IMPLEMENTATION DEFINED BEHAVIOUR  
C++ LIBRARY PARSING
 Boost · ACE™ · SystemC™ · ATL · MFC · Others
INTEGRATED C++ LANGUAGE KNOWLEDGE BASE

 

TECHNICAL INTRODUCTION

QA·C++ analyzes source code on a file-by-file and complete project basis to identify potentially dangerous usage of the C++ language. A library of 1,000+ selectable warning messages is used to highlight source code which is non-portable, difficult to maintain, overly complex, or written in any way that is likely to cause problems.


This flow chart shows an overview of the analysis process and the various output files that are generated. Click the chart to keep it visible while scrolling.

QA·C++ will also identify language usage which is not compliant with the ISO C++ standard (ISO/IEC 14882:1998(E)) or which is classified as giving rise to unspecified, undefined or implementation-defined behaviour.

Warning messages for a complete project of source code are displayed through a MESSAGE BROWSER component that categorizes and groups message occurrences across all source files. Message output can also be viewed in the form of an annotated source code listing which can optionally be presented in HTML format with links to additional information and advice.

 

Other features of QA·C++ include:

• METRICS CALCULATION of 26 code metrics including:

All provide a quantifiable measure of numerous code attributes.

METRICS VISUALIZATION with a METRICS BROWSER, KIVIAT DIAGRAMS, and DEMOGRAPHS

CODE STRUCTURE VISUALIZATION with relationship graphs to demonstrate function calling, global referencing, include file trees, class hierarchies, and class implementation details plus function structure diagrams to provide an insight into control flow

DEMOGRAPHIC ANALYSIS to provide an overall assessment of code quality against industry benchmarks

CROSS-MODULE ANALYSIS capability (CMA), delivering memory allocation mismatches, function recursion, and other global issues


QA·C++ delivers 3 types of analysis:

Primary Analysis is built-in and delivers the majority of language analysis in the product.

Secondary Analysis is an optional user-configurable add-on and usually contains industry, company or standards-specific checks.The NAMING CONVENTION CHECKER is another example of a secondary analysis process.

Cross-Module Analysis covers a range of checks that needs to operate across translation units. QA·C++ is supplied with a default module of CMA analysis, and additional modules can add to or replace this module.

Move Beyond Bug Catching