Project Analyzer Changelog

What's new in Project Analyzer 10.3.02

Apr 13, 2021
  • Fixed error at startup on Windows XP SP3 and Vista.

New in Project Analyzer 10.3.01 (Feb 15, 2021)

  • General improvements:
  • Support Windows 10 high DPI monitors.
  • Dialogs fine-tuned for Windows 10.
  • Help file modernized. Optimized for mobile devices.
  • New code review rules:
  • Possibly commented-out code lean up your project by getting rid of commented-out lines.
  • Rem comment found. Obsolete comment syntax. Mark comments with a single quote (').
  • 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.
  • For with Step 1 found. Specifying Step 1 in a For statement is redundant.
  • Next statement ends multiple For loops. Next i, j was found. For and Next should appear in pairs.
  • Let statement found. The Let keyword is obsolete and may be omitted.
  • DefType statement found. Relying on DefType may confuse. Declare "As Datatype" instead.
  • On Local Error statement found. The Local keyword is redundant. Can rewrite as On Error.
  • Updated code review rules:
  • Default name. Detect default project and module names such as Project1 and Module1. Rule previously detected default control names only.
  • Verify accuracy. File constant.txt updated with the latest values of physical and astronomical constants.
  • VBA Plug v3.3 improvements:
  • Support for Office 2019 verified.
  • Attempt to continue if export of one module fails.
  • VBA Plug locates Project Analyzer if they are in different folders.
  • VBA Plug output directories renamed. Sub-directories appear under main output directory VBAPlug.
  • Reporting update:
  • New report: Compiler directives report. Compiler constants moved here from the Constants report.
  • 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.
  • 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.
  • 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.
  • Dictionary report updated to include only names declared in Basic source files. Names in binary libraries ignored.
  • Form report updated. Added Form list with filename and caption.
  • Control report sorted alphabetically. Indentation in HTML mode fixed.
  • 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.
  • Minor changes and optimizations in several other reports.
  • Other improvements:
  • Hex viewer shows file properties and byte position in file.
  • Hex viewer uses a fixed-width font if a proportional font is selected for hypertext view.
  • Detect library files in SysWOW64 directory when appropriate.
  • 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.
  • Print code and Export code as PDF features enhanced. Option to ignore syntax highlighting. Brackets showing code structure rewritten for clarity.
  • Project Metrics charts fine-tuned. "Project in time" charts adjusted for very long time series (well over 10 years).
  • Variable "i" in statement "Next i" is now treated as being used instead of being read by the statement.
  • 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.
  • File associations no longer require administrative privileges. The settings now affect the current user, not the whole machine.
  • Breaking change:
  • 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:
  • 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.
  • 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.
  • Metric STMTnc Non-control statements is affected by the changes in
  • STMTc, but in reverse.
  • LEN Length of names includes names of projects and compiler
  • constants, which were ignored before.
  • Legacy syntax improvements and fixes:
  • Support legacy If statements:
  • If..GoTo linenum
  • If..Then linenum Else linenum
  • Support undocumented statements:
  • Global Sub, Global Function, Global Property,
  • Global Type, Global Enum
  • 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.
  • The CDecl keyword in a Declare statement no longer causes the declaration to be ignored. The keyword has no effect in Windows.
  • Fixed support for line numbers longer than 5 digits.
  • Bug fixes:
  • VBA Plug failed if a module name was unsuitable as a file name.
  • Design quality report showed an incorrect number of procedures for metric SFIN: 10- High reuse.
  • "Magic number found" is no longer reported for line numbers in a GoTo, GoSub, Resume or On Error Resume statement.
  • "Unreachable code" is now reported after a Throw statement.
  • "Dead line number" is no longer reported if line numbers are used by the Erl function in the procedure.
  • Fixed statement "Next i, j" with multiple variables.
  • Fixed statement "Case x(1,2,3)" with commas in parentheses.
  • Fixed VB keywords used as field names in user-defined types. Example: GoTo As String.
  • Fixed Project Metrics issues with negative values ("Project in time" tab).
  • Fixed analysis of single-line functions.
  • Comments at the end of compiler directive lines are now recognized.
  • Fixed support for VBA7 LongLong constants with type char: 12345^
  • Disabled some inaccurate type inference for constants.
  • Fixed auto-fix bug with relative path in Reference line in .vbp.
  • Fixed Control report: Event handlers were missing before phase 2/2 was completed.
  • Fixed FRX file viewer problem with Text of multiline TextBox.
  • Fixed FRX file viewer showing Icon as Cursor.
  • Fixed bug with FRX files larger than 64 kB.
  • Fixed auto-fix with some rare single-line If..Then syntax.

New in Project Analyzer 10.2.07 (Aug 26, 2019)

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

New in Project Analyzer 10.2.06 (Jan 10, 2019)

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

New in Project Analyzer 10.2.05 (Jul 14, 2017)

  • Improvements:
  • Hex viewer uses fixed-width Courier New in place of MS Gothic.
  • VBA Plug now supports Conditional Compilation Arguments in Access projects.
  • Bug fixes:
  • Error #28 Out of stack space occurred with very large Enums having well over 3500 constants.
  • 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.

New in Project Analyzer 10.2.04 (Jul 14, 2017)

  • Compatibility improvements:
  • Office 2016 VBA support added to VBA Plug v32
  • Visio 2016 support added to Enterprise Diagrams and VBA Plug
  • Windows 10 support ensured
  • Other improvements:
  • Type inference support added for VBNET syntax "For Each x In y"
  • Hex viewer displays NUL, TAB, CR and LF with special symbols
  • VBA Plug now ignores empty projects / Office files with no VBA
  • exe and dll files now have SHA-256 signatures for compatibility with "Windows Enforcement of Authenticode Code Signing and Timestamping"
  • Bug fixes:
  • Error #6 Overflow could occur with certain floating point values such as 494065645841247E-324
  • VBA Plug: Opening an Excel file for the 2nd time failed with message "No VBA project (0)"
  • 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
  • Call to member was ignored in this syntax: x = New class()member
  • Dead variable: Random variables were marked as dead in VBNET
  • Unreachable code: When the "Then" branch of "IfThen" is unreachable, the "If" statement was incorrectly marked as unreachable as well
  • Syntax "IfThen:" with colon after Then is now correctly handled

New in Project Analyzer 10.0.01 (Dec 1, 2010)

  • VB.NET 2010 support:
  • Analyze all code written in VB 3-6 and VB.NET 2002-2010.
  • Office 2010 VBA support:
  • Analyze VBA code of Office 2000-2010 with VBA Plug v3.
  • New code review rules (31 of them):
  • Find bad coding logic. List below.
  • New reports (6 of them):
  • Listings, xrefs and string literals. List below.
  • Analyze .NET assemblies:
  • References to the .NET Framework and other library files are now analyzed. Enterprise Edition only.
  • 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:
  • 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.
  • Initializer missing for variable:
  • Now raised for Shared fields of a Structure
  • Dead variable: Variables in VB.NET Structures marked with are exposed. They may be used via COM and are not reported as dead code unnecessarily.
  • 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.
  • 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
  • Default member variables are no longer reported as dead code.
  • Problem list to show max 20,000 problems at a time.
  • New reports:
  • Variable list. Shows all variables and data type summary.
  • Constant list. Shows all constants and data type summary.
  • Procedure references report: Shows procedure call sites.
  • Variable references report: Shows access to each variable.
  • Constant references report: Shows access to each constant.
  • 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:
  • File list with details improved.
  • Procedure list: Added color. Removed binary procedures.
  • String literal analysis: Added color.
  • Variable use report sorted alphabetically and clarified.
  • Files and projects report can accommodate more projects.
  • Problem report by location: Files sorted alphabetically.
  • VB.NET compatibility report considers issues with dead code.
  • Summary report and Design Quality report improved.
  • PDF reports: Line wrapping improved.
  • PDF reports saved from Display window include page headers and a PDF outline (instead of TOC).
  • Module interface report: Sorted hierarchically.
  • Module members report: Sorted hierarchically.
  • New metrics:
  • dUDTS Dead user-defined types
  • dENUMS Dead Enums
  • dENUMCS Dead Enum constants
  • SDENS Statement density. SDENS=STMT/LLOC
  • Other improvements:
  • Find duplicate code improved:
  • find case-insensitively (request of Richard Brooker)
  • return duplicates within a single file as well
  • Archive feature rewritten.
  • Project Metrics .mtx files are now considerably smaller.
  • 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
  • Syntax errors with comment directives now displayed.
  • Considerable performance boost with large XML literals.
  • Project Metrics reports are now encoded in UTF-8.
  • Analysis improvements:
  • Improved detection of default member references.
  • Improved detection of COM in/out ByRef parameters.
  • Improved accuracy of Overloads resolution.
  • Improved accuracy of type inference.
  • Improved support of [keyword] syntax.
  • Improved support of {..} syntax.
  • Improved method support.
  • Improved handling of generic types.
  • Syntax obj=value is no longer treated as a write to obj in classic VB. Writing requires the Set obj=value syntax.
  • Letting a new value to an object's default property is now analyzed more accurately. Syntax obj=value in classic VB.
  • Added support (no functionality) for XML Axis Properties: . and ... and .@
  • Added support for Widening Operator CType conversions in overloaded calls.
  • Bug fixes:
  • Fixed Procedure list with details.
  • #Compiler directive lines were sometimes appearing instead of procedure header.
  • Fixed 2 errors with XAML .g.vb files (with VB2008 SP1):
  • File not up-to-date, rebuild project
  • File not found, rebuild project
  • Fixed support for #If and #ElseIf without Then.
  • Fixed several issues with generic type parameters (Of T).
  • Fixed hang with Procedure call tree (all procedures).
  • Fixed rules "Case overlap" and "Case useless": bug if Case statement was followed by a comment.
  • Fixed rule "Case useless": Case 1 To 3 followed by Case 2 was incorrectly reported as "Case overlap" and not "useless".
  • "For Each x In y" is treated as a write instruction to x, no longer as a write+read.
  • Fixed error with projects having a project-level compilation constants setting longer than 255 characters.
  • 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.
  • 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.
  • Problems are now hidden for some generated .Designer.vb files that were erroneously treated as regular non-generated code.
  • Fixed auto-fix bug with '! If..Then split:
  • End If was incorrectly placed before If. (Gaby Weizman)
  • Fixed auto-fix bug with "" being replaced by vbNullString where "" was a quotation mark.
  • 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:
  • Variables and constants report has been replaced by Variable list and Constant list.
  • Macro "Report VarsNConsts" now unsupported. Replace by:
  • Report Variables
  • Report Constants
  • Macro command Analyze supports new parameter BIN. Parameter COM is obsoleted but supported.
  • Project Metrics .html report format changed. This only affects you if you parse the reports programmatically.
  • Auto-fix replacement of "" with vbNullString has been disabled in VB.NET. Use of vbNullString may cause subtle run-time bugs in VB.NET.

New in Project Analyzer 9.0.01 (Dec 5, 2008)

  • Improvements and new features
  • Support for Visual Basic 2008.
  • Export source code as PDF.
  • Project Printer generates source documentation as PDF.
  • View contents of COM and DLL files as pseudo-code.
  • View binary files with built-in hex viewer.
  • Analyze all source files in a sub-directory tree. Analyze
  • projects without a .vbproj or a .sln file.
  • 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.
  • 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
  • ariable users all dead
  • ariable readers all dead
  • ariable writers all dead
  • ariable not read, writers all dead
  • ariable 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
  • 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
  • Option to load international source in a different codepage.
  • Report enhancements:
  • ariables and constants report rewritten for clarity.
  • Added underlying numeric constant values.
  • ariable 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.
  • PDF reports greatly improved.
  • Image version and compile time displayed for library files.
  • Syntax formatting for .sln files in hypertext and print-outs.
  • Find window improved:
  • Results displayed in an easier-to-read format
  • Option to search for "Code or String" (Klaus Lair)
  • Print code: New option "Bracket structures" emphasizes
  • conditionals and loops. (Trevor Tregellas)
  • Auto-fix now preserves existing line continuation characters
  • (_) when possible. A continued line gets reformatted only
  • when the particular line is auto-fixed.
  • Analyze several directory trees by creating a .lst file.
  • Compatibility library detected for classic VB projects.
  • B2008 support details
  • Option Infer
  • Extension methods:
  • Nullable types
  • Object initializers: New With { .field=value }
  • attribute
  • Lambda expressions: Function(x). Partial support.
  • LINQ
  • WPF/XAML projects
  • If() function
  • Improved analysis
  • Added support for single-line Type and Enum blocks.
  • (Les Sullivan)
  • Classic VB: Added support for single-line declarations such
  • as Dim x:Dim y or Sub x:End Sub.
  • Added support for date literals #10/5/2008 11:25:00#
  • Arrays declared with ReDim (without Dim) are now detected
  • in classic VB.
  • Support for generic Structure and Interface (Of T)
  • Support for Structures implementing an Interface.
  • Overloads resolution improved. The correct Overloads
  • procedure is now picked more often.
  • Accuracy of late-bound call resolution improved by taking
  • account the number of call arguments. (idea by Steve Gilbert)
  • 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
  • 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)
  • 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.
  • 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.
  • Option to switch Dead parameter rule on/off.
  • (idea by Jean-François Ménard)
  • Overrides procedures are not subject to NameCheck, since
  • their name is defined in an ancestor class. (Alex Mauer)
  • Microsoft.VisualBasic imported rule checks project-level
  • imports in addition to Imports statements. (Eric Burdo)
  • More accurate rules for Excess Scope problem (classic VB).
  • Performance improvements
  • Reduced analysis time at end of phase 2/2.
  • Faster processing of overly large Enums (such as 9000 lines).
  • Project Metrics Viewer loads large .mtx files faster.
  • Bug fixes
  • Fixed Unicode character width problems in "Print code"
  • feature.
  • "Initializer missing for variable" is not reported for arrays
  • with defined bounds. Cannot be initialize them. (Alex Mauer)
  • 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)
  • Fixed crash reading some OCX properties. (Chaudier Guillaume)
  • Fixed bug where COM analysis ignored files with LCID0 in a
  • B 2002/2003 project. Sample file: XL5EN32.OLB.
  • Fixed .NET startup form being reported as dead.
  • 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.
  • Support added for Shared Event and Shared Custom Event.
  • Fixed Save WMF/EMF in Project Graph.
  • Added missing support for ReadOnly variables.
  • Added missing support for Sub New in a Module.
  • Added missing support for generic procedures (Of T)
  • FRX file viewer did not always save icons and cursors
  • correctly. (Jan Polonský)
  • Scope declaration missing no longer reported for a Shared
  • Sub New, because it you can't declare one. (Alex Mauer)
  • Fixed dead code detection with Type fields declared As New.
  • Dictionary report showed too low Unique names count.
  • Fixed display problems with line continuation characters,
  • especially in Hypertext view, code print-outs and
  • Project Printer.
  • Reduced flickering in Hypertext and Report views.
  • Fixed crash in Enterprise Diagrams, File belongs to project
  • diagram when analyzing a project directory without a
  • project file. (Richard Hurst)
  • Saving metrics as a .xml file produced invalid XML for
  • characters beyond Unicode &H7FFF (such as in Japanese).
  • Fixed handling of keyword New in Dim x, y As New datatype.
  • Fixed unnecessary warnings for IIf() and Choose() function.
  • Fixed parameter
  • Fixed sorting, then double-clicking in Find window.
  • Fixed autofix: If all variables in a Structure are dead,
  • don't removes them. A Structure without variables is illegal.
  • Fixed autofix: Adding return typename to property named P.
  • Fixed autofix: Don't remove dead Interface procedures if
  • they are implemented. VB.NET refuses to compile implementor.
  • Fixed autofix: Don't remove Overrides base procedures or
  • children of MustOverride when required to compile.
  • Code review rule changes
  • Classification changes
  • Return value discarded: Style -> Dead code
  • ariable/function/constant missing type declaration:
  • Optimization -> Style
  • Case Else missing: Style -> Functionality
  • "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.
  • B.NET Compatibility Check changes
  • Rules updated to cover upgrading code from VB6 to VB2008,
  • with Visual Basic Power Packs 3.0 installed.
  • Removed compatibility rules (and reason why removed):
  • Circle and Oval controls unsupported (use Power Packs)
  • No control arrays (automated upgrade now available)
  • bAlias unavailable (replacement available)
  • ByVal/ByRef missing (upgrade wizard works correctly now)
  • (feedback by Torsten Borg)
  • Metrics changes
  • TCC for classes includes Custom Event accessors. May increase
  • slightly.
  • Values of SC, SYSC and RSYSC may have changed significantly
  • due to improved analysis.
  • BA Plug changes
  • VBA Plug v2 is required for Project Analyzer v9.
  • Old version VBA Plug v1 is no longer compatible.
  • Command line option /Q quits VBA Plug after export.

New in Project Analyzer 8.1.01 (Mar 14, 2007)

  • VBA Plug v2 supports Office 2007.
  • Print code with syntax highlighting. Produce professional multi-column print-outs in color.
  • Export code as HTML or RTF with syntax highlighting.
  • Export metrics as XML.
  • Recursion diagram shows recursive procedures.
  • Windows Vista support ensured.
  • Visio 2007 support added in Enterprise Diagrams, as well as save as .dot diagrams.
  • Reports improved: File dependency analysis, Dictionary, Procedure list, Procedure list with details.
  • Find recursive procedures.
  • More robust large system analysis, multiple monitor support, copy code to Clipboard with line numbers.