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