|
The PJX Analyzer is a utility that determines the contents of a Visual FoxPro application
by examining the application's PJX file and associated files. The information from
that examination is concisely displayed through a graphical user interface and printed
reports.
The primary use is for application assessment and analysis. The information gathered
by PJX Analyzer provides initial metrics for the size and complexity of a VFP application.
This is a necessary step to estimate the level of effort and the required level
of skill involved in a conversion or rewrite of the application to another platform,
such as .NET.
There are two versions of the PJX Analyzer:
PJX Analyzer Lite A free download version that will perform
the examination of an applications project and display major statistics and metrics
determined during the application examination. Please contact I.J. Ikävalko at
or (832) 717-4445 x 32 to get download info.
PJX Analyzer Pro The full version of PJX Analyzer has a suite of ten
analytic subsystems. Each analytic subsystem contains a flexible GUI and printed
report to facilitate a detailed analysis of the respective application components.
The purchase price for the Pro version is $129.00.
Results of a PJX Analyzer examination are stored in XML files which may optionally
be e-mailed to EPS Software for further analysis at
.
The PJX Analyzer examines the application's PJX file to determine the number of:
- Class Libraries (VCX)
- Forms (Screens) (SCX)
- Programs (PRG)
- Reports (FRX)
- Labels (LBX)
- Database Containers (DBC)
- Free tables (DBF)
- Menus (MNX)
- RQBE Queries (QPR)
- Icon files (ICO)
- Text files (TXT)
- FoxPro Libraries (FLL)
- FoxPro Applications (APP)
- Other files (e.g. MNX, BMP, MSK, GIF)
|
|
The PJX Analyzer reduces the detailed application
metrics to determine project-wide metrics including:
- Number of classes, procedures, functions and ActiveX controls.
- Number of commands, average number of
commands per procedure (or function or method), and maximum number of commands per
procedure/function/method.
The project-wide statistics and metrics are available in both the PJX Analyzer PRO
and Lite versions. Detailed statistics and metrics are available in the PJX Analyzer
PRO version.
The PJX Analyzer will examine the application's class libraries (VCX) to determine
the contained classes. The PJX Analyzer will then determine for each class in the
class library the number of:
- Commands
- Procedures
- Functions
- Containers
- PageFrames and Pages
- OptionGroups and OptionButtons
- CommandGroups and CommandButtons
- Grids
- Other UI controls (e.g. textBox/editBox/checkBox/button)
- ActiveX controls
- Class libraries external to the class library being examined
|
|
Metrics:
- Most Commands The largest number of commands
in any procedure, function or method in a class.
- Nesting Depth The container nesting depth
for a given control.
- Subclassing Depth The number of times
VFP must invoke a ParentClass before a control is completely instantiated.
The PJX Analyzer will examine the application's forms/screens (SCX) to determine
the number of contained:
- Control Types (by BaseClass)
- Commands
- Procedures
- Functions
- Containers
- PageFrames and Pages
- OptionGroups and OptionButtons
- CommandGroups and CommandButtons
- Grids
- Other UI controls (e.g. textBox/editBox/checkBox/button) and baseclasses for those
controls
- ActiveX controls
- External class libraries
- The PJX Analyzer will also determine if the form has a private data session.
|
|
Metrics:
- Most Commands The largest number of commands
in any procedure, function or method in a form.
- Nesting Depth The container nesting depth
for a given control.
- Subclassing Depth The number of times
VFP must invoke a ParentClass before a control is completely instantiated.
The PJX Analyzer examines any VCX classes referenced by the form to determine if
there are additional controls within the VCX classes, not explicitly referenced
by the form. Container nesting and subclassing metrics include the impact of VCX
classes on the form. However, the count of procedures and functions, and the commands/most-commands
metrics are restricted to the form. Procedures, functions and commands in referenced
VCX classes are not counted because they are counted in the VCX metrics.
The PJX Analyzer will examine the application's report and label forms (FRX and
LBX) to determine the number of contained:
- Controls
- Controls with expressions (code)
- Groupings
- Variables
- ActiveX Controls
- The PJX Analyzer will also determine if the report form has a private data session.
|
|
The PJX Analyzer will examine the application's program files (PRGs) to determine
the number of:
- Command lines
- Classes
- Procedures
- Functions
- Most command lines per procedure or function
|
|
The PJX Analyzer will examine the application's database containers (DBCs) to determine
the number of:
- Contained tables
- Views
- Relations
- Stored procedures
- Connections
The PJX Analyzer will examine the application's free data tables (DBFs) to determine
the number of:
The PJX Analyzer will determine the individual ActiveX controls used by the application
and the number of times each ActiveX control is instantiated in the application.
- Commands The number of VFP commands (versus the number of lines
of code). Often code is broken across multiple lines and separated with comments
and blank lines. This is a highly desirable practice which can dramatically enhance
code legibility, especially with SQL queries. However, variations in style will
lead to inconsistent metrics regarding the actual quantity of code. The PJX Analyzer
strips out non-command lines (comments and blank lines) and concatenates command
lines that are broken with line continuation characters (";"). Therefore, the number
of commands is the actual number of VFP commands, regardless comments and
coding style.
- Most Commands The largest number of commands in any procedure or
function in a class, form or program file.
- Nesting Depth The container nesting depth for a given control (e.g.
The textbox at the end of MyForm•PageFrame1•Page1•cntHoldAddress•txtZipcode
would be nested four levels deep… hint: Count the dots). The PJX Analyzer determines
the deepest nesting and the average nesting for all controls in a class or form.
The container nesting depth analysis applies only to forms and visual class libraries.
- Subclassing Depth In the PJX Analyzer, the subclassing metric is
the number of times VFP must invoke a ParentClass before a control is completely
instantiated (e.g. A credit card textbox control that is optimized to validate credit
card numbers is subclassed from a textbox class which is subclassed
from the VFP textbox base class. The credit card textbox control has a subclassing
metric of two). The PJX Analyzer determines the deepest subclassing depth and the
average subclassing depth for all controls in the class. The subclassing depth analysis
applies only to forms and visual class libraries.
- Data Reduction The transformation of raw data into a more useful form of
data.
Dynamically order the grid by columns If a column's header caption
includes a trailing exclamation point ("!") that column can be reordered by clicking
on the header. One click will set the column to an ascending order and the header
caption will be bold. A second click will set the column to a descending
order and the header caption will be italicized. Successive clicks will toggle
the ordering between ascending and descending. The column is reset to its natural,
un-ordered state by right-clicking the header. Columns cannot be dynamically ordered
if the header does not contain a trailing exclamation point. Reports associated
with grids are sensitive to the order of the dataset in the grid; if the PRG grid
shows program files with the most commands at the top, the PRG report will have
those program files listed first.
Incremental search All columns have built-in incremental search capability.
Click in any cell of a column and start typing. The incremental search is case-insensitive.
Multi-select grid rows to refine printed reports Reports associated
with grids can be refined by selecting rows in the grid to be printed in the report.
Select multiple rows in a grid by control-clicking the checkbox in the first
selected row (called "anchoring" the multi-select). Shift-click the last
row to be selected. The shift-click will change all rows between the first and last
row to the state of the last row selected (checked or unchecked). "First" and "Last"
rows refer to the chronology of selecting the rows. The "Last" row selected can
be above the "First" row.
Results of the PJX Analyzer project examination are stored in a set of XML files.
The XML files are written to the PJX Analyzer's directory. The XML files can be
moved to another directory and accessed via the PJX Analyzer without rerunning the
examination. However, if a new examination is run and a previous examination's XML
files are in the PJX Analyzer directory, the old XML files will be deleted when
the new examination is run.
The PJX Analyzer was developed with Visual FoxPro version 8. It has been tested
with VFP versions 7 through 9 (SP1) on Windows XP Pro SP2.
|