Help contents
Project Analyzer version history
This version history lists major improvements and changes in Project Analyzer. A detailed version history is in file version.txt in your Project Analyzer directory. Your feedback and ideas for future enhancements are welcome.
Earlier version changes:
v8.0
v7.1
v7.0
v6.2
v6.1
v6.0
Pro, Ent = Feature requires Pro or Enterprise Edition
Ent = Feature requires Enterprise Edition
Version 8.1 (March 2007)
New features in v8.1
- VBA Plug v2 supports Office 2007.
- Print code with syntax highlighting.
- Export code as HTML or RTF with syntax highlighting.
- Recursion diagram in Enterprise Diagrams shows recursive procedures. Ent
- Export metrics as XML. New macro: SaveMTXxml. Ent
Improvements in v8.1
- Windows Vista support ensured.
- Visio 2007 support added in Enterprise Diagrams. Ent
- Enterprise Diagrams export as .dot file. Ent
- Copy code to Clipboard with line numbers.
- Multiple monitor support improved.
- Reports improved: File dependency analysis,
Dictionary, Procedure list, Procedure list with details.
- Problem detection improvements
- Literal "" found reported for more cases.
- Global.asax.vb in ASP.NET: Session and Application events
are live code. The following problem is not shown: Parameter with
generic type: sender
- Robust large system analysis improved with
- Huge HTML and MHT reports
- File dependency report
- Project Printer web site
- Added analysis speed
- Project Metrics Viewer to display over 32767 procedures/variables
- Changes with metrics: Fixes for DCALLT, maxDCALLT, MHF and
AHF. New limitation: SCALLT, maxSCALLT and LLOCt are unavailable if computation time exceeds 1 minute. Limit affects very complex systems only. Ent
Version 8.0 (February 2006)
Major improvements in v8.0
- Visual Basic 2005 support. Project Analyzer v8.0 supports Visual Basic versions 3.0, 4.0, 5.0, 6.0, 2002, 2003 and 2005.
- Enterprise Diagrams
is a new diagramming solution. Ent
- Project Graph supports 2 new diagrams:
Pro, Ent
- Instantiation tree shows where classes are being instantiated.
- Data declaration tree shows where classes, structures, interfaces and forms are being used as data types. This graph also shows class instantiations.
- Constants and Enums window lets you review constant names and
values. Locate duplicated constants (for optimization) and
constants with the same name but different values (possible
mistake).
- Variables, constants and parameters window lists your
definitions and lets you locate a variable or constant by
its name or data type. Review the usage of a data type or
look for (un)desired variable or constant names.
- Procedures window lists all procedures. Locate functions and methods quickly.
- Data types window lists Enums, user-defined types, .NET
Structures and COM aliases. Review the definitions and
usage of data types. Review
the definitions and usage of data types.
- Modules window lists all modules.
New reports in v8.0
- Module members
report with several sub-options to list the procedures and/or
variables of each module:
All procedures and variables,
Data input, Data output,
External access, External data input, External data output,
Module data, Private data,
Data read access, Data write access,
Properties,
Procedures,
Methods, Events,
Constructors, Constructors and finalizers,
Procedures with "out" parameters.
- Interface report lists interfaces with implementations.
- Files and projects report lists which project includes which
files. It is useful for determining the use of shared files. Ent
- Super report in Super Project Analyzer lists the dead
code accross all your projects, as well as in which projects
your code is being reused. Pro, Ent
- Variable use report lists the number of live/dead variable
reads & writes. It is useful for locating potentially dead
variables and logical flaws where a variable value might not
be properly set, for example.
- Problem statistics report summarizes the number of problems found by code review.
- Dead code statistics report displays the amount of dead code grouped by deadness type.
- File dependency levels report lists files in their dependency order. You use the File dependency levels report to understand the dependency structure of a system. When you need to make large changes to the system, it may be beneficial to work on a single level at a time.
- Non-cohesive classes report finds classes to split up.
- Subsystem report finds reusable subsystems in a program.
| New metrics in v8.0 Ent |
|---|
Project metrics
VARSgm Global and module-level variables
VARSloc Local variables
ENUMSZ Average Enum size
ENUMR Enum ratio
Rc Reuse of constants
TREADS Total variable reads
TWRITES Total variable writes
TRW Total variable reads+writes
DATADENS Data access density
IOg% Global I/O ratio
maxDCALLT Maximum depth of call tree
maxSCALLT Maximum size of call tree
MOOD2 project metrics for object-oriented code
OHEF Operation hiding effectiveness factor
AHEF Attribute hiding effectiveness factor
IIF Internal inheritance factor
PPF Parametric polymorphism factor
Class metrics
LCOM4 Lack of cohesion of methods
TCCi, TCCl Tight class cohesion
LCCi, LCCl Loose class cohesion
Procedure metrics
IOg Global I/O
IOp Parameter I/O
IOvars Input and output variables
SCALLT Size of call tree
Variable metrics
READS Number of read instructions from variable
WRITES Number of write instructions to variable
RW Number of reads and writes
FLOWS Data flows into and out of a variable
LENV Length of variable name
VARUSR Variable users
|
Project Metrics improvements Ent
- 27 new metrics, see table on the right.
- New metrics reports:
Project metrics report,
Metrics statistics report,
Metric charts,
Project status report,
Compare project status report,
Limits report,
Metrics list,
Correlation analysis.
- Project Metrics Viewer enhancements: XML export, skew, kurtosis, rotated view, save metrics charts as GIF files, improved Regression analysis window.
Code review additions and improvements in v8.0
- New dead code analyses:
- Dead Enum constant.
- Dead Type field.
- Type field written, not read.
- Type field read, not written.
- Variable read, not written.
- Return value not set.
- Unused COM library file. Ent
- Special dead code cases enabled:
Dead NewEnum enumerator in classic VB collection.
Dead Protected Sub Finalize in .NET Structure — Finalize is not called by
the garbage collector.
Dead Overrides procedure.
Dead variable (Shared or not Public) in Attribute class.
- "Too many uncommented lines" rule finds consequtive lines
without any comments in them.
- "Pass ByRef" rule finds call locations where parameters
passed will or may be modified by the called procedure,
possibly causing unexpected side effects.
- "ByRef parameter returns a value" rule finds parameters
whose value is changed and the new value will be returned to
callers, possibly causing unexpected side effects.
- "ByVal parameter written to" rule reports parameters whose
value is changed, but not returned to callers.
- "ByRef parameter read only, consider ByVal" detects
parameters that might be intended to work as ByVal but
that are ByRef by accident.
- "Initializer missing for (local) variable" rule reports
VB.NET variables that are not initialized in the Dim
statement.
- "Assignment to self" rule reports unnecessary or erroneous
assignment statements of type "x = x".
- "Empty procedure" rule now reports procedures having no
executable code. This means that procedures with local
variable or constant declarations will be reported if they
have no executable code.
- Class design rule "Child reuses ancestor member name" now
considers the entire inheritance tree, not just the
immediate parent class.
- "Optional parameter missing default value" is now available
as an individual rule. The same rule was formerly part of
VB.NET Compatibility Check and it was called
"Default param value needed in VB.NET".
Other improvements in v8.0
- VB.NET Compatibility Check has been updated for VB.NET 2005.
Compatibility rules have been refined for migration from VB6 to VB.NET 2005.
A detailed change list is in file version.txt.
The VB.NET compatibility report has been enhanced with more detailed data. Ent
- Project Graph additions: Save graph as GIF file.
New options: Backward links only, Forward links only, Both, Hide binaries.
- Usability: Mouse wheel and Back/Forward button support. "App key" support for context menu. Consistent keyboard shortcuts.
- Interface report enhanced and renamed as Module interface report.
- Line numbers option in hypertext view.
- Project Printer improvements: Save project web site as MHT file.
Enable/disable reports. Enhanced HTML for source code including TITLE
for each hyperlink to show details when mouse hovers over a link.
New ProjectPrinter macro options. Line numbers option. Pro, Ent
- New report file type: MHT web archive.
- More information shown for COM libraries. Ent
- View the bytes required for data storage of user-defined
types and structures, classes and modules.
- Bookmarks for finding frequently reviewed code.
- You can load a .lst file to analyze several solutions,
projects or project groups at once.
- New global constant PROJECT_ANALYZER = True allows you to
write special lines for Project Analyzer only. Add
missing definitions, tweak the analysis or exclude sections
from being analyzed.
- Hotkey option to bring Project Analyzer up from the
background.
- Project Printer and the Uncommented code review rule have been
updated to consider comments above the procedure header line
to be a part of the procedure.
- Flowchart with Visustin. You can send the currently viewed
code directly to Visustin (if you have it) and get a flowchart.
- Types and Enums report shows number of reads and writes to
each field and constant, plus the value of each constant.
- Copy code as HTML to the clipboard. Publish code snippets easily!
- Analysis improvements
- CreateObject, GetObject supported.
- Object instantiation via New, CreateObject or GetObject calls
the appropriate constructor (Sub New) or Class_Initialize.
- Invisible call from Sub New to MyBase.New() is recorded.
- ByRef parameter passing is recorded and ByRef parameters are further
classified as 'in' and 'out' parameters.
- Copy in/copy out semantics are taken into account when
passing a property to a ByRef parameter in VB.NET.
- VarPtr, StrPtr and ObjPtr are handled as
"Address" references and read/write access to data.
- Multiple Inherits for Interfaces are now supported.
- References to default members are resolved, but only when
parentheses follow the object name. Thus:
Collection[.Item](1) is resolved, but
TextBox[.Text] is not resolved because no (..)
follows. FYI: A default member is one whose name you may omit.
- !bang syntax is now supported for COM methods, in addition to VB methods.
Example: Collection!key
- References to enumerators via For Each .. In .. are
resolved.
- Record late-bound procedure calls as "Call late-bound". Search for late binding in your code.
- Overrides and Overloads analysis more accurate
Breaking changes in v8.0
- Changes with metrics. Several metrics have been changed. The scope of the changes
range from almost unnoticeable to breaking changes. Old
metric values may not be comparable to new values. Ent
- Call depth report has been removed. The same information is in the metric DCALLT. Ent
- Default CSS settings for HTML reports have changed. If you
use a custom CSS file, verify the reports still look ok.
- Existing problem detection filters should be updated for the
following fields:
- Old rules "Dead Enum and Type" and "Dead structure" have
been rearranged as:
- Dead Enum
- Dead Structure/Type
Rule 1 now applies to Enums only, whereas rule 2 applies to
user-defined data types both in classic VB and VB.NET.
Review your existing filter settings.
- "Variable/const declared in code" has been split to
- Variable declared in code, and
- Constant declared in code.
Setting 1 will be preserved, you need to update 2.
- Module diagrams report has been superseded by Module members report.
- Some macro commands have been removed or replaced, see Removed macros. Ent
Version 7.1 (September 2004)
- VBA Plug enables analysis of Office VBA projects with Project Analyzer.
- Project Printer enhanced with 12 new reports and a .hhk file for the HTML Site option.
- Auto-fix lets you insert 'TODO:, 'HACK: and 'UNDONE: for VB.NET task list.
- Comment directives enhanced with an IN_THIS_FILE scope and the flagging of an entire call tree as live code with '$PROBHIDE DEAD.
- Macros support new commands: CommentManual, CommentManualUnformatted.
- File associations dialog and an option to define a default directory for file dialogs.
- Project Metrics lets you compare historical development of a
single file, class or procedure.
- Outliers calculated by Project Metrics. Outliers are metric values that are exceptionally high or low.
- New metrics:
Statement counts STMT, STMTd, STMTx, STMTc, STMTnc
Executability XQT
Control density CTRL
Cyclomatic complexity variations CC2 and CC3
Reuse benefit RB
- Enhanced analysis, including support for the !bang operator, VB6's Parent property, .NET Project Imports and .NET cross-project dependencies via a compiled library.
Version 7.0 (August 2003)
Major improvements in Project Analyzer v7.0:
- Support for VB.NET 2003. Still supporting VB 3.0-6.0 and VB.NET 2002. Improved support for ASP.NET projects.
- DLL file analysis. Analyze the contents of conventional DLLs. View recommended declaration syntax of Win API calls. (Enterprise Edition)
- Detect dead controls in VB 3-6 projects. Remove controls that are invisible, disabled or outside the visible form area.
- Detect dead classes, modules, structures, interfaces and discarded function return values. Also find semi-dead code such as classes that are never instantiated or interfaces that are not implemented. (See Dead code detection)
- Find duplicate code. Detect repeated lines that frequently result from copy & paste coding. Save space and facilitate maintenance efforts by eliminating duplicate blocks. (Enterprise Edition)
- String literal analysis. Detect and join repeated strings to save space and centralize string definitions. Estimate string data size in executable.
- Prevent resource leaks by requiring destroy/release calls on Win API resource handles.
- Enforce class design rules. Find subtle faults in class declarations. Special rule sets for .NET: Enforce practices on instantiation and destruction. Detect inheritance, scope and naming issues.
- Enhanced style and optimization rules. Constant without type specification, Constant with obsolete type character, Parameter with generic type, Case Else missing, Dim/Const found in code, Base address unoptimal, Compilation unoptimized.
- Project Metrics: Total metrics rewrite. New metrics such as comment density, logical and physical lines, deadness index, length of names, decision and call density, total and relative complexity, class hierarchy metrics, MOOD metrics, Chidamber & Kemerer OO metrics, class interface size, lines in call tree... Store metrics in a database and view historical development. Compare projects. View charts and detect out-of-bounds values. (Enterprise Edition)
- New reports. File lists, Module list, Namespace list, Procedure lists, Form report, Dead procedures report.
- Report to .csv file and import analysis results to Excel.
- Syntax-highlighted copy to Clipboard. Paste color-coded source to your documentation.
- Updated VB.NET Compatibility Check for version 2003. New issues: COM+/MTS not upgradable, COM method not callable. (Enterprise Edition)
Improvements and minor new features:
- Report improvements: printer margin setup, enhanced wrapping.
- Added option <Any other file> to References between files window.
Search for references from anywhere to a selected file.
- New cross-references: Implements - find implementors of an interface. Instantiate - find instantiations of a class. Inherits - find descendants of a class.
- Find window supports search for comments and a report button.
- Auto-fix preserves directory structure. (Enterprise Edition)
- COM procedures show procedure parameters. (Enterprise Edition)
- Macro language supports new parameters and reports. (Enterprise Edition)
- Option to locate web project files referenced via http. This makes it quicker to analyze ASP.NET solutions.
- More text and XML files can now be viewed in the Hypertext screen.
- Double-click a graphic file to view the picture.
- Solution item files and .webinfo files are now are supported for .NET.
- Enhanced problem reports by description (or by location).
- Added a problem icon when a file cannot be found.
- Project NameCheck ignores implementation procedure
parameters, as they are defined by the interface.
- Project NameCheck optionally ignores Declare statement
parameters, as they are often named in a non-VB standard.
- The use of AddHandler flags the target as an event handler.
- Better support for parameters in .NET <DLLImport> attribute.
- Unused parameters in Overrides procedures are not reported
dead because they are defined in an ancestor class.
- Problem icons are not shown for automatically generated source
regions or files such as Web References proxy classes.
- Improved handling of .NET namespaces and root namespaces to overcome limitations of v6.
There are also a number of less obvious enhancements and fixes.
Version 6.2 (January 2003)
- Project Graph provides new graph types: Control flow graph, Data flow graph and Form show graph.
- New problem detection features: Require explicit clearing of object variables, Empty module, Event not raised, Missing default/cancel button, Option Strict missing, On Error style used, Global variable found, Fixed-length string used, Object variable declared As New, Multi-dimensional array found, Microsoft.VisualBasic imported, Seal method for less overhead, WithEvents adds overhead, Use compound operator += etc., CType slower than DirectCast, Unicode function AscW/ChrW is faster, Constant available for certain Chr/Asc calls. Also added an option to enable/disable dead constants check.
- File dependency analysis finds circular file dependencies.
Version 6.1 (August 2002)
- Multi-project analysis. You can now open .vbg project
groups and .sln solutions, or pick several single projects
for a combined analysis. Enterprise Edition only
- COM file analysis. You can analyze the contents of
ActiveX files (.ocx, .dll, .exe, .tlb, .olb) and track
references to them. You can use ActiveX files in VB projects
as Components or Referenced files. Refer to multi-project analysis for more information. Enterprise Edition only
- Added option to detect dead but exposed code.
- Added support for Event statements in VB classic.
- New Executed by report.
- New References dialog.
- Project Graph saves the picture to a file, or copies it to the clipboard.
Version 6.0 (May 2002)
- Support for VB.NET added. Now supporting VB versions from 3.0 to 7.0.
- Inheritance tree in Project Graph. Larger graphs possible, as well as detection of two-way file dependencies.
- More powerful Find window. Search for variables,
constants, types and enums. Search for any text in your
project, or any piece of code (excluding comments and string
literals).
- View detailed cross-references for a piece of code by
right-clicking it in the hypertext view.
- Project Printer generates a HTML Help project for the code web site option.
- Enhanced reports: Module diagrams, Interface report, File list, Design quality report, Summary report, Dictionary report, Problem report, Needs report, Cross-reference report.
- New PDF report type.
- The usability of reports has been enhanced, with the ability print reports from the preview display, or save them in a .rtf, .txt or .pdf file.
- Project Printer rewritten.
- You can now edit your code with VB and keep Project Analyzer
open without negative effects.
- Improvements in the code analysis engine, adding reliability and accuracy to the results. Support for some rare coding constructs added, as well as better support for object-oriented analysis.
- Late-bound object member references are solved. (toggle on/off in General options)
Important changes from version 5.x
- The following metrics features now require an Enterprise Edition license: Metrics view, Metrics report, Call depth report, problem detection (metrics limits). In earlier versions, these were included in the Standard Edition.
- Small changes in the macro language, see file version.txt.
- Some settings have changed in Project NameCheck. It's able to
correctly import most settings from earlier versions, but you
should check the correctness of the settings before using it.
- The RTF to HLP file compile option for reports has been replaced by a similar feature for CHM help file compilation. This option is available in Project Printer.
Versions 5 and 4
Version 5.4 (May 2001)
- Enterprise Edition adds VB.NET compatibility check
Version 5.3 (January 2001)
- Enterprise Edition available with problem auto-fix and macros
- More problems detected
Version 5.2 (February 2000)
- Project NameCheck
- New reports
- Support for non-Western source code including Cyrillic, Greek, Hebrew, Arabic etc. characters
Version 5.1 (May 1999)
- Problem detection made more powerful and configurable
- New reports
Version 5.0 (October 1998)
- Added Support for Visual Basic 6.0, now supporting VB 3-6
- Saving and reloading of analysis
- Hypertext view integrated in the main window
- Call depth report
Versions 4.0 to 4.2
- Support for Visual Basic 3.0 to 5.0
©Aivosto Oy - Project Analyzer Help Contents