Help Directive

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 |
...