Project Reports

Overview

Migration Project reports provide high-level information about the nature and status of your migration project tasks, configuration, and workspaces.

Project Summary

This is a text file mashup of three other reports:

  • The brief set of summary metrics that is displayed when you click [Project Summary] on the [Information] Panel.  
  • The listing produced when you click [Help/Check Environment] from the menu.  
  • The content of the active Migration Project file.

Metrics Summary

This is a high level html report providing summary counts about the source codebase.

Migration Set

A high level report detailing the current attribute values for each migration task

MigName ' Name of parent migration project
SrcName ' Unique identifier of the task within the migration project
SrcSize ' Source LOC for VBP/ASP (a negative value for missing files)
IntName ' Internal Name of Migration Task (e.g. VBP.Name)
RefStat ' Interface description file status (see LibStat Flags)
SrcBlds ' VB6 Build Status (SUCCESS|FAIL)
TrnStat ' Translation Status (SUCCESS|WARN|ERROR|ABEND)
NetSize ' Source LOC for .NET code (includes RESX, CODE, PROJ)
NetBlds ' .NET Build Status (SUCCESS|FAIL)
LastMsg ' Last status message
UsrCmnt ' User comment for tracking and documentation purposes
NetLang ' Target .NET Language (csh|vbn)
UsrDesc ' Task description for tracking and documentation purposes
SrcOrdr ' Source build order based on Vbp references or Asp #includes
SrcFldr ' Location of source file (Vbp or Web content)
SrcFile ' Name of migration project source file
SrcType ' Type of migration project (VBP|WEB|XML)
BldPath ' Path of build product
BldType ' Type of build product (VBP:Exe|OleDll|OleExe|Control or WEB:PULP|INCLUDE|PAGE)
TScript ' Translation script template name
UsrCmds ' User command script to run after key processing steps
TaskTag ' tag (used to help identify files and directories associated with each unit/task)
SrcDesc ' VBP Project Title, or file path for ASP

All Logs

A consolidated listing of the logs and migration task attributes; an audit of inputs and outputs (free form)

.NET Build Log

The .NET build logs, parsed, tabulated, and aggregated. Answers the question: What is breaking the build?

PrjName ' .NET Project File Name
TaskTag ' Migration Task Tag
SrcName ' Migration Task Name
RunDate ' Build Log Date
MsgType ' Build Log Message Type
MsgTool ' Build Log Message Tool
MsgNumb ' Build Log Message Number
MsgText ' Build Log Message Full Text
GenText ' Build Log Message Generic Text
SrcFile ' Build Log Message Source File Name
SrcRecd ' Build Log Message Source Location
SrcText ' Build Log Message Source Content
SrcMemb ' Build Log Message Source Member containing the error (C# only) PrjFldr ' Build Log Message Source Folder SrcOrdr ' Migration Task Build Order
SrcType ' Build Log Message Source File Type

Automated .NET Code Review

Note that the Build Log report will tabulate code analysis results if they are in the MSBuild log. This can be a convenient way to run an automated code review of your new .NET codebase. See Code Analysis in MSDN for additional details on using MSBuild for code reviews.

To activate this, you can add a RunCodeAnalysis element to the .NET project file. This can be made an automated step in the upgrade process by adding an Author/Fix (aka a Post-Edit) to the template upgrade script as shown below.

<Author>
...
<Fix name="Post-Edit">
<Replace name="Activate Code Analysis" lang="csproj">
<OldBlock><![CDATA[
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
]]></OldBlock>
<NewBlock><![CDATA[
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <RunCodeAnalysis>true</RunCodeAnalysis>
]]></NewBlock>
</Replace>
</Fix>
</Author>
 

The resulting build log may contain code review messages, for example:

MSBUILD : warning CA1060: Microsoft.Design : Because it is a P/Invoke method, 'basForm.GetWindowPlacement(int, ref basForm.WINDOWPLACEMENT)' 
  should be defined in a class named NativeMethods, SafeNativeMethods, or UnsafeNativeMethods. 
  [C:\gmClients\Client\proj\deploy\App\Sample.csproj]

This information will be captured in the .NET Build Log Report fields:

Project Name        = Sample.vbp
Task Tag            = std
Dialect             = csh
Source Name         = MigName-App-std-csh.NETBld.log
Run Date            = 2017/09/16 10:20
Message Type        = warning
Tool                = CODEREV
Message Number      = CA1060
Message Text        = Because it is a P/Invoke method, 'basForm.GetWindowPlacement(int, ref basForm.WINDOWPLACEMENT)' should be defined in a class named NativeMethods, SafeNativeMethods, or UnsafeNativeMethods.
Generalized Text    = Microsoft.Design
Source File Name    = 
Source Task Type    = -
Source Text         = -
Source Record       = -
.NET Project Folder = 'C:\gmClients\Client\proj\deploy\App'
Build Order         = _0001

Translation Log Report

Translation Logs: the translation logs, parsed, tabulated, and aggregated. Answers the question: What is happening during translation?

SrcName ' Migration Task Name
RunDate ' Migration Task Translation Date
MsgType ' Translation Message Type
MsgNumb ' Translation Message Number
MsgText ' Translation Message Full Text
GenText ' Translation Message Generic Text
SrcFile ' Source File Name
SrcType ' Source File Type
SrcPosn ' Source File Location Column
SrcText ' Source File Content
SrcRecd ' Source File Location Line

Translation Audit Report

The Translation Audit report is a Target Code Scan for a list of .NET code patterns that when found indicate issues that will potentially require resolution in some way. This list of search terms is distributed with gmStudio in the CodeScanList.txt file as the Translation Audit PRESET:

PRESET Translation Audit (as of 10/8/2022)
ref argTemp
\(object\)
\(dynamic\)
\bCallByName\b
&\(+dynamic\)\w+\)*\.\w+
&CallByName\(\S*,"\S*"
&gmRTL(\.\w+)+
UPGRADE_TODO
UPGRADE_INFO
\w+_migname

The Translation Audit is a technique for identifying Custom Upgrade planning.  Most Translation Audit items are resolved automatically by common Custom Upgrade features such as COM API replacements and Type Inference optimization or the automated integration of hand-written .NET code developed for other applications.  Occasional outliers may have to be dealt with using one-off solutions.   Some of the Translation Audit Items are described as follows:

  • dynamic, this token indicates that a specific object.member reference was not recognized. In these cases, we want to understand why the object.member reference was not recognized so that it may be addressed by adding stronger typing in the translation rules, if appropriate.  This is less common in VB.NET which allows some dynamic calls to be passed through implicitly.  For VB.NET the pattern indicating a explicit late-call \bCallByName\b.  For some ideas on how to resolve unrecognized calls see Support Statement: Type Inference and Type Replacement and Support Statement: Type Inference Limitations
  • ref argTemp, this token in the code indicates the tool passed a temporary variable to a byref This usually occurs because the actual argument is not of a type compatible with the declared parameter. The default translations do not assign the temporary variable back to the original variable. This may or may not be a problem. There are many ways to prevent the use of argTemp: improve typing, remove the need for byref at the method definition, migrate to use a different API, overloading, etc.
  • *Resume References to gmRTL.Core.ErrorHandling.ResumeNext indicates the tool rewrote On Error Resume Next (OERN) to use the gmRTL.Core.ErrorHandling.ResumeNext ) method. Upgrading OERN to C# typically requires several different strategies reflecting the original intent of using OERN in the VB6. This work will be done as part of resolving the Error Handling Language Incompatibility issue.
  • UPGRADE_TODO these tokens in the code indicate various matters warranting inspection and review. In PWS, it appears that almost all of these issues are relating to with Error Handling code that could not be restructured automatically. These will be resolved with the Error Handling Language Incompatibility issue.

Code Bundle Metrics

Code Bundles: the code bundles, parsed, tabulated, and aggregated. Answers the question: What is the migration deployment manifest?

BundlFldr ' Bundle File Folder
BundlFile ' Bundle File Name
EntryText ' Bundle Content Name
EntryType ' Bundle Content Type
EntryExtn ' Bundle Content Extension
EntryFrst ' Bundle Content Start Location
EntryLast ' Bundle Content End Location
EntrySize ' Bundle Content Line Count

Interface File Headers

The interface descriptions, parsed, tabulated, and aggregated. Answers the question: What libraries are in play and how are they defined to the system?

FilPath ' IDL File Path
ComFldr ' COM File Folder
ComFile ' COM File Name
LibName ' COM Library Name
LibType ' COM Library Type
LibGuid ' COM Library GUID
LibVers ' COM Library Version
LibDesc ' COM Library Description

Interface File ProgIds

The COM ProgIDs defined in the COM types referenced by a migration project. Answers the question: What classes are in play and where are they defined to the system?

ProgId  ' ProgId
IdfPath ' IDF File Path