What's new in Project Analyzer v9

Upgrade now!Popup link
Order discounted
upgrade online.

Project Analyzer v9 is now available with exciting features. Find nasty new flaws in your VB, VB.NET and VBA code! Upgrade your old copy today to take advantage of this state-of-the-art tool.

Try & upgrade Upgrade prices Upgrade FAQ Old improvements

New to Project Analyzer? Read the introduction.

See also: Project Analyzer features and versions pdf

Improvements in v9: Find nasty flaws

  • Analyze Visual Basic 2008. Project Analyzer v9.0 supports Visual Basic versions 3.0, 4.0, 5.0, 6.0, 2002, 2003, 2005 and 2008.
  • 52 new code review rules. Find new bugs in your old code! See list below.
  • <Flaw finder> code review rules help locate logical mistakes and omissions and prevent future errors.
  • Create source print-outs in PDF. Produce interactive PDF source documentation where the reader can surf your code via links. Get cool new PDF files from Project Printer and as PDF print-outs.
  • Pseudo-code COM and DLL view. View the interface to library files as regular VB code. Ent
  • Hex viewer for binary files.
  • Analyze directory tree of source code files. It is no longer required to have a complete project (.vbproj or .sln) to analyze source files. Useful for analyzing codebehind classes of web sites.
  • Classify modules to understand legacy projects. The Module list report groups modules into Definitions, Interface, Abstract class, Concrete class, Stateless class, Dialog, Standard module and the like.
  • VB.NET 2008 compatibility check for VB6 code. Ent

VBA Plug v2

VBA Plug v2 supports Office 2007, as well as Office 2000, XP and 2003.

Project Analyzer v9 requires VBA Plug v2 to analyze any VBA code. If you have VBA Plug v1, you need to purchase an upgrade ($69).

Std = Standard Edition. Pro = Pro Edition. Ent = Enterprise Edition.

52 code review rules added: Find new bugs in old code

Project Analyzer v9 adds 52 code review rules, pushing the total over 250 rules supported. Watch for bad mistakes and thoughtless omissions in your colleagues' code — or your own. Impress your boss by smashing sleeping bugs before they wake up. Insure your applications against future mistakes.

Find hidden flaws with new dead code rules

Project Analyzer has improved considerably in its ability to detect partially unused code. Dead code detection now finds variables and constants that appear alive, but that are not so in reality.

  • "Variable users all dead." A variable seems to be in use, but the user procedures never execute. The variable is practically useless.
  • "Variable readers all dead." A variable is being read and written. The reader procedures never execute. One or more writes do execute, to no benefit.
  • "Variable writers all dead." A variable is being read and written. The writer procedures never execute. One or more reads do execute, though. Since the variable never gets a proper value, this can be a flaw.
  • "Variable not read, writers all dead." A variable is practically unused and useless. It is never read. Write statements never execute. It looks like a leftover from previous functionality.
  • "Variable not written, readers all dead." A variable is practically unused and useless. It is never assigned a value. Read statements never execute. The variable is a sleeping bug waiting to wake up and cause havoc.
  • Rules similar to the above also exist for UDT fields (Type..End Type).
  • "Constant users all dead." "Enum constant users all dead." A constant is referenced in the code, but the user procedures never execute. The value is effectively dead. If the value should be used, the program contains a flaw. Alternatively, this is a leftover from removed or disabled functionality.
  • "Enum users all dead." An Enum is used as a data type, but the user procedures are all dead. The values in the Enum never appear at run-time. The program contains a flaw or a leftover from previous functionality.
Prevent problems with Enums, Cases and bad conditions
  • "Enum missing zero value" locates incomplete Enums.
  • "Enum with duplicate value" reports duplicated Enum constants.
  • "Enum constant expected" warns if a number appears in place of Enum. Can be dangerous.
  • "Case branch(es) missing for Enum" compares Select Case against Enum and finds unhandled Enum values.
  • "Case useless" finds Case branches that never execute.
  • "Case overlap" finds Case ranges partially covered by a previous Case.
  • "Condition always True" (or False) reports unconditional branches and loops.
Prevent errors before they hit the user
  • "Hard-coded path found" reports directory paths in the source.
  • "ReDim without Dim" tells to add a Dim statement for arrays.
  • "For index variable not local" warns about a potentially dangerous For..Next.
  • "Octal number found" locates hard-to-read numbers (&O10 = 8).
  • "Declare contains ordinal number" reports DLL Declares with the brittle "#1" syntax.
  • "Cyclic recursion found" locates potential stack overflow.
Enforce consistent style
  • "Data-only class found" reports classes missing any operations.
  • "Dataless class found" reports classes having no internal state.
  • "Write-only property found" reports a missing Property Get, or Property Get having a smaller scope than Set or Let.
  • "Trailing comment found" reports end-of-line comments if you prefer full-line comments.
  • "Line too long" triggers when length exceeds your preferred maximum number of characters.
  • "CVDate found, use CDate" finds the old Variant function CVDate.
Watch for risky VB.NET syntax
  • "Type inference used" finds where the potentially dangerous Option Infer On is in use.
  • "Optional parameter in exposed procedure" verifies cross-language interoperability.
  • "File with several classes or modules" demands that each file should consist of a single class or module.
  • "Implicit variable" warns about an invisible variable declaration in a For statement.
  • "RaiseEvent fails via constructor" warns about nasty unfired Events.
  • "Multiple Return statements found" reports procedures with several exit points.
  • "ReadOnly variable expected" shows which variables to mark as ReadOnly.
Enforce VB.NET class design rules
  • "Shared constructor decreases performance" reports the slow Shared Sub New.
  • "Parent class inherited only once" appears for classes having just one child class.
  • "Shared-only class instantiated" locates unnecessary use of As New.
  • "NotInheritable expected" appears for classes with only Shared members, not suitable for inheritance.
  • "Interface ambiguous" appears when an Interface has two methods or properties with the same name.
  • "Interface duplicated" detects superfluous use of an Interface.
  • "MustInherit class missing MustOverride methods" requires abstract classes have abstract methods or properties.
  • "MustInherit class inherits concrete class" requires abstract classes be on top of the class hierarchy.
  • "MustOverride overrides concrete procedure" appears when a class deletes inherited functionality, not providing replacement.
  • "Shared expected" finds methods and properties that could be declared Shared.

Other improvements

  • Report enhancements:
    • Variables and constants report rewritten. Constants display their actual value in addition to their formula.
    • Variable deadness status added to Variable use report.
    • File LOC and age added to File sizes and dates report.
    • Library base address list added to Library report for optimizing your DLLs.
    • Statistics on names added to Dictionary report.
    • PDF reports rewritten.
  • Code review enhancements:
    • Enhanced rules for "Empty procedure", "Unused file", "Dead parameter", "Excess Scope", "Microsoft.VisualBasic imported".
    • Option to Ignore dead Property Get/Set/Let if another accessor is alive. Allow read/write properties also when either read or write is currently out of use.
    • Option to independently switch on/off the following code review rules: "Dead parameter", "ByVal parameter not read".
  • Find window: Search for "Code or String". Search results reformatted for readability.
  • Print code: New option "Bracket structures" emphasizes decision and loop structures.
  • Auto-fix preserves line continuation characters (_) when possible. Auto-fix can split long lines, move end-of-line comments to full-line comments and add a Dim statement before a ReDim if required.
  • Image version and compile time displayed for library files and executables.
  • Unicode support. Load international source in any codepage (character set).
  • Analysis improvements: Single-line Type and Enum blocks. Single-line classic VB declarations such as Dim x:Dim y or Sub x:End Sub. Generic Structure and Interface (Of T). Time literals #11:25:00#.
  • Late-bound and overloaded call resolution is improved a lot, leading to better accuracy with projects using these techniques.
  • Performance improvements for large analyses.

Try & upgrade today

Upgrade now!Popup link
Order discounted
upgrade online.

Download the newest Project Analyzer demo. It will co-exist with your current Project Analyzer version. Just make sure you put it in a new directory. The free demo can analyze max 10 source code files at a time. You can try it on any of your projects by selecting max 10 files to analyze. Or, analyze some of the nice little sample projects in your Visual Basic directory.

For more information:

Upgrade prices

Project Analyzer upgrades (US dollars)
Project Analyzer version upgrade Single user 2-pack Team 10-pack Site
v9 Std Upgrade from v5/v6/v7/v8 all editions $149 $249 $499
v9 Pro Upgrade from v7/v8 Pro/Ent $249 $419 $849
v9 Pro Upgrade from v5/v6 all editions, v7/v8 Std $399 $669 $1390
v9 Ent Upgrade from v7/v8 Ent $499 $849 $1590 $2490 $4790
v9 Ent Upgrade from v5/v6 all editions, v7/v8 Std/Pro $789 $1390 $2590
VBA Plug v2 Upgrade from v1
$69 $119 $239
Upgrade requires an existing license (same size or larger).
Example: Upgrade to 2-pack requires an existing license for 2 or more users.

Upgrade now!Popup link
Order discounted
upgrade online.

Discounted upgrades to Project Analyzer v9 are available from versions 5, 6, 7 and 8. A full price is required for upgrading from earlier versions.

Free upgrade options

Project Analyzer v8 to v9. If you purchased Project Analyzer v8 on 1 October 2008 or later, you get a free upgrade to v9. Write us to get your free upgrade.

VBA Plug v1 to v2. If you purchased VBA Plug v1 on 1 October 2006 or later, you get a free upgrade to v2. Write us to get your free upgrade.

Add-in upgrades are free. If you have an existing add-in license (Super Project Analyzer, Project Printer, Project Graph, Project NameCheck), you can upgrade it for free. Add-in keys for v6/v7/v8 continue to work, but you need to request free new keys if you have an older version. Request add-in keys

Upgrade FAQ

Q: Does it support VB.NET? 2008?

A: Yes it does! All of 2002, 2003, 2005 and 2008.

Q: Does it support VB6? VB5? VB4? VB3?

A: Yes it does, all of them - and better than ever before.

Q: I code in VB6. Is there something for me in the new version?

A: Yes. There are lots of enhancements for classic VB. The older your code, the more useful Project Analyzer gets.

Q: What about VBA support?

A: You need VBA Plug and Project Analyzer to read Office VBA code.

Q: Do I need to upgrade my VBA Plug?

A: You need to upgrade from VBA Plug v1 to v2. If you already have v2, there is no need to upgrade.

Old improvements in v8

Metrics added in v8.0 Ent
Project metrics
VARSgm Global and module-level vars
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 Max depth of call tree
maxSCALLT Max size of call tree

MOOD2 object-oriented metrics
OHEF Operation hiding effectiveness
AHEF Attribute hiding effectiveness
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 reads from variable
WRITES Number of writes to variable
RW Number of reads and writes
FLOWS Data flows into/out of variable
LENV Length of variable name
VARUSR Variable users
  • Analyze VB.NET 2005 code (plus VB 3.0-6.0, 2002, 2003 and VBA).
  • Enterprise Diagrams sample
  • Enterprise Diagrams visualize your system. Get complete dependency diagrams, inheritance diagrams, call diagrams, data diagrams, object instantiation diagrams etc. MorePopup link Ent

  • Visio diagramming. Send Enterprise Diagrams to Microsoft Visio. Ent
  • Project Graph news: Instantiation tree shows where classes are being instantiated. Data declaration tree shows where classes, structures, interfaces and forms are being used as data types. Pro, Ent
  • 20 new reports plus improved reporting to html/pdf/rtf/mht files. Find reusable subsystems and bad non-cohesive classes! Report list below.
  • Print code with syntax highlighting. Produce professional multi-column print-outs in color. MorePopup link
    Sample print-outs: Color Monochrome pdfPopup link
  • Export code as HTML or RTF with syntax highlighting.
  • Export metrics as XML. Ent
  • Project Metrics supports a total of 180 different metrics. See additions on the right. New metrics reports and XML export. Ent
  • Analyze constants and enums for duplicates and bugs.
  • List and navigate data types, modules, procedures, variables, parameters and constants.
  • 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 (COM requires Ent). Remove unused code and detect logical flaws!
  • New code review rules: Too many uncommented lines, Pass ByRef, ByRef parameter returns a value, ByVal parameter written to, ByRef parameter read only - consider ByVal, Initializer missing, Optional parameter missing default value, Assignment to self.
  • "In" and "out" parameters detected for procedures.
  • Improved analysis of special cases such as default members, constructor calls, overloads, enumerators.
  • Usability improvements: Bookmarks, mouse wheel support, line numbers, ...
  • Visustin integration for flowcharting. Requires Visustin v3.1 or later.
  • Windows Vista support ensured.

Reports added in v8

  • 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. Locate potentially dead variables and logical flaws where a variable might not be properly set.
  • 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.
  • Non-cohesive classes report finds classes to split up.
  • Subsystem report finds reusable subsystems in a program.

Old improvements in v7

Support for VB.NET 2003. Still supporting VB 3.0-6.0 and VB.NET 2002. Improved support for ASP.NET projects.

VBA Plug enables analysis of Office VBA projects with Project Analyzer. Read more

Auto-fix lets you insert 'TODO:, 'HACK: and 'UNDONE: in the VB.NET task list.

Enhanced analysis, including support for the !bang operator, VB6's Parent property, .NET Project Imports and .NET cross-project dependencies via a compiled library.

Project Printer enhanced with 12 new reports and a .hhk file for the HTML Site option.

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.

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. Project Metrics helpPopup link (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.

Old improvements in v6

Support for VB.NET 2002. Still supporting VB 3.0-6.0.

Multi-project analysis. Analyze .vbg or .sln files, or any projects that call each other. Analyze the use of COM files in VB projects. Feature requires Enterprise Edition.

Detection of exposed dead code. Best combined with multi-project analysis, this feature finds dead code in public classes that are exposed to other projects, but not used by any of them.

Detailed cross-references are available for any piece of code by right-clicking it in the hypertext view. You can also get a list of all references between 2 files to see how they depend on each other.

Enhanced reports. Module diagrams, Interface report, File list, Design quality report, Summary report, Dictionary report, Problem report, Needs report, Cross-reference report.

New report interface. The usability of the reports has been enhanced, with the ability print reports from the preview display, or save them in a .rtf or a .pdf file.

Enhanced source code documents are available in the Project Printer add-in. Generate good-looking docs including all of your source code or comments in code. Write specially formatted comments, or utilize existing comments as they are written. Multi-color syntax enhanced source code printing is now possible too.

Enhanced code web site. Generate a new, better looking code web site with the Project Printer add-in. Optionally compile the web site into a single .chm help file for easy browsing of your code.

Memory leak prevention by enforcing explicit clearing rules for object variables and dynamic arrays. (v6.2)

New problem detection rules, including Empty module, Event not raised, Missing default/cancel button, Global variable found, Fixed-length string used, Object variable declared As New, Unicode function AscW/ChrW is faster, Constant available for certain unnecessary function calls, For..Next final value unoptimal, Consider short-circuited logic. (v6.2)

New optimization rules for VB.NET, including Option Strict missing, On Error style used, Multi-dimensional array found, Microsoft.VisualBasic imported, Seal class/method for less overhead, WithEvents adds overhead, Use compound operator += etc., CType slower than DirectCast. (v6.2)

File dependency analysis finds circular file dependencies that have a negative effect on code reuse. (v6.2)

Executed by report lists the actions, such as events, that cause a procedure to execute.

Enhanced Find feature. Search for variables, constants, types and enums. Search for any string in your project. Search for any piece of real code, excluding comments and string literals.

Project Graph has new ways to include the graphs in your documents: copy to clipboard or save as picture file. Printer settings enhanced. Project Graph supports larger graphs than before, and enhances two-way links so you can quickly spot problematic code. New Project Graph types:

  • Class inheritance tree visualizes the Implements and Inherits statements.
  • Control flow tree shows how procedure execution flows between modules.
  • Data flow tree shows how data flows between modules via variable read/write and parameter passing.
  • Form show tree visualizes the order in which forms show each other.
  • Project dependency graph describes a large system consisting of several projects.

More information

Download demo
Editions
Order instructions
Order upgradePopup link

©Aivosto Oy -