Summary: describes how to work with CAST AIP Extensions within Console.

How does Console provide access to extensions?

Console provides two methods to work with extensions, these are explained below. In each case, when an extension needs to be fetched either from CAST public Extend servers or from an on premises Extend local server, the following will be used on the relevant Node:

Console ≥ 1.25ExtendCli.exe
Console ≤ 1.24ExtensionDownloader.exe

The option allows you to run actions such as analysis, upload to Imaging, upload Dashboards:

Included extensions

When using:

Included extensions are the extensions that are active and used when you run an analysis for a specific Application version. Extensions that are used when you run an analysis are automatically determined by Console and are installed for every single source code Version you deliver - this means that each Version will have a specific set of extensions enabled and active, tailored to the source code that needs to be analyzed. You can also manually include additional extensions that have not been included automatically, if necessary.

Each "included" extension is represented by a rectangular item in the list, for example for the HTML5/JavaScript Analyzer:

1Name of the extension. This is a clickable link that will take you direct the extension in the CAST Extend public website. Note that when using Extend local server (in offline or connected mode), the clickable link will not be available. In addition, when the extension does not exist in the CAST Extend public website (for example internal or custom extensions that have not been published to Extend) the link will produce a 404 page not found.
2Indicates the extension category (Product / User Community / Labs) and the origin (Discovered, Force Install, Shipped) - see below.
3

Allows you to remove Discovered and Force Installed extensions, for example to maintain identical results between successive versions. Note that Console will not re-download an extension that has been deleted. If you require the extension again, it must be downloaded manually.

4Allows you to change the specific release of an extension - see Change extension version.
5

Indicates that a newer release of the extension is available in CAST Extend (local or public).

Extension origin priority

Console obtains details about which extensions to use and where to get them from, from several different sources - these are known as the extension "origin":

When an extension has multiple "origins", Console uses a priority system to determine which "origin" should be used to include the extension in a given Application version. The priority used is as follows:

≥ 1.21.0-funcrel

CUSTOM are overwritten by SHIPPED which are overwritten by DISCOVERED which are overwritten by FORCE_INSTALL

≤ 1.20.0-funcrel

CUSTOM are overwritten by DISCOVERED which are overwritten by FORCE_INSTALL which are overwritten by SHIPPED


  • CUSTOM = Extensions that are manually "included" in a given version of an Application using the Console interface
  • SHIPPED = Extensions that are shipped with AIP Core on the relevant Node
  • DISCOVERED = Extensions that Console automatically determines (during the source code delivery) must be installed for a given version of an Application
  • FORCE_INSTALL = Extensions selected by a user with the ADMIN role for use during an Application analysis (see Administration Center - Settings - Extensions Strategy for more information)

Extension categories

Extensions fall into the following categories:

Shipped extensions

These extensions are shipped with AIP Core on the target Node used by your Application (they are delivered in the shipped_extensions folder in the AIP Core installation on the target node and are moved into %PROGRAMDATA%\CAST\CAST\Extensions during the Application creation process). In AIP Core ≥ 8.3.48, many extensions that were previously categorized as "shipped extensions" are no longer "shipped" with AIP Core (you can find a list here: Shipped extensions) and are now "discovered".

For Nodes using older releases of AIP Core, "shipped extensions" are typically critical extensions such as:

These extensions are "flagged" as follows:

The behaviour of these extensions is as follows:

Console ≥ 1.11.0

During source code delivery, if any of these extensions is ALSO detected as Discovered or is set as Force Install (see below) then Console will automatically fetch the most recent release of the extension, depending on the strategy in place (Version Range - Alpha/Beta/Funcrel/LTS - and Version number lock).

For example if the default strategy is in place, then a more recent release of the extension will be auto downloaded and installed (if it exists) and this may include an alpha or beta release if it is the most recent.

Console ≤ 1.10.0During source code delivery, Console will use the release of the extension shipped with AIP Core and will not automatically fetch a newer release.
Discovered

Discovered extensions are flagged as follows:

Any extension that is flagged as Discovered has either:

Note that:

  • if this "discovered" extension is not present on the target Node used by the Application (in %PROGRAMDATA%\CAST\CAST\Extensions), then depending on the strategy in place (Version Range - Alpha/Beta/Funcrel/LTS - and Version number lock Console will download the most recent release of the extension from CAST Extend automatically during the Application analysis.
  • if this "discovered" extension is already present on the target Node (in %PROGRAMDATA%\CAST\CAST\Extensions) AND if it is also a "shipped" extension, then Console will first check whether a newer release of the extension exists on CAST Extend, and depending on the strategy in place (Version Range - Alpha/Beta/Funcrel/LTS - and Version number lock) it will download the most recent recent of the extension from CAST Extend automatically during the Application analysis.
  • Console will not, in general, auto install User Community or Labs extensions (any extension with an ID like com.castsoftware.uc.nameoftheextension or com.castsoftware.labs.nameoftheextension). There are some exceptions to this, for example, the following User Community extensions that provide "Universal Analyzer" technology to perform analyses may be installed if the relevant source code is discovered. This includes extensions such as:
Force Installed

These extensions are flagged as Force Installed as follows:

Any extension that is flagged as Force Installed has been specifically selected by an Admin user for use during an Application analysis (see Administration Center - Settings - Extensions Strategy for more information).

Manually included

These are extensions that you have decided to add yourself manually from the Available panel. These extensions will be downloaded and stored on the Node used by the Application.

Note that these extensions are not "flagged" in any specific way in the Console interface, however, they could additionally be flagged as Discovered or Force Installed.
Product / User Community / Labs

An extension always falls into one of three categories, explained in Contributor types:

Product
User Community
Labs

Available extensions

This section will not be populated for new Applications until you add a new version and its status is a minimum of "Delivered".

Available extensions are extensions that are not active for the current version, but can be included manually if you wish to:

Working with included extensions

Included extensions are those that will be used when you analyze a version.

Any changes you make, such as adding new extensions via the Available option, or changing the version number of an existing included extension, require action before the changes will be taken into account:

  • you can run an analysis to ensure that the changes are taken into account. Running just a snapshot without an analysis will not implement the changes you have made.
  • In ≥ 1.18, a yellow banner will appear at the top of the screen with an option to run the extension installation action on its own without having to run an analysis, or to run an analysis (which includes the install extensions step in ≥ 1.19):

Move to the Console screen if you are not already there:

Find the relevant Application - extensions are always installed on a "per Application basis" - in this example it is called "MEUDON":

Click the Extensions option on the left (click to enlarge):

A list of included extensions is displayed:

Click to enlarge:

Switching Application versions

Extensions will be used on a per Version basis - use the drop down list to switch to a different Application Version and view the included extensions for the specific Version:

Click to enlarge:

Changing the version using this version switch and then clicking the Run analysis/Snapshot button  in the same screen will not run the analysis/snapshot on the active version chosen in this screen. The analysis/snapshot will be run on the Version that is Accepted.

Enable auto configuration

This option has been removed in ≥ 2.3: Discovered and Force Installed extensions can be removed at all times. Shipped extensions cannot be removed.

In the majority of situations you should let Console manage the discovery of extensions, however, when running a rescan to perform a consistency check (for example), you may sometimes need to remove a particular extension to maintain identical results, therefore this option controls the ability to remove Discovered and Force Installed extensions:

Behaviour of the option:

  • when enabled (default position), it is not possible to remove Discovered or Force Installed extensions.
  • when disabled, it is possible to remove an extension that has been discovered by Console or force installed using the delete icon (Shipped extensions cannot be removed) - this icon will appear when the Enable auto configuration option is toggled to disable:

Note that a Global Configuration setting called Enable auto update is also available which functions when Enable Auto Configuration is enabled.

Changing Extension version

You can change the extension version that will be used in the next Application analysis by clicking the extension version drop down and selecting the version you require:

Click to enlarge

  • The new version of an extension must be higher than the existing version.
  • an Admin user may have implemented an extension strategy and therefore you may not be able to change the version of the extension, or the extension version you are looking for may not be available.

Filtering included extensions

You can filter extensions so that it is easier to see exactly what is being used:

DiscoveredShow only Discovered extensions
Force InstalledShow only extensions that are Force Installed.
UpdatesShow only extensions where a newer version is available.

Using the Change Forecast tool

The Change Forecast tool is provided at https://extend.castsoftware.com/change-forecast/ to help you prepare for an upgrade of a given extension. The tool provides the ability to choose two extension releases (i.e. the current extension you are using and the target extension you want to upgrade to) and view the changes that have occurred between the two releases. Knowing what has changed enables you to understand the impacts of upgrading your extension release on your existing analysis results. Changes inlude updates such as:

  • resolved issues
  • new features
  • other modifications

Console has a built in utility that will allow you to consult the Change Forecast tool directly from the Console interface. Click the "i" icon highlighted below:

This icon will load the Change Forecast tool in your browser (external access to https://extend.castsoftware.com is required), with a list of the extensions that have updates available. This allows you to view the changes that have been added in the updated releases of the extensions:

Working with available extensions

When working within the Extensions option, click the Available tab to view the extensions that have not been used in an analysis, but can be included manually if you wish. You can now view a list of additional extensions that can be included and activated when you analyze and generate a snapshot:

Note that an Admin user may have implemented an extension strategy and therefore the extension you are looking for may not be available.

Include an available extension

First select the Application Version you want to include the extension in - the most recent will be displayed by default:

Then choose the extension version you require by clicking the extension version drop down and selecting the appropriate version:

Click to enlarge

Click INCLUDE to include the extension in the chosen Application version. The extension will then be visible in the Included tab for the specific version you chose. When you analyze and generate a snapshot for this Application version, the extension will be installed and used:

Note that an Admin user may have implemented an extension strategy and therefore you may not be able to change the version of the available extension.

Filtering available extensions

You can filter the type of extension you want to install:

See the following for more information about the filters:

Troubleshooting

If you are facing errors during the "install extensions" step, it is possible that the folder used to store the extensions on the Node may be corrupt, for example:

INF: 2022-09-17 20:28:14: Downloading extension 'com.castsoftware.typescript.1.10.1-funcrel'
ExtensionDownloder 2.0.0 c CAST 2019

Root element is missing.
ERR: 2022-09-17 20:28:21: Unable to download extension 'com.castsoftware.typescript.1.10.1-funcrel'. Return code from Extension Downloader: 1
ERR: 2022-09-17 20:28:21: Unable to download extensions
com.castsoftware.aip.node.jobs.steps.analysis.ExtensionDownloadException: Failed to download the extension 'com.castsoftware.typescript.1.10.1-funcrel'

The storage folder is located here by default (but may be located in a different place in your own environment):

%PROGRAMDATA%\CAST\CAST\Extensions

To try to resolve the error, you can rename the "Extensions" folder (for example to "Extensions_old") and then create a brand new empty "Extensions" folder. Doing this will force Console to download all the required extensions again but this may impact overall performance of the analysis.