LiveReference helps you find all references for a particular function. You can easily discover who is using a function, and where the calling code is located.
LiveReference is enabled by default once a script contains functions.
NOTE: LiveReference is a feature of ISESteroids Enterprise. To test-drive this feature during trial, make sure you choose the menu item “Level/Enable All Features”.
LiveReference adds a label to each function, telling you how many references there currently are.
When you click on the label, and there is only one reference, you are taken to the caller. If there is more than one reference, a reference list slides in at the bottom, and shows you all code lines that call the particular function. Click on a line to navigate to the location.
ISESteroids monitors all live references. So once you import a module, or run scripts, the reference system will show you exactly which function is called from where.
Semantic Analysis Fallback Mode
When you just load scripts, and not run them, you can still see references. In this case, ISESteroids does a semantic analysis, and looks at the script code to derive references.
However, semantic analysis has intrinsic limitations (for example, when there are multiple functions with the same name defined in different scopes, which one should be picked? When there are calls from other scripts, how would ISESteroids know they exist?).
These limitations apply to the semantic fallback analysis only.
Once the script(s) are loaded to memory, ISESteroids always looks at the actual live references taken from memory, even across multiple scripts and modules.
If a function is called from outside the script that the function defines, the function label reports “external references”.
When you click the label, the Reference list at the bottom of the editor shows all internal references (calls from inside the current script) plus all external references (calls from other scripts or modules). External references are marked “(external)” in the list.
Click an external reference in the list to be taken to the script that calls the function. This is an excellent way of navigating across multiple scripts and large module solutions.