ENVY®/QA User Guide
ENVY/QA User Guide
Preface
Notices
About this book
Who this book is for
Conventions used in this book
Tell us what you think
About ENVY/QA
Code Critic
Code Metrics
Code Coverage
Code Publisher
Code Formatter
Extensible Framework
Installing ENVY/QA
Code Critic
Who Should Use This Tool
Loading Code Critic
Unloading Code Critic
Guided Tour
Code Critic and the Development Browsers
Code Critic Options Dialog
Selecting which Reviews to Run
Configuration Map Reviews
Application Reviews
Class Reviews
Duplicate Pool Dictionaries
Extends Base Class
Missing Class Comment
Missing Dependent Method
Not Categorized Methods
Poorly Named State Variables
Subclass Responsibility
Subclasses Base Class
Unreferenced Class
Unused Pool Dictionaries
Unused State Variables
Method Reviews
Compiler Warnings
Could Be Cascaded
Could Use Self
Defeats Compiler Optimization
Direct State Variable Access
Identical to Inherited Method
Inefficient Convenience Method
Magic Values
Missing #yourself
Missing Method Comment
Missing Primitive Fail Code
Not Implemented in Superclass
Poorly Named Method
Poorly Named Variables
Public/Private Inconsistency
References Development Classes
References Global Variables
References Outside Prereq Chain
References Own Class
Reimplements System Method
Sends System Method
Sent But Not Implemented
Should Call Superclass
Should Call Superclass
Should Not Be Implemented
Should Use IsEmpty
Too Many Consecutive Concatenations
Unnecessary #isNil or #notNil
Unnecessary Parentheses
Unsent Method
Unused Arguments
Customizing the Reviews
Saving and Loading Your Settings
Using the Code Critic Results Browser
Layout of the Code Critic Results Browser
Launching the Code Critic Results Browser
Sorting by Type
Sorting by Severity
Viewing a Problem
Ignoring Result
Removing Results
Refreshing Results
Saving and Loading Results
Saving and Loading Ignore Sets
Reporting Results
Exporting Results to Text
Exporting to Spreadsheet
Printing Results
Adding a Comment to the Results
Opening an Applications Browser
Opening Other Browsers
Menus
Advanced Concepts
Code Metrics
Who Should Use This Tool
Loading Code Metrics
Unloading Code Metrics
Guided Tour
Creating a Class to Measure
Running the Metrics
Browsing the Results
Code Metrics and the Development Browsers
Measuring Configuration Maps
Measuring Applications
Measuring Classes
Measuring Methods
Code Metrics Options Dialog
Selecting Which Metrics to Run
Application Metrics
All Defined Classes
All Dependent Applications
All Extended Classes
All Prerequisites
All Prerequisites
Defined Classes
Dependent Applications
Extended Classes
Memory Size (Including Subapplications)
Class Metrics
Accessors
All Class Methods
All Instance Methods
All Instance Variables
All Subclasses
Class Coupling
Class Methods
Class Response
Class Variables
Cyclomatic Complexity
Depth of Hierarchy
Direct Variable Accesses
Global/Pool References
Instance Methods
Memory Size for Classes
New Methods
Pool Dictionaries
Ratio API/Internal
Ratio Public/Private
Refined Methods
Specialization Index
Subclasses
Method Metrics
Lines of Code
Lorenz Complexity
Memory Size for Methods
Method Density
Statements
Customizing the Metrics
Common Properties
SpecificProperties
Modifying Properties
Saving and Loading Your Settings
Using the Code Metrics Results Browser
Layout of the Code Metrics Results Browser
Launching the Code Metrics Results Browser
Hiding In-Range Results
Removing Results
Refreshing Results
Saving and Loading Results
Reporting Results
Exporting Reports to Text
Exporting to Spreadsheet
Printing Results
Adding a Comment to the Results
Opening an Applications Browser
Opening Other Browsers
Menus
Framework Configuration Maps
Code Metrics Framework Classes
Implementing Your Metric Subclass
Example
Code Coverage
Who Should Use This Tool
Loading Code Publisher
Unloading Code Coverage
Guided Tour
Creating an Application
Selecting the Applications to Watch
Watching Your Application
Ignoring Methods
Code Coverage and the Development Browsers
Coverage on Configuration Maps
Using the Code Coverage Browser
Layout of the Code Coverage Browser
Launching the Code Coverage Browser
The Control Buttons
Refreshing the Browser
Restoring Components
Saving and Loading Your Coverage Setup
Reporting Results
Printing Results
Menus
File Menu
Classes Menu
Methods Menu
Code Publisher
Who Should Use This Tool
Loading Code Publisher
Unloading Code Publisher
Guided Tour
Creating Publishing Configuration Maps
Publishing Applications
Publishing Classes
Code Publisher Output Options Dialog
Output Formats
HTML—Hypertext Markup Language
LaTeX—A Document Preparation System
MIF—Maker Interchange Format
Code Publisher Settings Dialog
Application Publishing Options
Class Publishing Options
Method Publishing Options
Cross-Reference Publishing Options
General Publishing Options
Saving and Loading Your Settings
Code Formatter
Who Should Use This Tool
Loading Code Publisher
Unloading Code Formatter
Guided Tour
Creating a Class and Method
Code Formatter and the Development Browsers
Formatting Configuration Maps
Formatting Applications
Formatting Classes
Formatting Methods
Formatting Source
Code Formatter Settings Dialog
Formatting Blocks
Formatting Comments
Format Comments in the Body of the Code
Formatting Conditional Statements
Apply Rule (Line up #ifTrue:ifFalse:) to All
Indent #ifFalse: (When Not Lined Up)
Line up #ifTrue:ifFalse:
Formatting Indentation
Indent Long Keywords in Cascades to All
Indent Nested Receivers
Formatting Keywords
Always Put a Single Keyword on the Same Line
Formatting Line Breaks
Blank Line before body of method
Formatting Parentheses
Line up Array Parentheses
General Formatting
Add Optional Periods
Advanced Options
Formatting Code Indentation
Formatting Comment Indentation
Formatting Margins
Saving and Loading Your Settings
Troubleshooting
Bibliography