Skip to content

puppet-lint

puppet-lint documentation

puppet-lint - GitHub

Configuration in Mega-Linter

Variable Description Default value
PUPPET_PUPPET_LINT_ARGUMENTS User custom arguments to add in linter CLI call
Ex: -s --foo "bar"
PUPPET_PUPPET_LINT_FILTER_REGEX_INCLUDE Custom regex including filter
Ex: (src\|lib)
Include every file
PUPPET_PUPPET_LINT_FILTER_REGEX_EXCLUDE Custom regex excluding filter
Ex: (test\|examples)
Exclude no file
PUPPET_PUPPET_LINT_CLI_LINT_MODE Override default CLI lint mode
- 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
{linter.cli_lint_mode}
PUPPET_PUPPET_LINT_FILE_EXTENSIONS Allowed file extensions. "*" matches any extension, "" matches empty extension. Empty list excludes all files
Ex: [".py", ""]
[".pp"]
PUPPET_PUPPET_LINT_FILE_NAMES_REGEX File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files
Ex: ["Dockerfile(-.+)?", "Jenkinsfile"]
Include every file
PUPPET_PUPPET_LINT_PRE_COMMANDS List of bash commands to run before the linter None
PUPPET_PUPPET_LINT_POST_COMMANDS List of bash commands to run after the linter None
PUPPET_PUPPET_LINT_CONFIG_FILE puppet-lint configuration file name
Use LINTER_DEFAULT to let the linter find it
.puppet-lint.rc
PUPPET_PUPPET_LINT_RULES_PATH Path where to find linter configuration file Workspace folder, then Mega-Linter default rules
PUPPET_PUPPET_LINT_DISABLE_ERRORS Run linter but consider errors as warnings false
PUPPET_PUPPET_LINT_DISABLE_ERRORS_IF_LESS_THAN Maximum number of errors allowed 0

IDE Integration

Use puppet-lint in your favorite IDE to catch errors before Mega-Linter !

IDE Extension Name Install
Visual Studio Code Puppet VsCode Extension Visit Web Site

Mega-Linter Flavours

This linter is available in the following flavours

Flavor Description Embedded linters Info
all Default Mega-Linter Flavor 93 Docker Image Size (tag) Docker Pulls

Behind the scenes

How are identified applicable files

  • File extensions: .pp

How the linting is performed

  • puppet-lint is called one time by identified file

Example calls

puppet-lint --fail-on-warnings --no-autoloader_layout-check myfile.pp
puppet-lint --fail-on-warnings --no-autoloader_layout-check --fix myfile.pp

Help content

    puppet-lint

    Basic Command Line Usage:
      puppet-lint [OPTIONS] PATH

            PATH                         The path to the Puppet manifest.

    Option:
        --version                    Display the current version.
        --no-config                  Do not load default puppet-lint option files.
    -c, --config FILE                Load puppet-lint options from file.
        --with-context               Show where in the manifest the problem is.
        --with-filename              Display the filename before the warning.
        --fail-on-warnings           Return a non-zero exit status for warnings
        --error-level LEVEL          The level of error to return (warning, error or all).
        --show-ignored               Show problems that have been ignored by control comments
        --relative                   Compare module layout relative to the module root
    -l, --load FILE                  Load a file containing custom puppet-lint checks.
        --load-from-puppet MODULEPATH
                                     Load plugins from the given Puppet module path.
    -f, --fix                        Attempt to automatically fix errors
        --log-format FORMAT          Change the log format.
                                     Overrides --with-filename.
                                     The following placeholders can be used:
                                     %{filename} - Filename without path.
                                     %{path}     - Path as provided to puppet-lint.
                                     %{fullpath} - Expanded path to the file.
                                     %{line}     - Line number.
                                     %{column}   - Column number.
                                     %{kind}     - The kind of message (warning, error).
                                     %{KIND}     - Uppercase version of %{kind}.
                                     %{check}    - The name of the check.
                                     %{message}  - The message.
        --json                       Log output as JSON
        --list-checks                List available check names.

    Checks:
        --only-checks CHECKS         A comma separated list of checks that should be run
        --ignore-paths PATHS         A comma separated list of patterns to ignore
        --no-unquoted_file_mode-check
                                     Skip the unquoted_file_mode check.
        --no-unquoted_resource_title-check
                                     Skip the unquoted_resource_title check.
        --no-file_mode-check         Skip the file_mode check.
        --no-duplicate_params-check  Skip the duplicate_params check.
        --no-ensure_not_symlink_target-check
                                     Skip the ensure_not_symlink_target check.
        --no-ensure_first_param-check
                                     Skip the ensure_first_param check.
        --no-variable_is_lowercase-check
                                     Skip the variable_is_lowercase check.
        --no-variable_contains_dash-check
                                     Skip the variable_contains_dash check.
        --no-selector_inside_resource-check
                                     Skip the selector_inside_resource check.
        --no-case_without_default-check
                                     Skip the case_without_default check.
        --no-documentation-check     Skip the documentation check.
        --no-arrow_on_right_operand_line-check
                                     Skip the arrow_on_right_operand_line check.
        --no-variable_scope-check    Skip the variable_scope check.
        --no-names_containing_uppercase-check
                                     Skip the names_containing_uppercase check.
        --no-names_containing_dash-check
                                     Skip the names_containing_dash check.
        --no-right_to_left_relationship-check
                                     Skip the right_to_left_relationship check.
        --no-code_on_top_scope-check Skip the code_on_top_scope check.
        --code_on_top_scope-check    Enable the code_on_top_scope check.
        --no-parameter_order-check   Skip the parameter_order check.
        --no-inherits_across_namespaces-check
                                     Skip the inherits_across_namespaces check.
        --no-nested_classes_or_defines-check
                                     Skip the nested_classes_or_defines check.
        --no-autoloader_layout-check Skip the autoloader_layout check.
        --no-class_inherits_from_params_class-check
                                     Skip the class_inherits_from_params_class check.
        --class_inherits_from_params_class-check
                                     Enable the class_inherits_from_params_class check.
        --no-variables_not_enclosed-check
                                     Skip the variables_not_enclosed check.
        --no-only_variable_string-check
                                     Skip the only_variable_string check.
        --no-single_quote_string_with_variables-check
                                     Skip the single_quote_string_with_variables check.
        --no-double_quoted_strings-check
                                     Skip the double_quoted_strings check.
        --no-quoted_booleans-check   Skip the quoted_booleans check.
        --quoted_booleans-check      Enable the quoted_booleans check.
        --no-puppet_url_without_modules-check
                                     Skip the puppet_url_without_modules check.
        --no-unquoted_node_name-check
                                     Skip the unquoted_node_name check.
        --no-slash_comments-check    Skip the slash_comments check.
        --no-star_comments-check     Skip the star_comments check.
        --no-hard_tabs-check         Skip the hard_tabs check.
        --no-140chars-check          Skip the 140chars check.
        --no-2sp_soft_tabs-check     Skip the 2sp_soft_tabs check.
        --no-trailing_whitespace-check
                                     Skip the trailing_whitespace check.
        --no-80chars-check           Skip the 80chars check.
        --80chars-check              Enable the 80chars check.
        --no-arrow_alignment-check   Skip the arrow_alignment check.

Installation on mega-linter Docker image

Example success log

Results of puppet-lint linter (version 2.4.2)
See documentation on https://nvuillam.github.io/mega-linter/descriptors/puppet_puppet_lint/
-----------------------------------------------

[SUCCESS] .automation/test/puppet/puppet_good_1.pp


Example error log

Results of puppet-lint linter (version 2.4.2)
See documentation on https://nvuillam.github.io/mega-linter/descriptors/puppet_puppet_lint/
-----------------------------------------------

[ERROR] .automation/test/puppet/puppet_bad_1.pp
    WARNING: class not documented on line 1
    WARNING: line has more than 140 characters on line 7
    WARNING: double quoted string containing no variables on line 4
    WARNING: double quoted string containing no variables on line 5