Diagnose MegaLinter configuration. Read the .mega-linter.yml (or path provided in $ARGUMENTS) and check for:
- Configuration hierarchy: Env vars override
.mega-linter.yml, which overrides descriptor defaults. Both.mega-linter.ymland.megalinter.ymlare recognized. - ENABLE/DISABLE conflicts:
ENABLE_LINTERS/DISABLE_LINTERStake precedence overENABLE/DISABLE(descriptor-level). You can't enable a linter if its descriptor is disabled. - Filter patterns: Validate
FILTER_REGEX_INCLUDE/FILTER_REGEX_EXCLUDEregex syntax - Linter variable naming: Must be UPPERCASE with
_separator matching the generated nameDESCRIPTOR_LINTERNAME(e.g.,PYTHON_PYLINT_ARGUMENTS, notpylint_arguments) - Flavor compatibility: If using a flavor image, verify the enabled linters exist in that flavor by checking
flavors/<flavor>/flavor.json - EXTENDS: If using remote config inheritance via HTTPS URLs, verify they're accessible
- APPLY_FIXES: Check the fix mode is compatible with the CI system — auto-commit requires write access to the branch
- Pre/Post commands: Validate
PRE_COMMANDSandPOST_COMMANDSsyntax (each needscommandandcwdfields,cwdisrootorworkspace) - Common mistakes:
- Using lowercase linter names (must be UPPERCASE)
- Missing
_separator in linter-specific vars - Setting
VALIDATE_ALL_CODEBASE=truein CI (slow — usually want diff-only) - Forgetting
{LINTER}_FILTER_REGEX_INCLUDE/EXCLUDEoverrides global filters
Reference megalinter/config.py for the full resolution logic.