lightning-flow-scanner
Lightning Flow Scanner is a sfdx plugin scanning the integrity and best practices of Salesforce Flows
If your root folder is not force-app, please set variable SALESFORCE_LIGHTNING_FLOW_SCANNER_DIRECTORY
lightning-flow-scanner documentation
- Version in MegaLinter: 2.36.0
- Visit Official Web Site
- See How to configure lightning-flow-scanner rules
- If custom
.flow-scanner.json
config file isn't found, .flow-scanner.json will be used
- If custom
- See Index of problems detected by lightning-flow-scanner
Configuration in MegaLinter
- Enable lightning-flow-scanner by adding
SALESFORCE_LIGHTNING_FLOW_SCANNER
in ENABLE_LINTERS variable - Disable lightning-flow-scanner by adding
SALESFORCE_LIGHTNING_FLOW_SCANNER
in DISABLE_LINTERS variable
Variable | Description | Default value |
---|---|---|
SALESFORCE_LIGHTNING_FLOW_SCANNER_ARGUMENTS | User custom arguments to add in linter CLI call Ex: -s --foo "bar" |
|
SALESFORCE_LIGHTNING_FLOW_SCANNER_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter Ex: -s --foo "bar" |
|
SALESFORCE_LIGHTNING_FLOW_SCANNER_CLI_LINT_MODE | Override default CLI lint mode ⚠️ As default value is project, overriding might not work - file : Calls the linter for each file- list_of_files : Call the linter with the list of files as argument- project : Call the linter from the root of the project |
project |
SALESFORCE_LIGHTNING_FLOW_SCANNER_PRE_COMMANDS | List of bash commands to run before the linter | None |
SALESFORCE_LIGHTNING_FLOW_SCANNER_POST_COMMANDS | List of bash commands to run after the linter | None |
SALESFORCE_LIGHTNING_FLOW_SCANNER_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling SALESFORCE_LIGHTNING_FLOW_SCANNER and its pre/post commands | None |
SALESFORCE_LIGHTNING_FLOW_SCANNER_CONFIG_FILE | lightning-flow-scanner configuration file nameUse LINTER_DEFAULT to let the linter find it |
.flow-scanner.json |
SALESFORCE_LIGHTNING_FLOW_SCANNER_RULES_PATH | Path where to find linter configuration file | Workspace folder, then MegaLinter default rules |
SALESFORCE_LIGHTNING_FLOW_SCANNER_DISABLE_ERRORS | Run linter but consider errors as warnings | false |
SALESFORCE_LIGHTNING_FLOW_SCANNER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | 0 |
SALESFORCE_LIGHTNING_FLOW_SCANNER_CLI_EXECUTABLE | Override CLI executable | ['sf'] |
SALESFORCE_DIRECTORY | Directory containing SALESFORCE files (use any to always activate the linter) |
force-app |
IDE Integration
Use lightning-flow-scanner in your favorite IDE to catch errors before MegaLinter !
IDE | Extension Name | Install | |
---|---|---|---|
Visual Studio Code | Lightning Flow Scanner |
MegaLinter Flavors
This linter is available in the following flavors
Flavor | Description | Embedded linters | Info | |
---|---|---|---|---|
all | Default MegaLinter Flavor | 124 | ||
salesforce | Optimized for Salesforce based projects | 54 |
Behind the scenes
How are identified applicable files
- Activated only if sub-directory
force-app
is found. (directory name can be overridden withSALESFORCE_DIRECTORY
) - If this linter is active, all files will always be linted
How the linting is performed
lightning-flow-scanner is called once on the whole project directory (project
CLI lint mode)
- filtering can not be done using MegaLinter configuration variables,it must be done using lightning-flow-scanner configuration or ignore file (if existing)
VALIDATE_ALL_CODEBASE: false
doesn't make lightning-flow-scanner analyze only updated files
Example calls
sf flow:scan
Help content
› Warning: @salesforce/cli update available from 2.66.7 to 2.67.7.
(node:1762) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
Find and fix potential bugs in Salesforce flows.
USAGE
$ sf flow scan [--json] [--flags-dir <value>] [-d <value>] [-c
<value>] [-f error|warning|note|never] [-r] [-p <value>] [-u <value>]
FLAGS
-c, --config=<value> Path to configuration file
-d, --directory=<value> Directory to scan for flows
-f, --failon=<option> [default: error] Threshold failure level (error,
warning, note, or never) defining when the
command return code will be 1
<options: error|warning|note|never>
-p, --sourcepath=<value> Comma-separated list of source flow paths to
scan
-r, --retrieve Force retrieve Flows from org at the start of
the command
-u, --targetusername=<value> Retrieve the latest metadata from the target
before the scan.
GLOBAL FLAGS
--flags-dir=<value> Import flag values from a directory.
--json Format output as json.
Installation on mega-linter Docker image
- Dockerfile commands :
# Parent descriptor install
# renovate: datasource=npm depName=@salesforce/cli
ARG SALESFORCE_CLI_VERSION=2.66.7
# renovate: datasource=npm depName=@salesforce/plugin-packaging
ARG SALESFORCE_PLUGIN_PACKAGING_VERSION=2.9.0
# renovate: datasource=npm depName=sfdx-hardis
ARG SFDX_HARDIS_VERSION=5.7.1
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk
ENV PATH="$JAVA_HOME/bin:${PATH}"
RUN sf plugins install @salesforce/plugin-packaging@${SALESFORCE_PLUGIN_PACKAGING_VERSION} \
&& echo y|sf plugins install sfdx-hardis@${SFDX_HARDIS_VERSION} \
&& (npm cache clean --force || true) \
&& rm -rf /root/.npm/_cacache
ENV SF_AUTOUPDATE_DISABLE=true SF_CLI_DISABLE_AUTOUPDATE=true
# Linter install
# renovate: datasource=npm depName=lightning-flow-scanner
ARG LIGHTNING_FLOW_SCANNER_VERSION=2.36.0
RUN echo y|sf plugins install lightning-flow-scanner@${LIGHTNING_FLOW_SCANNER_VERSION} \
&& (npm cache clean --force || true) \
&& rm -rf /root/.npm/_cacache