Skip to content

Plugin System

RootCause allows extending its capabilities via external plugins that run as separate processes and communicate through JSON-RPC.

Basic usage

Management commands

bash
# Install a plugin
rootcause plugin install ./my-plugin
rootcause plugin install https://github.com/user/plugin.git

# Manage plugins
rootcause plugin list                    # List installed plugins
rootcause plugin remove plugin-name      # Remove
rootcause plugin verify ./plugin         # Verify it works

# Create a new plugin
rootcause plugin init ./my-new-plugin

For more commands, see the CLI module.

Using plugins

bash
# Single plugin
rootcause ./code --rules ./rules --plugin ./plugins/decodebase64

# Multiple plugins with options
rootcause ./code --rules ./rules \
  --plugin decodebase64 \
  --plugin ts-eval \
  --plugin-opt decodebase64.mode=aggressive \
  --plugin-opt ts-eval.max_lines=2000

Execution flow

Plugin types

TypeCapabilityPurpose
DiscoverdiscoverAdd additional paths or exclude directories
TransformtransformModify content before analysis (decode, decompress)
AnalyseanalyzeProcess files and emit findings
RulesrulesProvide additional rules
ReportreportGenerate custom output formats

Plugin locations

RootCause searches for plugins in this order:

  1. --plugin ./explicit/path
  2. ./.rootcause/plugins/*

RootCause - Modular Static Analysis Engine