﻿Project Analyzer
Detailed version history (v9.0 - v10.3)
©1994-2021 Aivosto Oy - www.aivosto.com

This is a detailed version history, including every minor update and fix.
For a less detailed history starting from version 1.0, see project.chm.

v10.3.02 March 2021
        *** Bug fix ***
        1. Fixed error at startup on Windows XP SP3 and Vista.

v10.3.01 February 2021
        *** General improvements ***
        1. Support Windows 10 high DPI monitors.
        2. Dialogs fine-tuned for Windows 10.
        3. Help file modernized. Optimized for mobile devices.

        *** New code review rules ***
        1. Possibly commented-out code
           Clean up your project by getting rid of commented-out lines.
        2. Rem comment found
           Obsolete comment syntax. Mark comments with a single quote (').
        3. For conditions illogical
           The rule detects For..Next loops that won't start, loops that may 
           iterate just once and loops that may iterate forever.
        4. For with Step 1 found
           Specifying Step 1 in a For statement is redundant.
        5. Next statement ends multiple For loops
           Next i, j was found. For and Next should appear in pairs.
        6. Let statement found
           The Let keyword is obsolete and may be omitted.
        7. DefType statement found
           Relying on DefType may confuse. Declare "As Datatype" instead.
        8. On Local Error statement found
           The Local keyword is redundant. Can rewrite as On Error.
           
        *** Updated code review rules ***
        1. Default name
           Detect default project and module names such as Project1 and 
           Module1. Rule previously detected default control names only.
        2. Verify accuracy
           File constant.txt updated with the latest values of physical 
           and astronomical constants.
        
        *** VBA Plug v3.3 improvements ***
        1. Support for Office 2019 verified.
        2. Attempt to continue if export of one module fails.
        3. VBA Plug locates Project Analyzer if they are in different folders.
        4. VBA Plug output directories renamed. Sub-directories appear
           under main output directory VBAPlug.
           
        *** Reporting update ***
        1. New report: Compiler directives report.
           Compiler constants moved here from the Constants report.
        2. Summary report new features:
           - Statement counts: Totals.
           - Statement counts: If, Select, Do etc.
           - Decision counts: If, Case, While etc.
           - Operator counts: Not, And, Or etc.
        3. Summary report sections titled "Source file last modified" moved
           to File sizes and dates report. Added counts for files older than 
           15, 20, 25 etc. years.
        4. Design quality report new features and changes:
           - Line length statistics
           - Whitespace analysis, use of indentation and tab stops
           - SFIN metric is reported for VB source procedures only.
           - Name length: more details added.
           - Quality assessment reports a bit different quality levels
             for internal reuse (levels 8.0-10.0), understandability 
             (all levels) and overall quality (all levels). 
             Previous versions used somewhat inaccurate formulas.
        5. Dictionary report updated to include only names declared in 
           Basic source files. Names in binary libraries ignored.
        6. Form report updated. Added Form list with filename and caption.
        7. Control report sorted alphabetically. Indentation in HTML mode
           fixed.
        8. HTML reports updated with modern HTML. Improper tags removed. 
           HTML reports now resemble PDF reports more closely. 
           HTML table columns are aligned with each other more accurately. 
           HTML reports are now saved in UTF-8.
        9. Minor changes and optimizations in several other reports.
        
        *** Other improvements ***
        1. Hex viewer shows file properties and byte position in file.
        2. Hex viewer uses a fixed-width font if a proportional font is 
           selected for hypertext view.
        3. Detect library files in SysWOW64 directory when appropriate.
        4. Archive feature always uses long filenames. Previous versions
           resorted to short 8.3 filenames when filenames containing 
           spaces were added by clicking the Add files button.
        5. Print code and Export code as PDF features enhanced. 
           Option to ignore syntax highlighting. 
           Brackets showing code structure rewritten for clarity.
        6. Project Metrics charts fine-tuned. "Project in time" charts 
           adjusted for very long time series (well over 10 years).
        7. Variable "i" in statement "Next i" is now treated as being used
           instead of being read by the statement.
        8. The maximum number of problems visible at one time has increased
           from 20,000 to 100,000. The number of problems detected is not 
           limited.
        9. File associations no longer require administrative privileges. 
           The settings now affect the current user, not the whole machine.

        *** Breaking change ***
        1. Custom CSS files for HTML reports (set in HTML options) require 
           updating. HTML reports now use heading levels H1..H4 instead of 
           the previously used H2..H4.

        *** Changes with metrics ***
        1. Cyclomatic complexity metrics (CC, CC2, CC3) now count each target 
           line of On..GoTo and On..GoSub statements as a branch or decision.
           The change also affects TCC and DECDENS.
        2. Metric STMTc Control statements now includes the number of Yield 
           and Throw statements. Due to an error, the following statements 
           were incorrectly counted twice: On Error GoTo, On..GoTo, On..GoSub.
           Calculation routines for STMTc have been updated, which may result
           in slight changes to the values.
        3. Metric STMTnc Non-control statements is affected by the changes in 
           STMTc, but in reverse.
        4. LEN Length of names includes names of projects and compiler 
           constants, which were ignored before.

        *** Legacy syntax improvements and fixes ***
        1. Support legacy If statements:
           If..GoTo linenum
           If..Then linenum Else linenum
        2. Support undocumented statements:
           Global Sub, Global Function, Global Property, 
           Global Type, Global Enum
        3. The legacy Shared keyword in a classic VB Dim Shared statement 
           was erroneously mixed with the Shared keyword of VB.NET. The 
           Shared keyword has no effect in classic VB while it does have 
           an effect in VB.NET.
        4. The CDecl keyword in a Declare statement no longer causes the 
           declaration to be ignored. The keyword has no effect in Windows.
        5. Fixed support for line numbers longer than 5 digits.
        
        *** Bug fixes ***
        1. VBA Plug failed if a module name was unsuitable as a file name.
        2. Design quality report showed an incorrect number of procedures 
           for metric SFIN: 10- High reuse.
        3. "Magic number found" is no longer reported for line numbers in a 
           GoTo, GoSub, Resume or On Error Resume statement.
        4. "Unreachable code" is now reported after a Throw statement.
        5. "Dead line number" is no longer reported if line numbers are used
           by the Erl function in the procedure.
        6. Fixed statement "Next i, j" with multiple variables.
        7. Fixed statement "Case x(1,2,3)" with commas in parentheses.
        8. Fixed VB keywords used as field names in user-defined types.
           Example: GoTo As String.
        9. Fixed Project Metrics issues with negative values
           ("Project in time" tab).
        10.Fixed analysis of single-line functions.
        11.Comments at the end of compiler directive lines are now recognized.
        12.Fixed support for VBA7 LongLong constants with type char: 12345^
        13.Disabled some inaccurate type inference for constants.
        14.Fixed auto-fix bug with relative path in Reference line in .vbp.
        15.Fixed Control report: Event handlers were missing before 
           phase 2/2 was completed.
        16.Fixed FRX file viewer problem with Text of multiline TextBox.
        17.Fixed FRX file viewer showing Icon as Cursor.
        18.Fixed bug with FRX files larger than 64 kB.
        19.Fixed auto-fix with some rare single-line If..Then syntax.


v10.2.07 August 2019
        *** Bug fix ***
        1. PDF reports failed with message:
           "Error opening output file. Redirecting to display."
           Error was caused by Windows update of August 13, 2019.

v10.2.06 January 2019
        *** Improvement ***
        1. Online help improved to become readable with mobile devices.
        
        *** Bug fix ***
        1. Fixed Summary report: man-years were calculated differently 
           from man-months for VB.NET projects with generated code.

v10.2.05 July 2017
        *** Improvements ***
        1. Hex viewer uses fixed-width Courier New in place of MS Gothic.
        2. VBA Plug now supports Conditional Compilation Arguments in
           Access projects.

        *** Bug fixes ***
        1. Error #28 Out of stack space occurred with very large Enums
           having well over 3500 constants.
        2. In VBA projects exported from Office 2010 and later, the built-in
           compiler constant Vba7 was incorrectly displayed as Vba7=False.
           The actual analysis correctly used Vba7=True.

v10.2.04 January 2016
        *** Compatibility improvements ***
        1. Office 2016 VBA support added to VBA Plug v3.2.
        2. Visio 2016 support added to Enterprise Diagrams and VBA Plug.
        3. Windows 10 support ensured.
        
        *** Other improvements ***
        1. Type inference support added for VB.NET syntax "For Each x In y".
        2. Hex viewer displays NUL, TAB, CR and LF with special symbols.
        3. VBA Plug now ignores empty projects / Office files with no VBA.
        4. .exe and .dll files now have SHA-256 signatures for compatibility with
           "Windows Enforcement of Authenticode Code Signing and Timestamping".

        *** Bug fixes ***
        1. Error #6 Overflow could occur with certain floating point values
           such as 4.94065645841247E-324.
        2. VBA Plug: Opening an Excel file for the 2nd time failed with
           message "No VBA project (0)".
        3. Type inference was not working with this syntax
           Dim xyz = New xyz() 
           if the variable and class had the same name. This led to false
           dead code warnings.
        4. Call to member was ignored in this syntax:
           x = New class().member
        5. Dead variable: Random variables were marked as dead in VB.NET.
        6. Unreachable code: When the "Then" branch of "If..Then" is 
           unreachable, the "If" statement was incorrectly marked as 
           unreachable as well.
        7. Syntax "If..Then:" with colon after Then is now correctly handled.

v10.2.03 February 2015 --- 20 years since first public release
        *** Improvements ***
        1. Optimized PDF code (smaller files).
        
        *** Bug fixes ***
        1. Project Metrics Viewer crashed with Options, Selections, Add.
        2. Error #6 Overflow could occur at startup for Far Eastern users.
        3. Several minor fixes and protection against potential crashes.

v10.2.02 Custom build (not released)

v10.2.01 February 2014
        *** New and improved features ***
        1. Visual Basic 2013 support added.
        2. Project Printer prints formatted code.
        3. Reporting update, see below.

        *** Improvements with reporting in general ***
        1. Printed reports use improved formatting, similar to PDF.
        2. RTF formatted output improved, incl. reports and copy & paste.
           - Improved compatibility with WordPad on Windows 7 and 8
           - Improved compatibility with non-Ansi characters, incl. Japanese
           - Added page headers
           - Reasonable page size and margins
           - Optimized RTF code
        3. PDF reports improved:
           - Word wrapping improved, especially for Project Printer
           - Supports more Unicode characters
           - Optimized PDF code
        4. Text reports (plain text):
           - Reformatted.
           - Copy and Save from Display report to plain text is now 
             equal to the Text report format.
           - Automatically saved in UTF-8 when necessary.
        5. CSV report compatibility with Excel improved.
        6. Too bright report colors replaced with more subdued colors.

        *** Improvements with individual reports ***
        1. Source report improved in dialog View|References.
        2. Procedure list with details: Formatting redesigned. 
           Added links to called procedures (HTML and PDF reports).
        3. File list with details:
           Directory list section added.
           Filenames in Required files section are now links (HTML and PDF).
        4. Form report:
           Added links to shown forms (HTML and PDF reports).
        5. Call tree reports less likely to become overly large.
        6. Duplicate code report: Formatting improved.
           Summary section added with duplication rate and stats.
        7. Library report: Sort orders redefined. Minor improvements.
        8. Module list: Binary modules removed. List only source modules.
        9. Variable use report reordered.
        10.Files and projects report:
           File counts section added.
           Reordered for clarity.
        11.Module interface report reordered. Internal links added (HTML and PDF).
        12.Module members reports: Internal links added (HTML and PDF).
        13.Super report reordered for clarity.
        14.String literal report lists non-ASCII strings for portability check.

        *** Other improvements ***
        1. Default fonts changed for Japanese users.
        2. Copy HTML from code view supports non-Ansi characters.
        3. When analyzing a directory, "Sub Main" in a file that doesn't
           belong to any project is assumed to be in use.
        4. Symbol update with both dialogs and reports:
           Certain plain ASCII symbols such as +, < and > have been 
           replaced by alternative symbols such †, ‹ and ›. 
           Symbols are only used in locales where available.
        5. "Encapsulate non-private variable as property" is not reported 
           in classic VB for public variables of an interface class.
           In that case, defining data as a variable, rather than a property,
           is considered good style.
        6. Auto-fix will not remove dead events from classes that are used 
           with WithEvents variables. In that case, VB may complain about 
           WithEvents with no events.

        *** Bug fixes ***
        1. Fixed HTML report table headings to left-align.
        2. Fixed copy to Clipboard from code view:
           - Fixed option "Line numbering in copy" in plain-text copy
           - Last character is no longer dropped in RTF and HTML copy
        3. Enterprise Edition features were accidentally disabled in v10.1
           demo. They have been re-enabled.
        4. Binaries option enabled for VB.NET projects in windows:
           Variables, Constants and Parameters, Modules, Procedures, Data types.
        5. Project Printer reported incorrect dead code status for 
           Types and Enums.
        6. Project Printer with VB3 project showed error message and missed
           String literal list.
        7. Use replacement ASCII symbols in locales where special 
           non-ASCII symbols are not available.
        8. FRX file view bugs fixed in non-Western locales.
        9. Binary VB3 file detection bugs fixed in non-Western locales.

v10.1.01 April 2013
        *** New and improved features ***
        1. Visual Basic 2012 support added.
        2. Office 2013 VBA support added to VBA Plug v3.1.
        3. Visio 2013 export supported in Enterprise Diagrams.
        4. Summary report enhanced. Improvements include:
           - Count generated lines
           - Count lines excluded by conditional compilation
           - Count line labels and compiler constants
           - Estimate work effort in man-months
           - Details on source file last modified dates
        5. Design quality report enhanced. Improvements include:
           - Bad fix probability
           - Object-orientedness
           - Quality assessment (Overall quality level)
        6. Compiler constants included in Constant list and Dictionary report.
        7. Archive dialog improved. Option to create UTF8 encoded list file.
        8. Google Chrome compatibility improved with HTML report styles (CSS).
        9. Block-level local variables and constants supported in VB.NET.

        *** New code review rules ***
         - Dead line label or number
         - Dead compiler constant
         - Undefined compiler constant

        *** Updated code review rules ***
         - "Unused file" shows "Exposed" where a classic VB library 
           or control project is analyzed alone and the project includes a public
           .ctl or .cls file that is not used by the project itself, but should
           be used by external projects. (Bob Vesterman)
         - "Condition always True" no longer triggers for the following:
           Select Case True
              Case A=B
           (Richard Brooker, Robert Meklo)
         - "Assigned value not used" no longer triggers for variable ex in
           Catch ex As ExceptionType. (Jeremy Yoder)
         - For the following problems, the conditional expression is displayed:
           "Conditional block excluded"
           "Condition always False/True"
           "Condition always False/True at run-time"

        *** Bug fixes ***
        1. Project Printer: Error #14 Out of string space (Jeffrey Best)
        2. Fixed parser bug with generic functions: As type1(Of type2)
        3. Fixed xxx.Return mistaken for a Return statement. (Jeremy Yoder)
        4. Fixed extra "Return value discarded" with classic VB:
           * DoEvents              (return value generally not useful)
           * Err = 0               (return value not discarded)
           * Seek statement        (not Seek function) (Richard Brooker)
        5. Fixed extra "Return value discarded" with MsgBox:
           * MsgBox with OK button (return value not useful)
        6. Fixed GoTo/GoSub where a line label and a procedure had identical 
           names. (Michael Heeg)
        7. Fixed extra "Unreachable code found" at end of VB.NET property 
           accessor. (Trevor German)
        8. Constant list: removed extra "As" from Consts without a typename.
        9. Fixed crash in HTML report options when Monochrome was selected.
        10.Fixed statement metrics (STMT, STMTc) with Else: followed by colon.

        *** Changes ***
        1. Summary report changed for .NET Classes and Namespaces.
           "Classes" counts whole classes. Partial Classes are joined.
           "Namespaces" counts namespaces, not individual Namespace statements.

        *** Removed features ***
        1. WinZip support removed from Archive feature. Use built-in Zip instead.
        2. Visio 2002 support removed from Enterprise Diagrams. Use newer Visio.

v10.0.07 January 2013
        *** Bug fix ***
        1. Problem option "Magic number" was not correctly stored. 
           (Guenter Schramm)

v10.0.06 October 2012
        *** Improvements ***
        1. Supports high-density displays.
           (Example: Windows 7, font size "Larger 150%")
        2. Uses smoother ClearType enabled font in dialogs.
           (Microsoft Sans Serif replaces MS Sans Serif when available)

        *** Bug fixes ***
        1. Fixed Super Project Analyzer where it displayed an empty title
           for "Analyze directory" projects.
        2. Fixed splitter bar ghosting problem.
        3. Some dialogs adjusted and glitches fixed.

v10.0.05 November 2011
        *** Improvement ***
        1. Added some constants to "Verify accuracy" rule 
           in file constant.txt

        *** Bug fixes ***
        1. Fixed crash opening dialog "Export code as PDF".
           (Jorma Tuppurainen)
        2. Fixed missing "Unreachable code" at the end of procedures.
           (Michael Heeg)
        3. Fixed constant e in file constant.txt

v10.0.04 May 2011
        *** Improvement ***
        1. For problems related to fields, such as "Dead type field", 
           the type name is listed along with the field name to help
           telling apart fields in different types. (Bob Vesterman)

        *** Bug fixes ***
        1. Fixed bug with syntax where colon follows a statement
           consisting of a single keyword. (Rob Eggins)
           Else:
           Loop:
           Next: 
           Wend:
           End: Stop: Resume: Return:
           Print: Close: Randomize: 
           Do: (this one was already working ok)
        2. Problem Options did not correctly persist. (Bob Vesterman)
           - WithEvents adds overhead
           - Events not handled

v10.0.03 January 2011
        *** Bug fixes ***
        1. Fixed #28 Out of stack space during phase 2/2. Happened where
           variable name reappeared in initializer: Dim x = CType(.., x)
           (Lynn Owens)
        2. Fixed #28 Out of stack space at end of phase 2/2 (status 8).
           Happened with long procedures. (Lynn Owens)

v10.0.02 January 2011
        *** Bug fixes ***
        1. Fixed #28 Out of stack space with excessively large
           procedures during phase 2/2.
        2. Fixed Project Metrics Viewer errors with excessively large
           metric values (IC1).

v10.0.01 November 2010
        *** Major new features ***
        1. VB.NET 2010 support. 
           Analyze all code written in VB 3-6 and VB.NET 2002-2010.
        2. Office 2010 VBA support.
           Analyze VBA code of Office 2000-2010 with VBA Plug v3.
        3. New code review rules (31 of them)
           Find bad coding logic. List below.
        4. New reports (6 of them)
           Listings, xrefs and string literals. List below.
        5. Analyze .NET assemblies.
           References to the .NET Framework and other library files 
           are now analyzed. Enterprise Edition only.
        6. Visio 2010 support.
           Export Enterprise Diagrams to Visio 2002-2010. 
           Enterprise Edition only.

        *** New code review rules (31 rules) ***
         - Magic number found
           A numeric literal is not defined as a constant.
         - Verify accuracy
           A floating point constant may be imprecise.
         - Optional parameter never passed a value
           An Optional parameter is never passed as a call argument.
         - Empty block
           This rule reports empty blocks such as If, Else, Catch.
         - Slow ^ operator found
           Replace ^ by one or more multiplications.
         - CreateObject found
           Use "As New" early binding instead of late binding.
         - Possibly orphaned event handler
           Sub no longer handles any events.
         - Event handler called directly
           Event handlers should not be explicitly called.
         - Implementation called directly
           Should not call a procedure that implements an interface.
         - Event handler should be Private
           Prevent other modules from calling it directly.
         - Implementation should be Private
           Prevent other modules from calling it directly.
         - Non-instantiatable class has instance members
           Instance members are inaccessible.
         - Class/Structure nested inside Interface
           Bad programming style.
         - Unreachable code found
           A block of code never executes because it is not reachable.
         - Variable read before written (along some path)
           Potential logic mistake.
         - Variable read before written
           Variable always contains its default value at this point.
         - Object read before written (along some path)
           Run-time error (null pointer reference) could occur.
         - Object read before written
           Run-time error (null pointer reference) is likely.
         - Assigned value not used
           Useless assignment, check logic.
         - Assigned object not used
           Useless assignment, check logic.          
         - Parameter value not used
           Logic flaw: Parameter is overwritten before ever read.
         - Passed value not used
           Receiving procedure doesn't use a value. Could optimize.
         - Loop runs only once
           Potential logic flaw. Why loop just 1 time?
         - Loop runs forever
           No reachable exit from this loop. Potential jam.
         - Condition always True or False at run-time
           Statement is unconditional due to run-time conditions.
         - Rewrite Sub as Function
           Use return value instead of 'out' parameter.

        New review rules that replace old rules:
         - Microsoft.VisualBasic.Compatibility imported 
           Replaces old rule "Microsoft.VisualBasic imported"
           The Compatibility namespace is a style problem while the 
           VisualBasic namespace is not. (reported by Eric Burdo)
         - Conditional block excluded
           #If or #Else block condition is False.
           Replaces old rule "Conditional block will not upgrade to 
           VB.NET" and is now available in all editions.

        3 rules replace old rule "Return and Exit statement found":
         - Exit Sub|Function|Property found
         - Exit statement found (other Exit statements)
         - Return statement found (VB.NET)
           (idea by Martin Baum)


        *** Code review rules changed ***
        1. Short name: 
           - New option to allow single-character local variables 
             (i, j, k...) used as For index variables. 
           - Removed option to allow single-character local integers.
           - Allow e As System.EventArgs in VB.NET
           - Allow Catch ex [As Exception] in VB.NET
           - Allow any parameter length in DLL declarations
           - Allow numeric x and y used as a pair of parameters or local
             variables.
           - Report short names of Enum constants and Type fields.
        2. Initializer missing for variable:
           - Now raised for Shared fields of a Structure
        3. Dead variable: Variables in VB.NET Structures marked with
           <ComVisible(True)> are exposed. They may be used via COM
           and are not reported as dead code unnecessarily.
        4. ByVal parameter written to:
           - Shows up at every location where a write happens.
           - Doesn't show up where a potential write can't be verified.
        5. Conditional error handling is no longer reported as a missing
           error handler. Example of an acceptable error handler:
           If Not DebugMode Then On Error Goto x
        6. Default member variables are no longer reported as dead code.
        7. Problem list to show max 20,000 problems at a time.

        *** New reports ***   
        1. Variable list. Shows all variables and data type summary.
        2. Constant list. Shows all constants and data type summary.
        3. Procedure references report: Shows procedure call sites.
        4. Variable references report: Shows access to each variable.
        5. Constant references report: Shows access to each constant.
        6. String literal report: Shows all string literals with
           context. Lists all strings alphabetically, ready for copying 
           to a translator or a spell checker.

        *** Report improvements ***
        1. File list with details improved.
        2. Procedure list: Added color. Removed binary procedures.
        3. String literal analysis: Added color.
        4. Variable use report sorted alphabetically and clarified.
        5. Files and projects report can accommodate more projects.
        6. Problem report by location: Files sorted alphabetically.
        7. VB.NET compatibility report considers issues with dead code.
        8. Summary report and Design Quality report improved.
        9. PDF reports: Line wrapping improved.
        10.PDF reports saved from Display window include page headers
           and a PDF outline (instead of TOC).
        11.Module interface report: Sorted hierarchically.
        12.Module members report: Sorted hierarchically.

        *** New metrics ***
        1. dUDTS   Dead user-defined types
        2. dENUMS  Dead Enums
        3. dENUMCS Dead Enum constants
        4. SDENS   Statement density. SDENS=STMT/LLOC

        *** Other improvements ***
        1. Find duplicate code improved:
           - find case-insensitively (request of Richard Brooker)
           - return duplicates within a single file as well
        2. Archive feature rewritten.
        3. Project Metrics .mtx files are now considerably smaller.
        4. New comment directive options:
           IN_THIS_PROJECT affects all files in project
           ANYWHERE affects all files in analysis
           WHERE expression affects all lines containing expression
        5. Syntax errors with comment directives now displayed.
        6. Considerable performance boost with large XML literals.
        7. Project Metrics reports are now encoded in UTF-8.

        *** Analysis improvements ***
        1. Improved detection of default member references.
        2. Improved detection of COM in/out ByRef parameters.
        3. Improved accuracy of Overloads resolution.
        4. Improved accuracy of type inference.
        5. Improved support of [keyword] syntax.
        6. Improved support of {..} syntax.
        7. Improved <Extension()> method support.
        8. Improved handling of generic types.
        9. Syntax obj=value is no longer treated as a write to obj 
           in classic VB. Writing requires the Set obj=value syntax.
        10.Letting a new value to an object's default property is now
           analyzed more accurately. Syntax obj=value in classic VB.
        11.Added support (no functionality) for XML Axis Properties:
           .<tag> and ...<tag> and .@<attrib>
        12.Added support for Widening Operator CType conversions in
           overloaded calls.

        *** Bug fixes ***
        1. Fixed Procedure list with details. 
           #Compiler directive lines were sometimes appearing 
           instead of procedure header.
        2. Fixed 2 errors with XAML .g.vb files (with VB2008 SP1):
           File not up-to-date, rebuild project
           File not found, rebuild project
        3. Fixed support for #If and #ElseIf without Then.
        4. Fixed several issues with generic type parameters (Of T).
        5. Fixed hang with Procedure call tree (all procedures).
        6. Fixed rules "Case overlap" and "Case useless": bug if
           Case statement was followed by a comment.
        7. Fixed rule "Case useless": Case 1 To 3 followed by Case 2 
           was incorrectly reported as "Case overlap" and not "useless".
        8. "For Each x In y" is treated as a write instruction to x, 
           no longer as a write+read.
        9. Fixed error with projects having a project-level compilation
           constants setting longer than 255 characters.
        10.In the hypertext view, if you had two different definitions 
           with the same name (e.g. Form1.MyVar and Form2.MyVar), both
           could have been highlighted in red. Now clicking on either
           MyVar will only display the selected MyVar in red.
        11.Reports will be created under the system TEMP directory 
           by default. Fixes UAC problems writing to Program Files
           folder. User can define any other directory for reports.
        12.Problems are now hidden for some generated .Designer.vb files
           that were erroneously treated as regular non-generated code.
        13.Fixed auto-fix bug with '! If..Then split: 
           End If was incorrectly placed before If. (Gaby Weizman)
        14.Fixed auto-fix bug with "" being replaced by vbNullString
           where "" was a quotation mark.
        15.Fixed Project Metrics "Project in time" tab, where case
           differences in a name would hide some values for the 
           selected file, class, procedure or variable.

        *** Replaced features and breaking changes ***
        1. Variables and constants report has been replaced by
           Variable list and Constant list.
        2. Macro "Report VarsNConsts" now unsupported. Replace by:
           Report Variables
           Report Constants
        3. Macro command Analyze supports new parameter BIN.
           Parameter COM is obsoleted but supported.
        4. Project Metrics .html report format changed. This only
           affects you if you parse the reports programmatically.
        5. Auto-fix replacement of "" with vbNullString has been
           disabled in VB.NET. Use of vbNullString may cause subtle
           run-time bugs in VB.NET.


v9.0.11 June 2010
        *** Bug fixes ***
        1. Fixed extra "Could move to" instruction with "Excess scope"
           problem for a Public Const used in its own declarations 
           section only (Jan Polonský)
        2. Fixed font size issue in Problem Options (Tom Owen)
        3. Fixed Windows 7 font size issue with VBA Plug (Nick Hewett)

v9.0.10 March 2010
        *** Improvements ***
        1. Added possibility to print an icon.

        *** Bug fixes ***
        1. Fixed Error #13 at startup / ClearRegistryExtra: Type
           mismatch (Jorma Tuppurainen)
        2. Fixed display glitches on high resolution displays,
           Vista/Windows 7 high DPI settings. (Tom Owen)
        3. Workaround for font size issue in Problem Options (Tom Owen)
        4. Fixed bug with VB2008 code that uses an <attribute> 
           for a parameter. (Jan Polonský)
        5. Removed "0 writes" message from constants. (Jan Polonský)

v9.0.09 January 2010
        *** Bug fixes ***
        1. Fixed Error #6 at startup / Splash: Overflow (Mike Hillman)
           Also fixed Project Printer and About box crash on a system
           with 2 large monitors (approx 1920 pixels wide).
        2. Fixed hang in Export code as PDF.
        3. Fixed errors outputting very large PDF.

v9.0.08 January 2010
        *** Improvements ***
        1. Need report accuracy improved. Where individual constants of
           an Enum are required (instead of the entire Enum), only the 
           required constants are listed. In addition, the module of
           that Enum is listed in the Modules required section. The same
           improvement also applies to individual fields of a Type.
        2. Problem "GoTo/GoSub statement found" now displays target
           line. (idea by Martin Baum)
        3. Added support for VBA Option Private Module statement.
        4. Added support for VB.NET Partial Private Sub.

        *** Bug fixes ***
        1. Fixed REM keyword in VB.NET. REM can exist at any column.
        2. Fixed Need report column #1 of Variables section in PDF mode.

v9.0.07 September 2009
        *** Bug fixes ***
        1. Fixed crash opening the File menu.
        2. Fixed preferred directory for temporary files (TEMP).

v9.0.06 September 2009
        *** Improvements ***
        1. PDF reports optimized for file size. Added support for many
           national characters including Japanese, Chinese and Korean.
        2. Hex view to display max 2048 lines instead of 1024.

        *** Bug fixes ***
        1. Fixed startup error '5': Invalid procedure call or argument.
        2. Fixed PDF reports: general bugs, national characters in
           outline.

v9.0.05 May 2009
        *** Improvements ***
        1. Lifted limit of 32767 controls.
        2. Speed optimizations.

        *** Bug fixes ***
        1. Fixed "Error #7: Out of memory" at end of phase 1/2 when
           analyzing very large systems.
        2. Fixed property references to COM files being ignored.
        3. Fixed precedence bug with a COM library and a VB project
           declaring the same name. Now VB names always take precedence.
           (Klaus Lair)
        4. Fixed Overflow in phase 2/2 with #-character syntax such as 
           Case 3456000000# To 63115200000# (John Crellin)
        5. Fixed date/time literal evaluation bugs.
        6. Fixed date/time literal evaluation earlier than #12/30/1899#
        7. Added error message when analyzing more than 32767 files.

v9.0.04 March 2009
        *** Bug fixes ***
        1. Fixed "Error #13: Type mismatch" in phase 2/2. (Robin Bailey)
        2. Local constants are properly evaluated for rules such as 
           Condition always True.
        3. Some auto-generated .g.vb files were not analyzed, causing
           extra dead code warnings with XAML forms. (Gunnar Syrén)

v9.0.03 February 2009
        *** Bug fixes ***
        1. In VB2005 and later, regular .exe projects can be referenced 
           by external projects. This fix removes unnecessary dead code 
           problems, but may cause new "dead but exposed" warnings.
           (Jeremy Yoder)
        2. Problem filter <Dead code + exposed> automatically changed
           to <Dead>. Fixed.
        3. Fixed 'This program might not have installed correctly' after 
           Configuration (config.exe) in Windows Vista.

v9.0.02 January 2009
        *** Bug fixes ***
        1. Keyword Me was handled incorrectly when tlbinf32.dll was 
           included in analysis. (Sergey Likhoded)
        2. Support for <System.Runtime.CompilerServices.Extension()>
           was missing. (Anko Groenewegen)
        3. Extension method that extends an unknown type is marked as
           live method to prevent a false dead code alarm.
        4. Fixed XML handling bug with VB2008 causing a hang/crash.
           Bug happened with syntax like <%= .<tag>.Value %>
           (Conrad Reynolds)

v9.0.01 October 2008
        *** Improvements and new features ***
        1. Support for Visual Basic 2008.
        2. Export source code as PDF.
        3. Project Printer generates source documentation as PDF.
        4. View contents of COM and DLL files as pseudo-code.
        5. View binary files with built-in hex viewer.
        6. Analyze all source files in a sub-directory tree. Analyze
           projects without a .vbproj or a .sln file.
        7. Module list report classifies modules into groups such as
           Definitions, Interface, Abstract class, Concrete class, 
           Stateless class, Dialog, Standard module and the like.
           Useful for learning to understand an existing project.
        8. <Flaw finder> set of code review rules helps locate logical
           mistakes and omissions and prevent future errors.

        *** New code review rules ***
        Rules marked with (*) can be fixed via auto-fix.
        -  Hard-coded path found
        -  RaiseEvent fails via constructor
        -  Enum missing zero value
        -  Enum with duplicate value
        -  Trailing comment found *
        -  Line too long *
        -  ReDim without Dim *
        -  For index variable not local
        -  Write-only property found
        -  Cyclic recursion found
        -  Declare contains ordinal number
        -  File with several classes or modules
        -  Implicit variable
        -  Shared constructor decreases performance
        -  Parent class inherited only once
        -  Data-only class found
        -  Dataless class found
        -  Shared-only class instantiated
        -  NotInheritable expected
        -  CVDate found, use CDate
        -  Dead parameter
        -  ByVal parameter not read
        -  Variable users all dead
        -  Variable readers all dead
        -  Variable writers all dead
        -  Variable not read, writers all dead
        -  Variable not written, readers all dead
        -  Type field users all dead
        -  Type field readers all dead
        -  Type field writers all dead
        -  Type field not read, writers all dead
        -  Type field not written, readers all dead
        -  Constant users all dead
        -  Enum constant users all dead
        -  Type users all dead
        -  Enum users all dead
        -  Enum constant expected
        -  Type inference used
        -  Optional parameter in exposed procedure
        -  Interface ambiguous
        -  Interface duplicated
        -  MustInherit class missing MustOverride methods
        -  MustInherit class inherits concrete class
        -  MustOverride overrides concrete procedure
        -  Shared expected
        -  Multiple Return statements found
        -  ReadOnly variable expected
        -  Octal number found
        -  Case branch(es) missing for Enum
        -  Condition always True or False
        -  Case useless
        -  Case overlap

        *** Improved features ***
        1. Unicode support for international characters was added to:
           - Hypertext view
           - Reports (Display, HTML, MHT, RTF)
           - PDF reports (Latin-based, Greek and Cyrillic characters)
           - Copy to Clipboard (RTF)
           - Export code (RTF, HTML, Unicode text)
           - Project Metrics
        2. Option to load international source in a different codepage.
        3. Report enhancements:
           - Variables and constants report rewritten for clarity.
             Added underlying numeric constant values.
           - Variable use report shows variable deadness status.
           - File sizes and dates report shows line count and file age.
           - Library report shows image base addresses for optimizing 
             the base address of your library projects.
           - Dictionary report displays new statistics on names.
        4. PDF reports greatly improved.
        5. Image version and compile time displayed for library files.
        6. Syntax formatting for .sln files in hypertext and print-outs.
        7. Find window improved:
           - Results displayed in an easier-to-read format
           - Option to search for "Code or String" (Klaus Lair)
        8. Print code: New option "Bracket structures" emphasizes
           conditionals and loops. (Trevor Tregellas)
        9. Auto-fix now preserves existing line continuation characters
           (_) when possible. A continued line gets reformatted only
           when the particular line is auto-fixed.
        10.Analyze several directory trees by creating a .lst file.
        11.Compatibility library detected for classic VB projects.

        *** VB2008 support details ***
        1. Option Infer
        2. Extension methods: <Extension()>
        3. Nullable types
        4. Object initializers: New With { .field=value }
        5. <InternalsVisibleTo> attribute
        6. Lambda expressions: Function(x). Partial support.
        7. LINQ
        8. WPF/XAML projects
        9. If() function

        *** Improved analysis ***
        1. Added support for single-line Type and Enum blocks.
           (Les Sullivan)
        2. Classic VB: Added support for single-line declarations such
           as Dim x:Dim y or Sub x:End Sub.
        3. Added support for date literals #10/5/2008 11:25:00#
        4. Arrays declared with ReDim (without Dim) are now detected 
           in classic VB.
        5. Support for generic Structure and Interface (Of T)
        6. Support for Structures implementing an Interface.
        7. Overloads resolution improved. The correct Overloads
           procedure is now picked more often.
        8. Accuracy of late-bound call resolution improved by taking
           account the number of call arguments. (idea by Steve Gilbert)
        9. COM procedures. If an Optional parameter has an Enum data
           type and a default value, the name of the respective Enum
           constant is displayed as the default.

        *** Problem detection improvements ***
        1. Option to Ignore dead Property Get/Set/Let if another one
           lives. This option allows read&write properties even if read
           or write is dead. (Ian Digby)
        2. Special warning for an empty procedure when it Overrides
           an ancestor class procedure. Empty Overrides deletes
           functionality of an ancestor class, which is bad class
           design.
        3. Unused file problem is enhanced in a multi-project analysis. 
           It now verifies use for each project separately. You can
           then exclude the file from some projects and keep it in those
           projects where it is used.
        4. Option to switch Dead parameter rule on/off.
           (idea by Jean-François Ménard)
        5. Overrides procedures are not subject to NameCheck, since
           their name is defined in an ancestor class. (Alex Mauer)
        6. Microsoft.VisualBasic imported rule checks project-level
           imports in addition to Imports statements. (Eric Burdo)
        7. More accurate rules for Excess Scope problem (classic VB).

        *** Performance improvements ***
        1. Reduced analysis time at end of phase 2/2.
        2. Faster processing of overly large Enums (such as 9000 lines).
        3. Project Metrics Viewer loads large .mtx files faster.

        *** Bug fixes ***
        1. Fixed Unicode character width problems in "Print code"
           feature.
        2. "Initializer missing for variable" is not reported for arrays
           with defined bounds. Cannot be initialize them. (Alex Mauer)
        3. Fixed bug where calls to Events declared "As EventHandler" 
           were not found from implementing classes. This lead to extra 
           "Event not raised" warnings. (Charles Loreja)
        4. Fixed crash reading some OCX properties. (Chaudier Guillaume)
        5. Fixed bug where COM analysis ignored files with LCID<>0 in a 
           VB 2002/2003 project. Sample file: XL5EN32.OLB.
        6. Fixed .NET startup form being reported as dead.
        7. The rule Option Strict missing was accidentally labeled 
           Option Strict Off in Problem Options. The rule considers 
           that an Option Strict Off statement is intentional, not a
           problem. A problem is triggered when project-level Option
           Strict is Off and there is no Option Strict statement in a
           file. To search for any Option Strict Off statements, do 
           a simple Find.
        8. Support added for Shared Event and Shared Custom Event.
        9. Fixed Save WMF/EMF in Project Graph.
        10.Added missing support for ReadOnly variables.
        11.Added missing support for Sub New in a Module.
        12.Added missing support for generic procedures (Of T)
        13.FRX file viewer did not always save icons and cursors 
           correctly. (Jan Polonský)
        14.Scope declaration missing no longer reported for a Shared 
           Sub New, because it you can't declare one. (Alex Mauer)
        15.Fixed dead code detection with Type fields declared As New.
        16.Dictionary report showed too low Unique names count.
        17.Fixed display problems with line continuation characters, 
           especially in Hypertext view, code print-outs and 
           Project Printer.
        18.Reduced flickering in Hypertext and Report views.
        19.Fixed crash in Enterprise Diagrams, File belongs to project
           diagram when analyzing a project directory without a 
           project file. (Richard Hurst)
        20.Saving metrics as a .xml file produced invalid XML for
           characters beyond Unicode &H7FFF (such as in Japanese).
        21.Fixed handling of keyword New in Dim x, y As New datatype.
        22.Fixed unnecessary warnings for IIf() and Choose() function.
        23.Fixed parameter <DLLImport Charset:=..  > 
        24.Fixed sorting, then double-clicking in Find window.
        25.Fixed autofix: If all variables in a Structure are dead, 
           don't removes them. A Structure without variables is illegal.
        26.Fixed autofix: Adding return typename to property named P.
        27.Fixed autofix: Don't remove dead Interface procedures if
           they are implemented. VB.NET refuses to compile implementor.
        28.Fixed autofix: Don't remove Overrides base procedures or
           children of MustOverride when required to compile.

        *** Code review rule changes ***
        1. Classification changes
         - Return value discarded: Style -> Dead code
         - Variable/function/constant missing type declaration:
           Optimization -> Style
         - Case Else missing: Style -> Functionality
        2. "Case Else missing" now reported at Select Case line.
           Move any '$PROBHIDE CASE_ELSE next to Select Case.
           Case Else is no longer required if existing Case branches 
           cover all theoretically possible input values.

        *** VB.NET Compatibility Check changes ***
        1. Rules updated to cover upgrading code from VB6 to VB2008, 
           with Visual Basic Power Packs 3.0 installed.
        2. Removed compatibility rules (and reason why removed):
           - Circle and Oval controls unsupported (use Power Packs)
           - No control arrays (automated upgrade now available)
           - vbAlias unavailable (replacement available)
           - ByVal/ByRef missing (upgrade wizard works correctly now)
             (feedback by Torsten Borg)

        *** Metrics changes ***
        1. TCC for classes includes Custom Event accessors. May increase
           slightly.
        2. Values of SC, SYSC and RSYSC may have changed significantly 
           due to improved analysis.

        *** VBA Plug changes ***
        1. VBA Plug v2 is required for Project Analyzer v9. 
           Old version VBA Plug v1 is no longer compatible.
        2. Command line option /Q quits VBA Plug after export.
           (Sven Wittorf)

        *** Removed features ***
        1. Project Analyzer no longer supports Windows 95 or NT.
           It may work, but support is not maintained.
