Summary: information about the Path Finder feature introduced in CAST Imaging ≥ 2.9.
Introduction
Debugging is challenging when the path between elements is unknown. Developers may have difficulty isolating the root cause of an issue or understanding how data flows between the elements involved. This lack of visibility can prolong the debugging process and impede efficient resolution. The Path Finder feature helps developers to quickly navigate through large code bases, see the relationship between elements to evaluate the effects of their modifications and find chances for code reuse and optimization. This leads to faster debugging and effective resolution.
The Path Finder feature in default mode will automatically produce a view displaying all the possible paths or the shortest path (depending on the chosen options) from the selected source object to a given destination/target object - this includes any paths between the source object's child objects and the target object or its child objects. The feature is available at Object level in all scopes.
A similar feature called Show Paths (renamed as Highlight Path) is available in User Guide - GUI - Menus and Icons.
Several similar features are available in the UI: Path Finder, Show Paths, Start Points, and End Points and Call Hierarchy - the basic differences are as follows:
- Show Paths (renamed as Highlight Path) displays all paths between the two selected objects based on callee links .
- Path Finder not only displays all paths between two selected objects using any link type, but also the shortest path. Additional filtering can also be applied to the results, for example, the ability to:
- choose the specific link types between the source and target objects
- choose the number of "hops" between the source and target objects
- Start Points and End Points displays the start points and end points linked to a selected element.
- Call Hierarchy displays a comprehensive call graph for a chosen element, showcasing its callers, callees, or both.
Accessing the feature
To access the Path Finder feature, you must be working at Object level in any scope:
Right click an object in the view and select Path Finder from the contextual menu - this object will then be designated the Source object:
Enabling/disabling the feature for CAST Imaging ≤ 2.11
Using the feature
When the Path Finder option is clicked, the following dialog box is displayed enabling you to choose the Target object for your path from a list of potentials which can be further filtered using the available options (described below):
Click to enlarge
≥ 2.17 | |
---|---|
2.13 - 2.16 |
The right hand panel displays the list of potential target objects for the Path Finder operation - by default all objects are listed:
Click to enlarge
If a large number of objects are listed and you know which specific object you want to select as the Target, you can use the search box - this functions on the object's name and is case sensitive:
You can also use a filter on the search to further narrow your results:
Regex pattern | Enabling this option allows you to input the search string using a Regular Expression. |
---|---|
Case sensitivity | Enable/disables case sensitive search (disabled by default). This applies to text strings entered in the search field. |
Search by | Search by either Name or FullName. |
Search by position | Select as appropriate to specify where in the string the match should occur. By default this is set to Start. |
If you need to filter the list of objects even further, use the left hand panel - see the sections below which explain these options in more detail:
When you have located the object you want to set as the Target, select it and then click Load and choose:
- Load all paths - discover and display all possible paths between the Source and Target object
- Load shortest path - discover and display the shortest path between the Source and Target object
or Find Path (older releases of CAST Imaging):
Filter options available in ≥ 2.17
The filter options can help you to narrow down your choice of target object:
Item | Description |
---|---|
All objects | The default filter selection. Will list ALL potential target objects, i.e all those connected in some way to the original source object. |
Start points | Will list only objects that are considered "start points" for transactions involving the original source object. |
End points | Will list only objects that are considered "end points" for transactions involving the original source object. |
Callers | Will list only objects that are calling the original source object. |
Callees | Will list only objects that are called by the original source object. |
Select object types | Allows you to filter on specific objects. You can combine multiple object types if required. Click in the field to select an object type from the drop down list: only those object types available in the current application will be listed. |
Filter options available 2.13 - 2.16
Item | Description |
---|---|
Show all paths/shortest path |
|
Select link type | Choose either Callee or Caller to determine the type of links to other objects that will be taken into account by the Path Finder feature:
|
Number of hops | Defines the maximum number of objects between the Source and Target objects. By default this is set to 4 and can be changed as required. Note that changing to above 10 can impact performance - the higher the number, the more objects need to be discovered, therefore impacting performance. |
Select object types | Allows you to filter on specific objects and is mandatory - i.e. no potential target objects will be displayed unless you specify at least one object type in this field. You can combine multiple object types if required. Click in the field to select an object type from the drop down list: only those object types available in the current application will be listed. |
Hide external objects | Use these options to filter the type of objects in the results:
|
Main objects only |
Results
When Load or Find Path is clicked, the view is updated. It will show the Source and Target objects and the paths between them (respecting the options that have been configured):