VFP Conversion Project Analyzer
 

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.

What can I use this information for?

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 .

What will it find?

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.

In Class Libraries

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.

In Forms

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.

In Report Forms and Labels

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.

In Program Files

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

In Database Containers

The PJX Analyzer will examine the application's database containers (DBCs) to determine the number of:

  • Contained tables
  • Views
  • Relations
  • Stored procedures
  • Connections

In Free Tables

The PJX Analyzer will examine the application's free data tables (DBFs) to determine the number of:

  • Columns
  • Index tags
  • Rows

ActiveX Controls

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.

Definitions for Metrics

  • 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.

Features of the PJX Analyzer Grids

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.

How the Examination Results are Stored

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.

Application Requirements

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.

 Need Help? 

EPS Software offers software tools, mentoring, consulting and training to companies looking to convert their VFP code to .NET.

Contact us for help on your VFP Conversion Project.

vfpconversion@eps-software.com
Phone (US): +1 (832) 717 4445 x 32
Telefon (Ö/D): +43 (650) 54 13 5 13
Telefoon (NL): +31 (0)23 750 5747

 

© by EPS SoftwareCorp. - All rights reserved, 1993-2008
6605 Cypresswood Dr., Spring TX, 77379, USA
Voice: (+1) 832-717-4445, Fax (+1) 832-717-4460
Email: info@eps-software.com
 

"VFPConversion", "CoDe Magazine", and "Milos Solution Platform" are trademarks or registered trademarks of EPS Software or its subsidiaries.