The Help Directive is a CPGQL Directive which returns textual descriptions of other directives.
If it is executed by itself, it shows an overview of Top-Level Commands:
joern> help res0: Helper = Welcome to the interactive help system. Below you find a table of all available top-level commands. To get more detailed help on a specific command, just type `help.<command>`. Try `help.importCode` to begin with. _______________________________________________________________________________ command | description | example | ==============================================================================| close | Close project by name | close(projectName) | cpg | CPG of the active project | cpg.method.l | delete | Close and remove project from disk | delete(projectName) | importCode | Create new project from code | importCode("example.jar")| importCpg | Create new project from existing CPG| importCpg("cpg.bin.zip") | open | Open project | open("projectName") | project | Currently active project | project | reloadPolicy| reload policy | reloadPolicy | run | Run analyzer on active CPG | run.securityprofile | save | Write all changes to disk | save | undo | undo effects of analyzer | undo | workspace | Access to the workspace directory | workspace |
If executed with a Top-Level Command CPGQL Component prefix, it describe that Top-Level Command:
joern> help.save res0: String = """ Close and reopen all loaded CPGs. This ensures that changes have been flushed to disk. Returns list of affected projects"""
If executed as part of a traversal, it prints available steps and their description at this point. Note that this list may not be complete - use
<tab> completion for the full list.
joern> cpg.help Available starter steps: ______________________________________________________________________________________________________________________ step | description | =====================================================================================================================| .all | All nodes of the graph | .argument | All arguments (actual parameters) | .arithmetic | All arithmetic operations, including shorthand assignments that perform arithmetic (e.g., '+=') | .arrayAccess | All array accesses | .assignment | All assignments, including shorthand assignments that perform arithmetic (e.g., '+=') | ... joern> cpg.method.help Available steps for Method: ___________________________________________________________________________ step | description | ==========================================================================| .address | Address of the code (for binary code) | .ast | All nodes of the abstract syntax tree | .body | Alias for `block` | .break | All breaks (`ControlStructure` nodes) | .cfgLast | Last control flow graph node | ...