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
Creating a Problem
Running Reviews
Browsing the Results
Fixing the Problems
Code Critic and the Development Browsers
Reviewing Configuration Maps
Reviewing Applications
Reviewing Classes
Reviewing Methods
Code Critic Options Dialog
Selecting which Reviews to Run
Configuration Map Reviews
Missing Config Comment/Notes
Application Reviews
Missing WasRemovedCode
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
Common Properties
Specific Properties
Modifying Properties
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
File Menu
Edit Menu
Review Menu
Result Menu
Info Menu
Advanced Concepts
Framework Configuration Maps
Code Critic Framework Classes
Implementing Your Review Subclass
Mandatory Methods
Optional Methods
Example
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)
Memory Size for Applications
Prerequisites
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
File Menu
Edit Menu
Metric Menu
Result Menu
Info Menu
Framework Configuration Maps
Code Metrics Framework Classes
Implementing Your Metric Subclass
Mandatory Methods
Optional Methods
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
Coverage on Applications
Using the Code Coverage Browser
Layout of the Code Coverage Browser
Launching the Code Coverage Browser
Status Area
The Control Buttons
Refreshing the Browser
Ignoring Components
Restoring Components
Saving and Loading Your Coverage Setup
Reporting Results
Exporting Reports to Text
Exporting to Spreadsheet
Printing Results
Adding a Comment to the Results
Menus
File Menu
Edit Menu
Applications Menu
Classes Menu
Methods Menu
Info 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
OTIML—OTI Markup Language
RTF—Rich Text 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
Block Arguments on the Start Line
Block Variables on a New Line
Line up Brackets
Space between Square Brackets
Start Open Brackets on the Same Line
Formatting Comments
Format Comments in the Body of the Code
Format Method Header Comment
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
Always Split Keywords
First Selector of Long Keywords on the Same Line
Keep #to:do: on the Same Line
Keep Right-Hand Side of an Assignment (:=) on the Same Line
Formatting Line Breaks
Blank Line before body of method
Blank Line before Method Comment
Blank line before pragmas
Blank line before temps
Retain Existing Blank Lines
Formatting Parentheses
Line up Array Parentheses
Line up Parentheses
Space between Parentheses
Start Open Array Parentheses on the Same Line
Start Open Parentheses on the Same Line
General Formatting
Add Optional Periods
Add a Space after Return (^)
Use the Maximum Width (Ignore the Window Width)
Advanced Options
Formatting Code Indentation
Code
Code Continuation
Formatting Comment Indentation
Beside Line of Code
Comment
Comment Continuation
Formatting Margins
Maximum Width
Minimum Width for Comments
Saving and Loading Your Settings
Troubleshooting
Published RTF documents are incorrectly formatted (for example, tables are too narrow)
Formatting rules do not always seem to work
Some of the browsers do not have a Tool menu
Code Coverage report percentages do not add up to 100%
Code Critic or Code Metric cannot be unloaded
Code Coverage cannot be unloaded
Bibliography
ENVY®/QA User Guide
Bibliography