Project Analyzer reports - Modules and interfaces

Reports

These reports describe the interfaces to modules and what interface definitions are available in the system. You can even use them for code review and security audits. The reports are available in the Reports menu of the main window of Project Analyzer.

Module interface report

Variables and procedures make up the programmable interface of a module (class, form, etc.). Other modules interface with the module by calling its member procedures, responding to its events and reading/writing its member properties and variables.

The report comes in 3 flavors:

  1. All scopes — This option lists all variables and procedures regardless of scope. It tells you how each module can interface with itself and other parts of the program. Sample report
  2. Friend and Public — This option lists all Friend, Protected Friend and Public variables and procedures. It tells you how each module can interface with other modules in the system. Private and Protected members are hidden since they are only available to the module itself and via inheritance. Sample report
  3. Public exposed only — This option lists Public variables and procedures in exposed modules. It tells you how other programs can interface with this system. Sample report

Which option to use? Get report flavor #1 for a full description, flavor #2 for a regular project-level documentation and flavor #3 for documenting the external access to your library.

Module members

A Module members report tells you what member variables and procedures a module contains. Here, a module be a class, a standard module, a form, a UserControl or a similar element. In .NET, it can also be a Structure or an Interface. The report lists all members by scope from Private to Public. There are several report subtypes available. Each subtype lists a different combination of members, hiding the rest:

Module members subtype Description
All procedures and variables This report lists all procedures and variables defined in a module.
Data input This report lists the ways other modules can pass data to a module. It includes variables and writable properties. It also includes procedures that take "in" parameters. In addition, it includes events that have "out" parameters so that an event handler can pass some data back. Accepted scopes are Friend, Protected Friend and Public. Private and Protected data input is not reported.
Data output This report lists the ways other modules can retrieve or receive data from a module. It includes Friend and Public variables, readable properties, functions, and events passing parameters. In addition, it includes Friend and Public procedures with "out" parameters.
External access This report shows the ways an external project can access each module. It includes exposed procedures and variables. Only exposed modules are shown. The External access report is useful for a security audit when you wish to know how your application could be used another, potentially malicious program. Exposed scopes: Protected, Protected Friend, Public. This report is empty for those standard executable projects that don't expose anything.
External data input This report shows the ways an external project can pass data to each exposed module. It is similar to the Data input report, but only shows the exposed input. The External data input report is useful for a security audit when you wish to know how your application can receive data and how a malicious program could feed improper data into it. Exposed scopes: Protected, Protected Friend, Public. This report is empty for those standard executable projects that don't expose anything.
External data output This report shows the ways external projects can retrieve or receive data from each module. It is similar to the Data output report, but only shows the exposed output. The External data output report is useful for a security audit when you wish to review the ways your application passes data out of it. Exposed scopes: Protected, Protected Friend, Public. This report is empty for those standard executable projects that don't expose anything.
Module data This report lists all variables and properties of each module. Variables and properties are types of data storage.
Private data This report lists all Private variables and Private properties.
Data read access This report shows the ways other modules can access the data stored in the module. It includes variables and readable properties with Friend or Public scope.
Data write access This report shows the ways other modules have write access to the data stored in the module. It includes variables and writable properties with Friend or Public scope. You can use this report to find problematic write access to data that should not be changed. You may need to change the scope of variables to Private or declare the Property Set accessor as Private.
Properties This report lists the properties of each module.
Procedures This report lists all procedures of each module, including methods, properties, events, constructors, operators etc.
Methods This report lists regular Subs and Functions, including constructors.
Events This report lists the events defined by each class, structure or interface.
Constructors This report lists the constructors of classes and structures. Sub New, Shared Sub New and Class_Initialize are included.
Constructors and finalizers This report lists the constructors and finalizers of classes and structures. Sub Finalize and Class_Terminate are included in addition to constructors.
Procedures with out parameters This report lists procedures that may return data via their parameters. The report lets you review the use of "out" parameters in a program. Generally speaking, returning data via "out" parameters is not a good way to program. Data should be returned via function return values and properties.

In this report inherited members are blue. You can use the reports to document member inheritance in .NET projects.

Tip: You can get a Module members report (all procedures and variables) for an individual module by right-clicking a module in the main window of Project Analyzer.

Interface report

The Interface report lists the Interface definitions in your system. In VB.NET, you define one using the Interface ... End Interface construct. In classic VB, an interface is a (skeleton) class that another class Implements.

Besides listing the available interfaces, the Interface report also shows which classes implement those interfaces.

Sample report: Interface report

See also

Reports

©Aivosto Oy - Project Analyzer Help Contents