IMPORTANT NOTICE
CHAPTER 1
Introduction to QA C
QA C Action Overview
CHAPTER 2
Projects
Opening a QA C 8.0 Project
Upgrading an 8.0 Project
Using an old Project Configuration File
Creating a Project Automatically
Creating a Project Manually
Reopening Projects
Project Folders
Making File Selections
Relative Path and Environment Variable Support
Root Path
GUI-based Environment Variable Creation
Applying Relative Paths and Environment Variables
CHAPTER 3
Configuring QA C
Configuring Your Compiler Personality
Setting System Header Files
Setting System Macros
Setting Implementation Defined Types
Compiler Extensions
Standard Extensions
Redefinition of Extended Data Types
Operators
Additional Include Files
Identifiers
Configuring Your Analyzer Personality
Project Header Files
Project Macros
Brace Style and Tab Spacing
Warning Calls
Pragma Blocks
K&R Compatibility
Configuring Your Message Personality
Choosing a Message Subset
Standard Message File
Level 0: Information
Level 1: Obsolete Messages
Level 2: Minor
Level 3: Major
Level 4: Local Standards
Level 5: Dataflow Analysis
Level 6: Portability
Level 7: Undefined Behavior
Level 8: Language Constraints
Level 9: Errors
Message Suppression
Code-based Suppression Syntax
Suppression of Warnings with #pragma
Project Configuration File
Dataflow Analysis Settings
Personalities and Analysis
Configuration of Application Options
Editor Preferences: Choosing Your Editor and Browser
Setting the Housekeeping Options
Default Personalities
Environment
Product Extensions
CHAPTER 4
Analyzing Source Code
Deep Flow Dataflow Analysis (DF^2)
Recommendations for First Time Operation of DF^2
Recommendations for Fine-Tuning DF^2 Configuration Settings
Commencing Analysis
Analysis Output Files
.err Files
.met Files
.i Files
Managing Output Files
Suppressing Analysis Output from Header Files
Secondary Analysis
Configuring Secondary Analysis
Secondary Analysis Naming Convention Checking
Running Multiple Secondary Analysis
Cross-Module Analysis
Configuring Cross-Module Analysis
CMA Output Files
Running Cross-Module Analysis
Default-supplied CMA Settings
Analysis Log
CHAPTER 5
Viewing Analysis Results: Message Browser
The Source View
Context Messages
Navigating Through Messages
Displaying Message Help
Displaying Line Numbers
Warning Summary View
Message Groups
Files
CMA Results
Syntax Errors
Active MG
Warning List View
Changing the Format of Annotated Source
Using Annotated Source Code
Sample Annotated Source Code Listing
The Corrected Source File
Displaying Diagnostic Messages
Overview of Baselining
Message Groups and Active Message Groups
CHAPTER 6
Reports
Project Warning Summary
Warning Summary Message Count
Identifier Declarations
Close Name Analysis
External Name Cross-Reference
COCOMO Cost Model
Programmer Time
Development Time
Tool Usage
Project Metrics
CHAPTER 7
Code Structure
Relationships
Choosing Relationships
Searching for Relationships
Displaying Parent and Child Nodes
Starting the Graph from an Individual Node
Selecting Additional Files
Printing the Relationship Graph
Saving the Relationship Graph
Viewing Source Code
Drawing the Graph Vertically
Function Structure
Searching for Functions
Display Simple Functions
Selecting Additional Files
Printing the Structure Diagram
Saving the Structure Diagram
Viewing Function Structure Source Code
CHAPTER 8
Metrics
Metric Thresholds in Analysis
Threshold Order
The Metrics Browser
Metric Name Listing Panel
Name Listing Panel
Metrics Graph
Selecting Additional Files
Reloading Metrics Data
Filtering Metrics
Changing the Metric Group
Magnifying the Graph
Exporting Metrics
Creating a Demograph File
Printing the Graph
Saving the Metrics Graph
Displaying a Kiviat Diagram
Displaying Source Code
Displaying Function Structure
The Demographics Browser
The Demographics Listing
Selecting Additional Files
Reloading Metrics Data
Saving the Demographics Graph
Printing the graph
Displaying Source Code
Displaying Function Structure
Displaying a Kiviat Diagram
Exporting Metrics
The Kiviat Diagram
Changing the display
Selecting Metrics
Printing the Kiviat Diagram
Saving the Kiviat Diagram
CHAPTER 9
Running QA C on the Command Line
Environment Variables
Configuration Options
Option Syntax
Toggled Options
Options with Arguments
The –via option
Personality Files
-forgetall
Analyzing Source
Configuring Primary Analysis
Common Analyzer Options
Analyzer Return Codes
Running Secondary Analysis Checks
Running CMA Checks
Viewing Diagnostic Output
Message Browser (viewer)
Project Warning Summary (errsum)
CHAPTER 10
Advanced Topics
Customizing the Message System
Message File (qac.msg)
Message Level Records
Message Group Records
Message Records
Duplicate Warning Messages
User Message Files
Rewording Messages
Moving a Message to a New Group
Duplicating a Message Number at a Different Level
Changing the Level or Description of a Message Group
Renaming Message Levels
Adding a New Message
Formatting Message Output
Message Display
Conditional Formatting
Message Text Control
An Example Message Format
Writing Secondary Analysis Checks
Global Data Analysis
Library Usage
Writing Messages to the Error File
Batch usage of errwrt
Writing Custom Reports
APPENDIX A
Personalities
Message Personality
Analyzer Personality
Compiler Personality
APPENDIX B
Configuration Options
Appendix C
The Components of Function Structure
APPENDIX D
The Calculation of Metrics
Function-Based Metrics
File-Based Metrics
Project-Wide Metrics
APPENDIX E
Program Return Codes
APPENDIX F
Metric Output File
Relationship Records
Relationship Type Records
External Reference Records
Define Records
Control Graph Records
Metrics Records
Pragma Records
Literal Records
APPENDIX G
QA C Utilities
r_basename
r_close
r_fields
r_grep
r_sort
r_uniq
APPENDIX H
Code-based Suppression
Atomics of Diagnostics
Code-based Annotations
Location Tag Syntax
Predefined Location Tags
Suppression Syntax
Continuous Suppression Syntax
Examples
Single instance suppression
Range suppression using location tags
Range suppression using line counting
Continuous suppressions
Suppressions in header files
Suppression input failures
Appendix I
Naming Convention Checking
Introduction
Configuration Basics
Configuration File
Rule Format (JSON Syntax)
Rule Names
Filename
Included File
Definition
Space
Scope
Linkage
Type
Flags
Pattern
Invert
Message Number
Perl-Compatible Regular Expressions
Matching Characters
Matching a Number of Times
Anchoring
Alternate Matching
Escaping Special Characters
Configuration File Example
Getting Feedback on Errors
Configuration File
JSON Syntax Errors
Unknown Name
Unknown value
Regular Expressions
Appendix J
Baselining Details
How to Generate a Baseline
Generating a Baseline via Menu
Generating a Baseline via Custom Report
Generating a Baseline from the Command Line
Editing the Command Line
Table of Baseline Parameters
Generating a Baseline via Secondary Analysis
Modifying Source
Copying the Original Source and Baseline
Synchronizing the Baseline Data with Working Source
Applying the Baseline to Working Source
Modifying the Baseline
Hide/Show Messages
Baseline Admin Mode
Restrictions
Marking Message Groups
Updating the Baseline
Using a Version Control System with Baselining
Requirements
Version Identification
PRQA Helper Application
Usage Details: PRQA Helper Application
Setting up Baselining with VCS
INDEX