Skip to content

code-analyzer-apex

GitHub stars GitHub release (latest SemVer) GitHub last commit GitHub commit activity GitHub contributors

Salesforce Code Analyzer (SFDX Scanner) is the official Salesforce CLI plugin for scanning Apex code, triggers, and other Salesforce components to identify potential issues, security vulnerabilities, and code quality problems. It uses industry-standard tools like PMD and ESLint to provide comprehensive analysis of Salesforce development artifacts.

Key Features:

  • Multi-Engine Analysis: Combines PMD for Apex analysis with ESLint for JavaScript/Lightning Web Components
  • Security Focus: Identifies security vulnerabilities and potential attack vectors in Salesforce code
  • Performance Optimization: Detects performance anti-patterns and inefficient code constructs
  • Code Quality Rules: Comprehensive rule sets covering best practices, naming conventions, and maintainability
  • Configurable Severity: Customizable severity thresholds and rule categories for different project needs
  • Multiple Output Formats: Supports CSV, JSON, SARIF, and other formats for integration with development tools
  • Lightning Platform Specific: Rules tailored for Salesforce platform constraints and governor limits
  • Custom Rule Sets: Support for custom PMD rule sets and organization-specific coding standards

If your root folder is not force-app, please set variable SALESFORCE_SFDX_SCANNER_DIRECTORY

You can select categories and single rules by defining custom arguments (example: SALESFORCE_SFDX_SCANNER_ARGUMENTS: -c "Best Practices,Security")

See more details in Help

Workaround: Restricted to PMD

code-analyzer-apex documentation

code-analyzer - GitHub

Configuration in MegaLinter

Variable Description Default value
SALESFORCE_CODE_ANALYZER_APEX_ARGUMENTS User custom arguments to add in linter CLI call
Ex: -s --foo "bar"
SALESFORCE_CODE_ANALYZER_APEX_COMMAND_REMOVE_ARGUMENTS User custom arguments to remove from command line before calling the linter
Ex: -s --foo "bar"
SALESFORCE_CODE_ANALYZER_APEX_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_CODE_ANALYZER_APEX_PRE_COMMANDS List of bash commands to run before the linter None
SALESFORCE_CODE_ANALYZER_APEX_POST_COMMANDS List of bash commands to run after the linter None
SALESFORCE_CODE_ANALYZER_APEX_UNSECURED_ENV_VARIABLES List of env variables explicitly not filtered before calling SALESFORCE_CODE_ANALYZER_APEX and its pre/post commands None
SALESFORCE_CODE_ANALYZER_APEX_CONFIG_FILE code-analyzer-apex configuration file name
Use LINTER_DEFAULT to let the linter find it
code-analyzer.yml
SALESFORCE_CODE_ANALYZER_APEX_RULES_PATH Path where to find linter configuration file Workspace folder, then MegaLinter default rules
SALESFORCE_CODE_ANALYZER_APEX_DISABLE_ERRORS Run linter but consider errors as warnings false
SALESFORCE_CODE_ANALYZER_APEX_DISABLE_ERRORS_IF_LESS_THAN Maximum number of errors allowed 0
SALESFORCE_CODE_ANALYZER_APEX_CLI_EXECUTABLE Override CLI executable ['sf']
SALESFORCE_DIRECTORY Directory containing SALESFORCE files (use any to always activate the linter) force-app

IDE Integration

Use code-analyzer-apex in your favorite IDE to catch errors before MegaLinter !

IDE Extension Name Install
Eclipse pmd-eclipse-plugin Visit Web Site
Emacs pmd-emacs Visit Web Site
IDEA PMD IntelliJ
Visual Studio Code Salesforce Extension Pack Install in VSCode

MegaLinter Flavors

This linter is available in the following flavors

Flavor Description Embedded linters Info
all Default MegaLinter Flavor 130 Docker Image Size (tag) Docker Pulls
salesforce Optimized for Salesforce based projects 56 Docker Image Size (tag) Docker Pulls

Behind the scenes

How are identified applicable files

  • Activated only if sub-directory force-app is found. (directory name can be overridden with SALESFORCE_DIRECTORY)
  • If this linter is active, all files will always be linted

How the linting is performed

code-analyzer-apex 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 code-analyzer-apex configuration or ignore file (if existing)
  • VALIDATE_ALL_CODEBASE: false doesn't make code-analyzer-apex analyze only updated files

Example calls

sf code-analyzer run --rule-selector pmd:Recommended --workspace . --output-file results.csv

Help content

Analyze your code with a selection of rules to ensure good coding practices.

USAGE
  $ sf code-analyzer run [--flags-dir <value>] [-w <value>...] [-t <value>...]
    [-r <value>...] [-s <value>] [-v detail|table] [-f <value>...] [-c <value>]

FLAGS
  -c, --config-file=<value>         Path to the configuration file used to
                                    customize the engines and rules.
  -f, --output-file=<value>...      Name of the file where the analysis results
                                    are written. The file format depends on the
                                    extension you specify, such as .csv, .html,
                                    .xml, and so on.
  -r, --rule-selector=<value>...    [default: Recommended] Selection of rules,
                                    based on engine name, severity level, rule
                                    name, tag, or a combination of criteria
                                    separated by colons.
  -s, --severity-threshold=<value>  Severity level of a found violation that
                                    must be met or exceeded to cause this
                                    command to fail with a non-zero exit code.
  -t, --target=<value>...           Subset of files within your workspace to be
                                    targeted for analysis.
  -v, --view=<option>               Format to display the command results in the
                                    terminal.
                                    <options: detail|table>
  -w, --workspace=<value>...        [default: .] Set of files that make up your
                                    workspace.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.


Streaming logs in real time to:
    /tmp/sfca-2025_11_24_22_16_02_941.log

Selecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 0%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 14%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 28%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 30%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 31%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 32%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 33%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 34%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 35%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 36%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 37%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 38%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 39%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 40%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 41%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 42%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 53%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 57%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 62%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 72%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 74%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 75%; Elapsed time: 0sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 75%; Elapsed time: 1sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 84%; Elapsed time: 1sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 85%; Elapsed time: 1sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 87%; Elapsed time: 1sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 96%; Elapsed time: 1sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 98%; Elapsed time: 1sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 99%; Elapsed time: 1sSelecting rules... Eligible engines: retire-js, regex, eslint, flow, pmd, cpd, sfge; Completion: 100%; Elapsed time: 1sSelecting rules... done.

  #     Name                                                              Engine      Severity       Tag
 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  1     LibraryWithKnownCriticalSeverityVulnerability                     retire-js   1 (Critical)   Recommended, Security, JavaScript
  2     LibraryWithKnownHighSeverityVulnerability                         retire-js   2 (High)       Recommended, Security, JavaScript
  3     LibraryWithKnownMediumSeverityVulnerability                       retire-js   3 (Moderate)   Recommended, Security, JavaScript
  4     LibraryWithKnownLowSeverityVulnerability                          retire-js   4 (Low)        Recommended, Security, JavaScript
  5     NoTrailingWhitespace                                              regex       5 (Info)       Recommended, CodeStyle, Apex
  6     AvoidTermsWithImplicitBias                                        regex       5 (Info)       Recommended, BestPractices
  7     AvoidOldSalesforceApiVersions                                     regex       2 (High)       Recommended, Security, XML
  8     AvoidGetHeapSizeInLoop                                            regex       2 (High)       Recommended, Performance, Apex
  9     MinVersionForAbstractVirtualClassesWithPrivateMethod              regex       2 (High)       Recommended, BestPractices, Apex
  10    @lwc/lwc-platform/no-aura                                         eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  11    @lwc/lwc-platform/no-aura-libs                                    eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  12    @lwc/lwc-platform/no-community-import                             eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  13    @lwc/lwc-platform/no-create-context-provider                      eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  14    @lwc/lwc-platform/no-deprecated-module-import                     eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  15    @lwc/lwc-platform/no-dynamic-import-identifier                    eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  16    @lwc/lwc-platform/no-inline-disable                               eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  17    @lwc/lwc-platform/no-interop                                      eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  18    @lwc/lwc-platform/no-interop-create                               eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  19    @lwc/lwc-platform/no-interop-dispatch                             eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  20    @lwc/lwc-platform/no-interop-execute                              eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  21    @lwc/lwc-platform/no-interop-execute-controller-with-client-def   eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  22    @lwc/lwc-platform/no-interop-execute-privileged                   eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  23    @lwc/lwc-platform/no-interop-execute-raw-response                 eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  24    @lwc/lwc-platform/no-interop-execute-with-callback                eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  25    @lwc/lwc-platform/no-interop-get-event                            eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  26    @lwc/lwc-platform/no-interop-get-module                           eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  27    @lwc/lwc-platform/no-interop-is-external-definition               eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  28    @lwc/lwc-platform/no-interop-load-definitions                     eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  29    @lwc/lwc-platform/no-interop-module-instrumentation               eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  30    @lwc/lwc-platform/no-interop-module-storage                       eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  31    @lwc/lwc-platform/no-interop-register                             eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  32    @lwc/lwc-platform/no-interop-render                               eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  33    @lwc/lwc-platform/no-interop-sanitize                             eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  34    @lwc/lwc-platform/no-lds-aura-controller-method                   eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  35    @lwc/lwc-platform/no-process-env                                  eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  36    @lwc/lwc-platform/no-restricted-namespaces                        eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  37    @lwc/lwc-platform/no-site-import                                  eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  38    @lwc/lwc-platform/no-wire-service                                 eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  39    @lwc/lwc-platform/valid-dynamic-import-hint                       eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  40    @lwc/lwc/no-api-reassignments                                     eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  41    @lwc/lwc/no-async-operation                                       eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  42    @lwc/lwc/no-attributes-during-construction                        eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  43    @lwc/lwc/no-deprecated                                            eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  44    @lwc/lwc/no-disallowed-lwc-imports                                eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  45    @lwc/lwc/no-document-query                                        eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  46    @lwc/lwc/no-inner-html                                            eslint      2 (High)       Recommended, LWC, Security, JavaScript
  47    @lwc/lwc/no-leading-uppercase-api-name                            eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  48    @lwc/lwc/no-template-children                                     eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  49    @lwc/lwc/no-unexpected-wire-adapter-usages                        eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  50    @lwc/lwc/no-unknown-wire-adapters                                 eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  51    @lwc/lwc/prefer-custom-event                                      eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  52    @lwc/lwc/valid-api                                                eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  53    @lwc/lwc/valid-graphql-wire-adapter-callback-parameters           eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  54    @lwc/lwc/valid-track                                              eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  55    @lwc/lwc/valid-wire                                               eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  56    @salesforce-ux/slds/enforce-bem-usage                             eslint      4 (Low)        Recommended, SLDS, BestPractices, HTML
  57    @salesforce-ux/slds/enforce-component-hook-naming-convention      eslint      4 (Low)        Recommended, SLDS, CodeStyle, CSS
  58    @salesforce-ux/slds/enforce-sds-to-slds-hooks                     eslint      4 (Low)        Recommended, SLDS, Design, CSS
  59    @salesforce-ux/slds/lwc-token-to-slds-hook                        eslint      3 (Moderate)   Recommended, SLDS, ErrorProne, CSS
  60    @salesforce-ux/slds/modal-close-button-issue                      eslint      3 (Moderate)   Recommended, SLDS, ErrorProne, HTML
  61    @salesforce-ux/slds/no-deprecated-classes-slds2                   eslint      3 (Moderate)   Recommended, SLDS, ErrorProne, HTML
  62    @salesforce-ux/slds/no-deprecated-slds-classes                    eslint      3 (Moderate)   Recommended, SLDS, ErrorProne, CSS
  63    @salesforce-ux/slds/no-hardcoded-values-slds2                     eslint      4 (Low)        Recommended, SLDS, Design, CSS
  64    @salesforce-ux/slds/no-slds-class-overrides                       eslint      4 (Low)        Recommended, SLDS, BestPractices, CSS
  65    @salesforce-ux/slds/no-slds-namespace-for-custom-hooks            eslint      4 (Low)        Recommended, SLDS, BestPractices, CSS
  66    @salesforce-ux/slds/no-slds-private-var                           eslint      3 (Moderate)   Recommended, SLDS, ErrorProne, CSS
  67    @salesforce-ux/slds/no-slds-var-without-fallback                  eslint      3 (Moderate)   Recommended, SLDS, ErrorProne, CSS
  68    @salesforce-ux/slds/no-sldshook-fallback-for-lwctoken             eslint      4 (Low)        Recommended, SLDS, BestPractices, CSS
  69    @salesforce-ux/slds/no-unsupported-hooks-slds2                    eslint      3 (Moderate)   Recommended, SLDS, ErrorProne, CSS
  70    @salesforce-ux/slds/reduce-annotations                            eslint      4 (Low)        Recommended, SLDS, BestPractices, CSS
  71    @salesforce/lightning/valid-apex-method-invocation                eslint      3 (Moderate)   Recommended, LWC, ErrorProne, JavaScript
  72    @typescript-eslint/ban-ts-comment                                 eslint      2 (High)       Recommended, ErrorProne, TypeScript
  73    @typescript-eslint/no-array-constructor                           eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  74    @typescript-eslint/no-duplicate-enum-values                       eslint      2 (High)       Recommended, ErrorProne, TypeScript
  75    @typescript-eslint/no-empty-object-type                           eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  76    @typescript-eslint/no-explicit-any                                eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  77    @typescript-eslint/no-extra-non-null-assertion                    eslint      2 (High)       Recommended, ErrorProne, TypeScript
  78    @typescript-eslint/no-misused-new                                 eslint      2 (High)       Recommended, ErrorProne, TypeScript
  79    @typescript-eslint/no-namespace                                   eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  80    @typescript-eslint/no-non-null-asserted-optional-chain            eslint      2 (High)       Recommended, ErrorProne, TypeScript
  81    @typescript-eslint/no-require-imports                             eslint      2 (High)       Recommended, ErrorProne, TypeScript
  82    @typescript-eslint/no-this-alias                                  eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  83    @typescript-eslint/no-unnecessary-type-constraint                 eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  84    @typescript-eslint/no-unsafe-declaration-merging                  eslint      2 (High)       Recommended, ErrorProne, TypeScript
  85    @typescript-eslint/no-unsafe-function-type                        eslint      2 (High)       Recommended, ErrorProne, TypeScript
  86    @typescript-eslint/no-unused-expressions                          eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  87    @typescript-eslint/no-unused-vars                                 eslint      2 (High)       Recommended, ErrorProne, TypeScript
  88    @typescript-eslint/no-wrapper-object-types                        eslint      2 (High)       Recommended, ErrorProne, TypeScript
  89    @typescript-eslint/prefer-as-const                                eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  90    @typescript-eslint/prefer-namespace-keyword                       eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  91    @typescript-eslint/triple-slash-reference                         eslint      3 (Moderate)   Recommended, BestPractices, TypeScript
  92    constructor-super                                                 eslint      2 (High)       Recommended, ErrorProne, JavaScript
  93    for-direction                                                     eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  94    getter-return                                                     eslint      2 (High)       Recommended, ErrorProne, JavaScript
  95    import/default                                                    eslint      2 (High)       Recommended, LWC, ErrorProne, JavaScript
  96    import/export                                                     eslint      2 (High)       Recommended, LWC, ErrorProne, JavaScript
  97    import/named                                                      eslint      2 (High)       Recommended, LWC, ErrorProne, JavaScript
  98    import/namespace                                                  eslint      2 (High)       Recommended, LWC, ErrorProne, JavaScript
  99    jest/expect-expect                                                eslint      5 (Info)       Recommended, LWC, BestPractices, JavaScript
  100   jest/no-alias-methods                                             eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  101   jest/no-commented-out-tests                                       eslint      5 (Info)       Recommended, LWC, BestPractices, JavaScript
  102   jest/no-conditional-expect                                        eslint      2 (High)       Recommended, LWC, ErrorProne, JavaScript
  103   jest/no-disabled-tests                                            eslint      5 (Info)       Recommended, LWC, BestPractices, JavaScript
  104   jest/no-done-callback                                             eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  105   jest/no-export                                                    eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  106   jest/no-focused-tests                                             eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  107   jest/no-identical-title                                           eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  108   jest/no-interpolation-in-snapshots                                eslint      2 (High)       Recommended, LWC, ErrorProne, JavaScript
  109   jest/no-jasmine-globals                                           eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  110   jest/no-mocks-import                                              eslint      2 (High)       Recommended, LWC, ErrorProne, JavaScript
  111   jest/no-standalone-expect                                         eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  112   jest/no-test-prefixes                                             eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  113   jest/valid-describe-callback                                      eslint      2 (High)       Recommended, LWC, ErrorProne, JavaScript
  114   jest/valid-expect                                                 eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  115   jest/valid-expect-in-promise                                      eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  116   jest/valid-title                                                  eslint      3 (Moderate)   Recommended, LWC, BestPractices, JavaScript
  117   no-async-promise-executor                                         eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  118   no-case-declarations                                              eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  119   no-class-assign                                                   eslint      2 (High)       Recommended, ErrorProne, JavaScript
  120   no-compare-neg-zero                                               eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  121   no-cond-assign                                                    eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  122   no-const-assign                                                   eslint      2 (High)       Recommended, ErrorProne, JavaScript
  123   no-constant-condition                                             eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  124   no-control-regex                                                  eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  125   no-debugger                                                       eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  126   no-delete-var                                                     eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  127   no-dupe-args                                                      eslint      2 (High)       Recommended, ErrorProne, JavaScript
  128   no-dupe-class-members                                             eslint      2 (High)       Recommended, ErrorProne, JavaScript
  129   no-dupe-else-if                                                   eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  130   no-dupe-keys                                                      eslint      2 (High)       Recommended, ErrorProne, JavaScript
  131   no-duplicate-case                                                 eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  132   no-empty                                                          eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  133   no-empty-character-class                                          eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  134   no-empty-pattern                                                  eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  135   no-ex-assign                                                      eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  136   no-extra-boolean-cast                                             eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  137   no-fallthrough                                                    eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  138   no-func-assign                                                    eslint      2 (High)       Recommended, ErrorProne, JavaScript
  139   no-global-assign                                                  eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  140   no-import-assign                                                  eslint      2 (High)       Recommended, ErrorProne, JavaScript
  141   no-inner-declarations                                             eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  142   no-invalid-regexp                                                 eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  143   no-irregular-whitespace                                           eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  144   no-loss-of-precision                                              eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  145   no-misleading-character-class                                     eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  146   no-nonoctal-decimal-escape                                        eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  147   no-obj-calls                                                      eslint      2 (High)       Recommended, ErrorProne, JavaScript
  148   no-octal                                                          eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  149   no-prototype-builtins                                             eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  150   no-redeclare                                                      eslint      3 (Moderate)   Recommended, BestPractices, JavaScript
  151   no-regex-spaces                                                   eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  152   no-self-assign                                                    eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  153   no-setter-return                                                  eslint      2 (High)       Recommended, ErrorProne, JavaScript
  154   no-shadow-restricted-names                                        eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  155   no-sparse-arrays                                                  eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  156   no-this-before-super                                              eslint      2 (High)       Recommended, ErrorProne, JavaScript
  157   no-undef                                                          eslint      2 (High)       Recommended, ErrorProne, JavaScript
  158   no-unexpected-multiline                                           eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  159   no-unreachable                                                    eslint      2 (High)       Recommended, ErrorProne, JavaScript
  160   no-unsafe-finally                                                 eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  161   no-unsafe-negation                                                eslint      2 (High)       Recommended, ErrorProne, JavaScript
  162   no-unsafe-optional-chaining                                       eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  163   no-unused-labels                                                  eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  164   no-unused-vars                                                    eslint      2 (High)       Recommended, ErrorProne, JavaScript
  165   no-useless-backreference                                          eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  166   no-useless-catch                                                  eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  167   no-useless-escape                                                 eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  168   no-var                                                            eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  169   no-with                                                           eslint      3 (Moderate)   Recommended, BestPractices, JavaScript
  170   prefer-const                                                      eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  171   prefer-rest-params                                                eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  172   prefer-spread                                                     eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  173   require-yield                                                     eslint      3 (Moderate)   Recommended, BestPractices, JavaScript, TypeScript
  174   use-isnan                                                         eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  175   valid-typeof                                                      eslint      2 (High)       Recommended, ErrorProne, JavaScript, TypeScript
  176   PreventPassingUserDataIntoElementWithoutSharing                   flow        2 (High)       Recommended, Security, XML
  177   PreventPassingUserDataIntoElementWithSharing                      flow        4 (Low)        Recommended, Security, XML
  178   AnnotationsNamingConventions                                      pmd         4 (Low)        Recommended, CodeStyle, Apex
  179   ApexBadCrypto                                                     pmd         2 (High)       Recommended, Security, Apex
  180   ApexCRUDViolation                                                 pmd         2 (High)       Recommended, Security, Apex
  181   ApexCSRF                                                          pmd         1 (Critical)   Recommended, Security, Apex
  182   ApexDangerousMethods                                              pmd         3 (Moderate)   Recommended, Security, Apex
  183   ApexDoc                                                           pmd         4 (Low)        Recommended, Documentation, Apex
  184   ApexInsecureEndpoint                                              pmd         2 (High)       Recommended, Security, Apex
  185   ApexOpenRedirect                                                  pmd         2 (High)       Recommended, Security, Apex
  186   ApexSharingViolations                                             pmd         3 (Moderate)   Recommended, Security, Apex
  187   ApexSOQLInjection                                                 pmd         2 (High)       Recommended, Security, Apex
  188   ApexSuggestUsingNamedCred                                         pmd         2 (High)       Recommended, Security, Apex
  189   ApexUnitTestClassShouldHaveAsserts                                pmd         3 (Moderate)   Recommended, BestPractices, Apex
  190   ApexUnitTestClassShouldHaveRunAs                                  pmd         4 (Low)        Recommended, BestPractices, Apex
  191   ApexUnitTestMethodShouldHaveIsTestAnnotation                      pmd         2 (High)       Recommended, BestPractices, Apex
  192   ApexUnitTestShouldNotUseSeeAllDataTrue                            pmd         2 (High)       Recommended, BestPractices, Apex
  193   ApexXSSFromEscapeFalse                                            pmd         2 (High)       Recommended, Security, Apex
  194   ApexXSSFromURLParam                                               pmd         2 (High)       Recommended, Security, Apex
  195   AvoidBooleanMethodParameters                                      pmd         3 (Moderate)   Recommended, Design, Apex
  196   AvoidDebugStatements                                              pmd         4 (Low)        Recommended, Performance, Apex
  197   AvoidDeeplyNestedIfStmts                                          pmd         3 (Moderate)   Recommended, Design, Apex
  198   AvoidDirectAccessTriggerMap                                       pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  199   AvoidGlobalModifier                                               pmd         3 (Moderate)   Recommended, BestPractices, Apex
  200   AvoidHardcodingId                                                 pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  201   AvoidLogicInTrigger                                               pmd         3 (Moderate)   Recommended, BestPractices, Apex
  202   AvoidNonExistentAnnotations                                       pmd         4 (Low)        Recommended, ErrorProne, Apex
  203   AvoidNonRestrictiveQueries                                        pmd         4 (Low)        Recommended, Performance, Apex
  204   AvoidStatefulDatabaseResult                                       pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  205   ClassNamingConventions                                            pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  206   CognitiveComplexity                                               pmd         3 (Moderate)   Recommended, Design, Apex
  207   CyclomaticComplexity                                              pmd         3 (Moderate)   Recommended, Design, Apex
  208   DebugsShouldUseLoggingLevel                                       pmd         4 (Low)        Recommended, BestPractices, Apex
  209   EagerlyLoadedDescribeSObjectResult                                pmd         2 (High)       Recommended, Performance, Apex
  210   EmptyCatchBlock                                                   pmd         2 (High)       Recommended, ErrorProne, Apex
  211   EmptyIfStmt                                                       pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  212   EmptyStatementBlock                                               pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  213   EmptyTryOrFinallyBlock                                            pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  214   EmptyWhileStmt                                                    pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  215   ExcessiveClassLength                                              pmd         3 (Moderate)   Recommended, Design, Apex
  216   ExcessiveParameterList                                            pmd         3 (Moderate)   Recommended, Design, Apex
  217   ExcessivePublicCount                                              pmd         3 (Moderate)   Recommended, Design, Apex
  218   FieldDeclarationsShouldBeAtStart                                  pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  219   FieldNamingConventions                                            pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  220   ForLoopsMustUseBraces                                             pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  221   FormalParameterNamingConventions                                  pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  222   IfElseStmtsMustUseBraces                                          pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  223   IfStmtsMustUseBraces                                              pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  224   InaccessibleAuraEnabledGetter                                     pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  225   LocalVariableNamingConventions                                    pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  226   MethodNamingConventions                                           pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  227   MethodWithSameNameAsEnclosingClass                                pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  228   NcssConstructorCount                                              pmd         4 (Low)        Recommended, Design, Apex
  229   NcssMethodCount                                                   pmd         4 (Low)        Recommended, Design, Apex
  230   OneDeclarationPerLine                                             pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  231   OperationWithHighCostInLoop                                       pmd         3 (Moderate)   Recommended, Performance, Apex
  232   OperationWithLimitsInLoop                                         pmd         3 (Moderate)   Recommended, Performance, Apex
  233   OverrideBothEqualsAndHashcode                                     pmd         2 (High)       Recommended, ErrorProne, Apex
  234   PropertyNamingConventions                                         pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  235   QueueableWithoutFinalizer                                         pmd         4 (Low)        Recommended, BestPractices, Apex
  236   TestMethodsMustBeInTestClasses                                    pmd         3 (Moderate)   Recommended, ErrorProne, Apex
  237   TooManyFields                                                     pmd         3 (Moderate)   Recommended, Design, Apex
  238   TypeShadowsBuiltInNamespace                                       pmd         2 (High)       Recommended, ErrorProne, Apex
  239   UnusedLocalVariable                                               pmd         3 (Moderate)   Recommended, BestPractices, Apex
  240   UnusedMethod                                                      pmd         3 (Moderate)   Recommended, Design, Apex
  241   VfCsrf                                                            pmd         2 (High)       Recommended, Security, Visualforce
  242   VfHtmlStyleTagXss                                                 pmd         2 (High)       Recommended, Security, Visualforce
  243   VfUnescapeEl                                                      pmd         2 (High)       Recommended, Security, Visualforce
  244   WhileLoopsMustUseBraces                                           pmd         3 (Moderate)   Recommended, CodeStyle, Apex
  245   DetectCopyPasteForApex                                            cpd         5 (Info)       Recommended, Design, Apex
  246   DetectCopyPasteForJavascript                                      cpd         5 (Info)       Recommended, Design, Javascript
  247   DetectCopyPasteForTypescript                                      cpd         5 (Info)       Recommended, Design, Typescript
  248   DetectCopyPasteForVisualforce                                     cpd         5 (Info)       Recommended, Design, Visualforce



=== Summary

Found 248 rule(s) from 6 engine(s):
    4 retire-js rule(s) found.
    5 regex rule(s) found.
    166 eslint rule(s) found.
    2 flow rule(s) found.
    67 pmd rule(s) found.
    4 cpd rule(s) found.

Additional log information written to:
    /tmp/sfca-2025_11_24_22_16_02_941.log

Installation on mega-linter Docker image

  • Dockerfile commands :
# Parent descriptor install
# renovate: datasource=npm depName=@salesforce/cli
ARG NPM_SALESFORCE_CLI_VERSION=2.113.6
# renovate: datasource=npm depName=@salesforce/plugin-packaging
ARG NPM_SALESFORCE_PLUGIN_PACKAGING_VERSION=2.23.3
# renovate: datasource=npm depName=sfdx-hardis
ARG SFDX_HARDIS_VERSION=6.12.7
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk
ENV PATH="$JAVA_HOME/bin:${PATH}"
RUN sf plugins install @salesforce/plugin-packaging@${NPM_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=@salesforce/plugin-code-analyzer
ARG SALESFORCE_CODE_ANALYZER_VERSION=5.6.1
RUN sf plugins install code-analyzer@${SALESFORCE_CODE_ANALYZER_VERSION} \
    && (npm cache clean --force || true) \
    && rm -rf /root/.npm/_cacache