Project Analyzer - Version history
==================================


Analyzed file types     v5          v6          v7
--------------------------------------------------
VB 3-6 .vbp/.mak        Y           Y           Y
VB.NET 2002 .vbproj     -           Y           Y
VB.NET 2003 .vbproj     -           -           Y
.vbg and .sln files     -           Y           Y
COM files               -           Y           Y
DLL files               -           -           Y


Major version history.
v7.0 VB.NET 2003, duplicate code, dead control and DLL analysis.
v6.2 Ctrl & data flow & form show graphs. Ensure obj clear. (Jan 2003)
v6.1 Multi-project analysis, including COM, .sln and .vbg (Aug 2002)
v6.0 Support for VB.NET and VB 3-6 (May 2002)
v5.4 VB.NET compatibility check (May 2001)
v5.3 Enterprise Edition with auto-fix and macros (Jan 2001)
v5.2 Add-in Project NameCheck, support for non-western code (Mar 2000)
v5.1 Problem detection, code web site, new reports (May 1999)
v5.0 Support for VB 3-6 and .anl files (Oct 1998)
v4.2 Need report (Aug 1998)
v4.1 Add-in Project Graph (Jan 1998)
v4.0 Support for VB 3-5 (Sep 1997)


Detailed Version History
========================


v7.0.03 November 2003
        *** Improvements ***
        1. Faster analysis phase 1/2 for VB.NET projects and classic VB 
           projects with comment directives.
        2. The Possibly twisted tab order rule now supports RightToLeft 
           forms. (requested by Moshe Pack)

        *** Bug fixes ***
        1. A mismatching '$END comment directive (without corresponding
           BEGIN) could cause another, unclosed BEGIN.. block in another 
           file to terminate an incorrect line. (Moshe Pack)
        2. Single-line problem directives could affect more lines than 
           just one. 
        3. The bug fix for the detection of the procedure header line 
           in v7.2.02 caused another bug to appear. This created extra
           warnings for "Variable/constant declared in code". Fixed.
           (Moshe Pack)
        4. The Possibly twisted tab order sub-problem "Container doesn't 
           precede children" was incorrectly reported for forms with 
           nested container controls.
        5. Fixed an error message analyzing COMCT332.OCX. (Rob Lewis)
        6. Autofix produced lines exceeding 1024 characters that VB6 
           wouldn't read in correctly. (Ian Jury)

v7.0.02 October 2003
        *** Minor new features ***
        1. Added Report button in Dependencies view. (Boris Velikovich)

        *** Improvements ***
        1. A .dbp project in a .sln file is now ignored without an 
           error message. (Paul Hatcher)
        2. Project NameCheck to allow either prefix or no prefix 
           together with ProperCase. Syntax "o," is now supported to
           approve alternatives such as MyObject and oMyObject.
           Earlier it wasn't possible to define both a prefix and 
           no prefix as alternatives. (Jean-François Ménard and others)
        3. References between files window shows source file if the 
           <Any other file> option is selected. (Jean-François Ménard)
        4. File names given as command line parameters are relative to
           the working directory, not to the directory of project.exe.
        5. New macro parameter %0 contains the working directory when
           the macro is run from the command line.
        6. Current problem filter name is displayed on the main screen.
           (Jean-François Ménard)

        *** Documentation updates in help file ***
        1. The description of the system complexity metric is rewritten.
        2. New topic "Practical issues" for Project NameCheck shows how
           to configure the naming standards.

        *** Bug fixes ***
        1. Class with both Shared and non-Shared members erroneously
           raised a "Private constructor expected" problem when it had
           no Inherits statement. (Nick Varacalli)
        2. Method call to .Select incorrectly caused a "Case Else
           missing" problem to be displayed. (Moshe Pack)
        3. Fixed detection of procedure header line in procedures that
           have comments before the procedure header line. Bug affected 
           several code review features and call trees. 
           (Moshe Pack, Jean-François Ménard)
        4. Export features provide a warning instead of crashing if you 
           wish to overwrite a read-only file. (Jean-François Ménard)
        5. Fixed NameCheck support for alternative prefixes with
           different lengths, used along with ProperCase. 
           (Jean-François Ménard)
        6. Removed crash with VB Classic projects having an enum with
           over 255 constants. (Moshe Pack)
        7. Fixed bug where a reference from a procedure to an 
           overloading variant of the same procedure (similar names)
           was detected but not stored. (Ewald Hofman)
        8. The analysis ignored a reference to "entity" in syntax
           "object.keyword entity" where keyword was ReDim.
           (Edward Buttler)

v7.0.01 August 2003
        *** Major new features ***
        1. Support for Visual Basic .NET 2003. Now supporting all
           VB versions from 3.0 to 6.0 and VB.NET 2002 & 2003. Support
           improved for ASP.NET projects.

        2. Find duplicate code
           Reduce code size by joining repeated code blocks that result 
           from copy & paste coding.

        3. Project Metrics
           Calculate and store tens of metrics. View metrics history and
           compare projects. Project, file, class and procedure level
           metrics available.

        4. Dead code detection improved with new rules. You can now spot
           more removable and problematic code than ever. 
           + Dead interface
             Can be removed.
           + Implemented interface not used
             Can be removed.
           + Interface not implemented
             Code has no run-time effect.
           + Dead class
             Can be removed.
           + Class not inherited
             MustInherit class has no concrete children. (VB.NET)
           + Class not instantiated
             Code has no run-time effect.
           + Dead structure
             Can be removed. (VB.NET)
           + Dead module
             Can be removed.
           + Dead function return value
             Could be Sub. (idea by Raul Fajardo)

           Dead control detection (VB 3-6) finds controls that don't
           seem to be in use. Consider removing such controls and any
           connected code, including events.
           + Control not visible
           + Control outside visible area
           + Control not enabled

        5. New class design code review rules.
           + Constructor missing
             A concrete .NET class should define a constructor.
           + Protected constructor expected
             Mark all constructors of an abstract class Protected.
           + Private constructor expected
             Prevent instantiation of shared class.
           + Finalize found
             A destructor will slow down the garbage collection.
           + Finalize missing
             Finalization required if class uses unmanaged resources.
           + IDisposable not implemented
             Implement IDisposable.Dispose to free resources.
           + Finalize missing MyBase.Finalize
             Destructor should call MyBase.Finalize.
           + SuppressFinalize missing
             IDispose.Dispose should call GC.SuppressFinalize(Me).
           + Parent class instantiated
             Don't instantiate base classes.
           + Parent class requires MustInherit
             Keep base classes abstract.
           + Class looks like Interface
             Could you rewrite the class as an Interface?
           + Inheritance limited
             Subclasses can add but not redefine operations.
           + Shadows keyword found
             Shadowing makes programs harder to understand.
           + Child reuses ancestor member name
             Use of similar names increases probability of errors.
           + Member scope exceeds container scope
             Scope of member is wider than scope of class.
           + Protected found in NotInheritable class
             Protected makes no sense in a class that cannot be derived.
           + Interface members missing
             Class contents cannot be accessed.
           + Interface class instantiated
             Do not instantiate interface classes.
           + Interface class contains code
             Keep interface and concrete classes separate.


        6. Miscellaneous new code review rules.
           + Require releasing of Win API resource handles
             Handles must be released to prevent resource leaks.
           + Constant without type specification
             Optimize by explicit typing. (idea: Blake Kanewischer)
           + Case Else branch missing
             Deal with unexpected Case values. (idea: Joe Monnin)
           + Variable/constant declaration found in procedure code 
             Keep Dim/Const at start of procedure. (idea: Lori Sites)
           + Return value discarded for function call
             Should you use the function return value? 
             (Nicholas Varacalli, Raul Fajardo)
           + Base address unoptimal for library project
             Optimize by changing the value.
           + Compilation unoptimized
             Enable optimized compilation for your project.
           + File not found 
             Warning for files that cannot be read by the analysis.

           Improved code review rules.
           - Detect constant with type character ($#%!@&)
             Obsolete syntax.
           - Parameter with generic type
             Use explicit types and early binding.

        7. Library file analysis (Enterprise Edition) reads contents of
           conventional DLL files, displays their declaration syntax and
           reports missing DLL procedures as well as OS version
           compatibility of each API call.

        8. String literal analysis reports the amount of string data and
           detects duplicate literals that could possibly be joined to
           save some space.

        *** Minor new features ***
        1. New listings
           - File list (file names sorted by path)
           - File list with details
           - File list by size and date
           - Module list (alphabetical and hierarchical order)
           - Namespace list
           - Procedure list
           - Procedure list, alphabetical
        2. New reports
           - Form report lists forms and "shown by" information
           - Dead procedures report gives a list sorted by size so
             you can focus on removing the largest procedures first.
           - Report button added in Find window (David Kelly)
        3. Report to CSV file. Import data to a spreadsheet. 
           (idea by Rich Ketcham)
        4. Printer margin setup. (Jerry Jost, John White)
        5. Added option <Any other file> to References window
           so that you can search for references from anywhere to 
           a selected file.
        6. New macro commands and options
           - Parameter DLL in command Analyze
           - File type CSV in command SetReport
           - Lots of new reports supported (see help file)
           - Report type Files now gives an undetailed list. Use
             FilesDetailed to get a detailed file list.
           - Report type Procedures now gives an undetailed list. Use
             ProceduresDetailed to get a detailed procedure list.
           - New option in command SaveSUD to skip a question to allow 
             for unattended execution. (Boris Velikovich)
        7. New types of cross-references detected. Right-click a
           programming element to view the references to it.
           - Implements interface/class. Find classes that implement
             an interface definition.
           - Instantiate class. Find places where objects of a class  
             are being instantiated.
           - Inherits class. Find the descendants of a class.
        8. Find window supports search for comments.
        9. Copy from hypertext view to clipboard retains colors and 
           other formatting. (John White)
        10.Option to locate web project files referenced via http. This
           makes it quicker to analyze ASP.NET solutions.
        11.COM files show procedure parameters.
        12.More text and XML files can now be viewed in the Hypertext screen.
        13.Double-click a graphic file to view the picture.
        14.Solution item files are shown for .NET solutions.
        15.webinfo files are now detected and included in project files.

        *** Improvements ***
        1. VB.NET Compatibility Check has been revised to work with
           Visual Studio .NET 2003. New rules:
           + COM+/MTS not upgradable to VB.NET
             Project refers COMSVCS.DLL. Rewrite required.
           + COM method not callable from VB.NET
             VB.NET doesn't allow calls to certain COM methods.

           Compatibility rule changes:
           - UserControls are no longer problematic for upgrading.
           - WebClasses do not prevent upgrading, but may require work.
           - Property ScaleMode triggers problem "ScaleMode must be 
             vbTwips" (was "Work required after upgrade")

           Removed compatibility rules:
           - DefType (auto-converted)
           - Imp, Eqv, Tag, Null (auto-converted)
           - Work required after upgrade (detected certain keywords, 
             was not very informative)

        2. Problem report allows easier selection of report by
           description or by location. Report by description is
           rewritten.
        3. Added a problem icon when a file cannot be found.
        4. Project NameCheck ignores implementation procedure
           parameters, as they are defined by the interface.
        5. Project NameCheck optionally ignores Declare statement
           parameters, as they are often named in a non-VB standard.
           (idea by Phil Akin)
        6. Library report contains more data.
        7. The use of AddHandler flags the target as an event handler.
           This is useful if you use dynamic event handling rather than
           static (VB.NET). (Paul Hatcher)
        8. Event definitions and event handlers have a different icon.
        9. Better support for parameters in .NET <DLLImport> attribute.
        10.Wrapping enhanced on reports.
        11.Auto-fix preserves directory structure. This is useful if
           your source files are located in many directories.
        12.Unused parameters in Overrides procedures are not reported
           dead because they are defined in an ancestor class.
        13.Improved display of duplicate items, such as two files
           with the same name but in different directory.
        14.Problems are not shown for automatically generated source 
           files, such as Web References proxy classes.
        15.Problems are not shown in designer generated #Regions. This
           works for the English, German and French VB.NET versions.

        *** Bug fixes ***
        1. Correct detection of single vs. multiuse instancing for .cls
           files. Affects VB.NET Compability Check.
        2. Improved handling of .NET namespaces and root namespaces.
        3. Dictionary report to indicate Event names and property
           declarations without Get/Set accessor.
        4. Late-bound calls are now detected to .NET Structure members.
        5. Auto-fix for Encapsulate variable as property generated a
           syntax error for instantiating definitions such as 
           Dim obj As New class() 
           and commented definitions such as 
           Dim obj As type ' comment
        6. The data type of a "As New MyClass" field was not correctly
           detected in a VB Classic Type block due to the New keyword.
        7. .NET Default procedures are not reported dead because calls
           to them are not necessarily detected.
        8. Improved detection of Property Set/Get in chains such as
           "property.property = value"

        *** Changes ***
        1. Interface report lists Friend, Protected Friend and Public
           scope members, but not Protected or Private. Previously
           Protected were included but they are not really part of a
           class's interface but a part of its implementation. Interface
           report also lists controls.
        2. Case "Abstract New should be Protected" has been moved from
           rule Excess scope to rule Protected constructor expected.
        3. Removed problem option to disable warning for VB3 binary
           file. Now the warning will always show up.


v6.2.05 April 2003
        *** Bug fixes ***
        1. Removed error message on .wsi file included in a .sln. 
           (John White)
        2. Fixed calculation of cyclomatic complexity for Select blocks
           without a Case Else branch.
        3. Fixed calculation of cyclomatic complexity and depth of
           looping for VB.NET syntax Select without Case.
        4. Fixed error reading a .vbp file with reference to a COM file
           having a minor or major version number >= 10.

        *** Changes ***
        1. Removed "Initialization error getting typelib information 
           from the registry" in cases where a COM file is missing or 
           incorrectly registered. Now we just skip any missing file.


v6.2.04 April 2003
        *** Improvements ***
        1. Library report slightly reformatted to be more readable.
        2. Support for larger analyses (previous limit was 32,766
           procedures).
        3. Optimized performance with largish projects and files.
        4. Enabled the viewing of the following file types:
           .asax .aspx .ascx .config .licx .resx .vsdisco .xsd .xsx
           .webinfo
        5. Added new file group for ASP.NET projects: Content files. 
        6. Removed 1000-procedure limit on COM file analysis.

        *** Bug fixes ***
        1. Fixed 2 autofix line continuation bugs. (Matt Norris)
        2. Fixed handling of Protected Class. (Richard Porter)
        3. Fixed parsing of property Set block header in .NET.
           Fault introduced in v6.2.03.
        4. Fixed handling of syntax "library.dll\2" in COM analysis.
        5. Added a better error message if a COM file is missing.
        6. Improved distinction of different things with similar 
           names during the analysis. (Matt Norris)
        7. "_" at the end of a VB.NET comment was mistaken for 
           a line continuation.



v6.2.03 April 2003
        *** Improvements ***
        1. Added support for late-bound syntax With Controls(c) and 
           With ActiveControl.
        2. Diminished memory requirements for huge projects.


        *** Bug fixes ***
        1. Detection of data read/write was erroneous after keywords 
           Then and Else.
        2. Removed rule "For..Next final value unoptimal" because this
           optimization is unnecessary. The final value of For..Next is 
           evaluated only once. (Stefan Teglund)
        3. Fixed procedure header parsing bug with parameters ending 
           in "event". (Matt Norris)


v6.2.02 February 2003
        *** New feature ***
        1. Types, Enums and Aliases report 

        *** Improvements ***
        1. Analysis of late-bound references optimized for speed.
        2. Project Printer / unformatted comments now produces <PRE>
           output in HTML. This preserves comment indentation.
           (Urs Aeschlimann)
        3. Project Printer / Comment manual / new option for HTML:
           "Allow HTML tags in comments" keeps the special meaning 
           of HTML tags in comments. Leave unchecked if you want to 
           see tags as HTML/XML source. (Urs Aeschlimann)
        4. Added built-in data types such as "Collection" to feature
           "Ensure clearing of object variables". (Jay Vinton)
           

        *** Bug fixes ***
        1. Fine-tuned analysis of event name references in code.
        2. Fixed dead code problem with VB Classic procedures 
           implementing an interface with an underscore in the 
           interface name. (Marcel Müller)
        3. Unoptimal for..next final value was reported if the final
           value was a variable ending in a type character (such 
           as % or &). Fixed. (Richard Brooker)
        4. Project Printer / HTML site option produced an invalid 
           file list in the .hhp file. This but didn't have a visible 
           effect in the resulting CHM file. Fixed.

v6.2.01 January 2003
        *** New features ***
        1. File dependency analysis finds circular file dependencies. 

        New graphs in Project Graph
        2. Control flow tree shows calls and event flows between
           modules.
        3. Data flow tree shows variable read/write and parameter
           passing between modules.
        4. Form show graph describes the show order of forms.

        New problem detection features
        - Verify your problem filters!
        5. Added checks "Require explicit clearing of object variables" 
           and "Require explicit deallocation of dynamic arrays".
        6. Added detection of empty modules and renamed "Procedure
           without code" as "Empty procedure". (Lori Sites)
        7. Added check "Event not raised" for events that are handled
           but not raised via RaiseEvents. (Constantijn Enders)
        8. Added a new rule for "Excess scope". The New constructor
           should be declared Protected for abstract base classes in .NET.
        9. Added checks "Missing default button" and "Missing cancel
           button" for dialog boxes with CommandButtons.
        10.Added check "Option Strict missing" in .NET projects.
           (Jan van Veldhuizen)
        11.Added check "On Error style used" for .NET code.
        12.Added check "Global variable found". (Steve Knight)
        13.Added check "Fixed-length string used" for VB Classic.
        14.Added check "Object variable declared As New" for VB Classic.
        15.Added check "Multi-dimensional array found" for VB.NET.
        16.Added check "Microsoft.VisualBasic imported" for VB.NET.
        17.Added check "Seal class/method for less overhead" for VB.NET.
        18.Added check "WithEvents adds overhead" for VB.NET.
        19.Added check "Use compound operator += etc." for VB.NET.
        20.Added check "CType slower than DirectCast" for VB.NET.
        21.Added check "Unicode function AscW/ChrW is faster".
        22.Added check "Constant available" for certain unnecessary 
           Chr/Asc calls (VB 3-6).
        23.Added check "For..Next final value unoptimal".
        24.Added check "Consider short-circuited logic" which suggests
           nested Ifs, AndAlso and OrElse where applicable.

        Improvements in problem detection
        1. Separate option to enable/disable dead constants check.
           (Brian Perkins, Joe Monnin)
        2. The Value parameter of a .NET Property Set block is ignored
           by Project NameCheck. (Jerry Jost)

        *** Other improvements ***
        1. The selection of files to analyze is saved between runs and
           also for Reanalyze.
        2. Super Project Analyzer has new option to mark exposed dead
           procedures as either live or dead. (Neil Cawse)
        3. Improved support for code written in Far Eastern character 
           sets such as Japanese.
        4. Added support for .NET files saved as Unicode or 
           UTF8 with signature. Note that Auto-fix converts to Ansi.

        *** Bug fixes ***
        1. Field and constant names in Type/Enum definition blocks were 
           sometimes understood as references to other names. Fixed.
        2. Fixed some problems where the analysis could not decide
           between 2 similar names.
        3. Fixed crash with Protected/Protected Friend Structures.
        4. Local Variable declarations in the 2nd property block in 
           VB.NET were incorrectly handled as class-level variables.
           (Jan van Veldhuizen)
        5. Fixed analysis problem where a VB.NET Enum was used before 
           its declaration inside the same module but outside of 
           any procedures.
        6. Added support for jagged arrays.
        7. "End statement found" is not reported for code such as 
           IO.SeekOrigin.End (Greg Haslett)




Copyright Aivosto Oy
www.aivosto.com
vbshop @ aivosto.com

