Plugins are special Perl Scripts that interact directly with Understand, they come in two flavors, Graphs and Interactive Reports. They can reference the entire Project, or a specific entity, depending on what the author intended. They can be as simple or complex as your imagination. There are API Tutorials that walk through creating Custom Graphs and creating Interactive Reports. If you haven’t already, we suggest you start there. More details on the Perl API Getting Started with the Perl API.

This custom graph modifies the call tree to show the complexity of each function (darker=more complex)

Be aware that often generating graphs for large projects can be very resource intensive, and in some cases the system can be non-responsive for a long period of time while the graphs are generated.


To install a plugin, simply drag the .upl file into the Understand GUI, or you can manually place it in one of the following locations:

Windows – e.g. C:\Program Files\SciTools\conf\plugin\User\IReport

Mac – e.g. /Users/username/Library/Application Support/SciTools/plugin/IReport

Linux – e.g. /home/username/.config/SciTools/plugin/IReport


Download these graphs by right clicking and selecting “Save As”. After installation project level graphs can be run by selecting Graphs->Project Graphs -> [Plugin Name]. Entity Specific graphs can be run by selecting the entity and then Graphs -> Graphs for [Entity Name] -> [Plugin Name].

  • graph_template.upl: This graph provides a template and documentation for writing your own graph plugin.
  • invocation.upl: This graph creates the call trees for all functions/methods in the project. It is very large, looks like spaghetti, and can be very slow. Use at your own risk.
  • flowchart.upl: This is a version of the Function/Method Control flow graph that uses the Perl API
  • assignments_and_assigned_by.upl: This graph shows where each object is assigned, and where it assigns others.

Interactive Reports

Download these reports by right clicking and selecting “Save As”. After installation project level reports can be run by selecting Reports->Project Interactive Reports -> [Plugin Name]. Entity Specific reports can be run by right clicking on the entity and selecting Interactive Reports -> [Plugin Name].

  • ireport_template.upl: A small script that shows how to exercise all of the IReport functionality. A very useful starting place for making your own reports.
  • highcomplexity.upl: Gives a list of the most complex functions in your project.
  • change_impact.upl: See what impact changing a particular entity will have on the codebase.
  • var_init.upl: Reports where variables in a function are initialized.
  • struct_report.upl: Show structures and where they are used.
  • astyle.upl: Works with the open source project astyle to reformat and beautify your code. More details about using the plugin here: Beautify your code
  • duplicate_code.upl: Find lines of code that have been duplicated across your code base.
  • batch_graphs.upl: Automates generating different Understand graphs.
  • cloned_functions.upl: Identify functions that are similar or identical.
  • _delta.upl: Identify various difference between two versions of a project.
  • overrides.upy: Show all overrides for the specified file.
  • macro.upy: Show all macros used within a file an the definition of known.