Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

mega-linter-runner

oxsecurity24kMIT8.4.0

Local runner for MegaLinter

mega-linter, code, quality, runner, aggregator, javascript, typescript, python, c, java, csharp, yaml, json, rst, markdown, dotnet, lua, r, c++, dockerfile, bash, dart, go, groovy, react, perl, php, powershell, kotlin, scala, linter, lint, technical, debt, raku, ruby, rust, sql, basic, puppet, cloudformation, css, env, dotenv, graphql, latex, protocol, buffer, kubernetes, gherkin, cucumber, terraform, snakemake, ansible, jsonschema, swift

readme

MegaLinter, by OX Security

GitHub release Docker Pulls Downloads/week GitHub stars MegaLinter codecov

Generated by github-dependents-info Secured with Trivy GitHub contributors GitHub Sponsors PRs Welcome Tweet

MegaLinter is an Open-Source tool for CI/CD workflows that analyzes the consistency of your code, IAC, configuration, and scripts in your repository sources, to ensure all your projects sources are clean and formatted whatever IDE/toolbox is used by their developers, powered by OX Security.

Supporting 63 languages, 23 formats, 20 tooling formats and ready to use out of the box, as a GitHub action or any CI system, highly configurable and free for all uses.

MegaLinter has native integrations with many of the major CI/CD tools of the market.

GitHub Gitlab Azure Bitbucket Jenkins Drone Concourse Docker SARIF Grafana

MegaLinter Presentation GIF

Upgrade to MegaLinter v8 :)

Upgrade to v8 Video

Before going below, see Online Documentation Web Site which has a much easier user navigation than this README

Table of Contents

Why MegaLinter

Projects need to contain clean code, in order to avoid technical debt, that makes evolutive maintenance harder and time consuming.

By using code formatters and code linters, you ensure that your code base is easier to read and respects best practices, from the kick-off to each step of the project lifecycle

Not all developers have the good habit to use linters in their IDEs, making code reviews harder and longer to process

By using MegaLinter, you'll enjoy the following benefits for you and your team:

  • At each pull request it will automatically analyze all updated code in all languages
  • Reading error logs, developers learn best practices of the language they're using
  • MegaLinter documentation provides the list of IDE plugins integrating each linter, so developers know which linter and plugins to install
  • MegaLinter is ready out of the box after a quick setup
  • Formatting and fixes can be automatically applied on the git branch or provided in reports
  • This tool is 100% open-source and free for all uses (personal, professional, public and private repositories)
  • MegaLinter can run on any CI tool and be run locally: no need to authorize an external application, and your code base never leaves your tooling ecosystem

Quick Start

  • Run npx mega-linter-runner --install to generate configuration files (you need node.js to be installed)
  • Commit, push, and create a pull request
  • Watch !

Runner Install

Notes:

  • This repo is a hard-fork of GitHub Super-Linter, rewritten in python to add lots of additional features
  • If you are a Super-Linter user, you can transparently switch to MegaLinter and keep the same configuration (just replace super-linter/super-linter@v3 by oxsecurity/megalinter@v8 in your GitHub Action YML file, like on this PR)
  • If you want to use MegaLinter extra features (recommended), please take 5 minutes to use MegaLinter assisted installation
  • For a hand-holdy example of getting started with mega-linter check out this blog post by Alec Johnson

Supported Linters

All linters are integrated in the MegaLinter docker image, which is frequently upgraded with their latest versions

Languages

Language Linter Additional
BASH bash-exec
BASHEXEC_
BASH shellcheck
BASHSHELLCHECK_
GitHub stars sarif
BASH shfmt
BASHSHFMT_
GitHub stars formatter
C cpplint
C_CPPLINT
GitHub stars
C clang-format
C_CLANGFORMAT_
GitHub stars autofix
CLOJURE clj-kondo
CLOJURECLJ_KONDO_
GitHub stars
CLOJURE cljstyle
CLOJURECLJSTYLE_
GitHub stars autofix
COFFEE coffeelint
COFFEECOFFEELINT_
GitHub stars
C++ (CPP) cpplint
CPPCPPLINT_
GitHub stars
C++ (CPP) clang-format
CPPCLANG_FORMAT_
GitHub stars autofix
C# (CSHARP) dotnet-format
CSHARPDOTNET_FORMAT_
GitHub stars formatter
C# (CSHARP) csharpier
CSHARPCSHARPIER_
GitHub stars formatter
C# (CSHARP) roslynator
CSHARPROSLYNATOR_
GitHub stars formatter
DART dartanalyzer
DARTDARTANALYZER_
GitHub stars
GO golangci-lint
GOGOLANGCI_LINT_
GitHub stars autofix sarif
GO revive
GOREVIVE_
GitHub stars sarif
GROOVY npm-groovy-lint
GROOVYNPM_GROOVY_LINT_
GitHub stars autofix sarif
JAVA checkstyle
JAVACHECKSTYLE_
GitHub stars sarif
JAVA pmd
JAVAPMD_
GitHub stars sarif
JAVASCRIPT eslint
JAVASCRIPTES_
GitHub stars autofix sarif
JAVASCRIPT standard
JAVASCRIPTSTANDARD_
GitHub stars autofix
JAVASCRIPT prettier
JAVASCRIPTPRETTIER_
GitHub stars formatter
JSX eslint
JSXESLINT_
GitHub stars autofix sarif
KOTLIN ktlint
KOTLINKTLINT_
GitHub stars autofix sarif
KOTLIN detekt
KOTLINDETEKT_
GitHub stars sarif
LUA luacheck
LUALUACHECK_
GitHub stars
LUA selene
LUASELENE_
GitHub stars
LUA stylua
LUASTYLUA_
GitHub stars
MAKEFILE checkmake
MAKEFILECHECKMAKE_
disabled GitHub stars
PERL perlcritic
PERLPERLCRITIC_
GitHub stars
PHP phpcs
PHPPHPCS_
GitHub stars sarif
PHP phpstan
PHPPHPSTAN_
downgraded version GitHub stars sarif
PHP psalm
PHPPSALM_
GitHub stars sarif
PHP phplint
PHPPHPLINT_
GitHub stars sarif
PHP php-cs-fixer
PHPPHPCSFIXER_
GitHub stars
POWERSHELL powershell
POWERSHELLPOWERSHELL_
GitHub stars autofix
POWERSHELL powershell_formatter
POWERSHELLPOWERSHELL_FORMATTER_
GitHub stars formatter
PYTHON pylint
PYTHONPYLINT_
GitHub stars
PYTHON black
PYTHONBLACK_
GitHub stars formatter
PYTHON flake8
PYTHONFLAKE8_
GitHub stars
PYTHON isort
PYTHONISORT_
GitHub stars formatter
PYTHON bandit
PYTHONBANDIT_
GitHub stars sarif
PYTHON mypy
PYTHONMYPY_
GitHub stars
PYTHON pyright
PYTHONPYRIGHT_
GitHub stars
PYTHON ruff
PYTHONRUFF_
GitHub stars autofix sarif
PYTHON ruff-format
PYTHONRUFF_FORMAT_
GitHub stars formatter
R lintr
R_LINTR
GitHub stars
RAKU raku
RAKURAKU_
GitHub stars
RUBY rubocop
RUBYRUBOCOP_
GitHub stars autofix
RUST clippy
RUSTCLIPPY_
GitHub stars
SALESFORCE sfdx-scanner-apex
SALESFORCESFDX_SCANNER_APEX_
GitHub stars
SALESFORCE sfdx-scanner-aura
SALESFORCESFDX_SCANNER_AURA_
GitHub stars
SALESFORCE sfdx-scanner-lwc
SALESFORCESFDX_SCANNER_LWC_
GitHub stars
SALESFORCE lightning-flow-scanner
SALESFORCELIGHTNING_FLOW_SCANNER_
GitHub stars
SCALA scalafix
SCALASCALAFIX_
GitHub stars
SQL sqlfluff
SQLSQLFLUFF_
GitHub stars
SQL tsqllint
SQLTSQLLINT_
GitHub stars
SWIFT swiftlint
SWIFTSWIFTLINT_
GitHub stars autofix
TSX eslint
TSXESLINT_
GitHub stars autofix sarif
TYPESCRIPT eslint
TYPESCRIPTES_
GitHub stars autofix sarif
TYPESCRIPT ts-standard
TYPESCRIPTSTANDARD_
GitHub stars autofix
TYPESCRIPT prettier
TYPESCRIPTPRETTIER_
GitHub stars formatter
Visual Basic .NET (VBDOTNET) dotnet-format
VBDOTNETDOTNET_FORMAT_
GitHub stars formatter

Formats

Format Linter Additional
CSS stylelint
CSSSTYLELINT_
GitHub stars autofix
ENV dotenv-linter
ENVDOTENV_LINTER_
GitHub stars autofix
GRAPHQL graphql-schema-linter
GRAPHQLGRAPHQL_SCHEMA_LINTER_
GitHub stars
HTML djlint
HTMLDJLINT_
GitHub stars
HTML htmlhint
HTMLHTMLHINT_
GitHub stars
JSON jsonlint
JSONJSONLINT_
GitHub stars
JSON eslint-plugin-jsonc
JSONESLINT_PLUGIN_JSONC_
disabled GitHub stars autofix sarif
JSON v8r
JSONV8R_
GitHub stars
JSON prettier
JSONPRETTIER_
GitHub stars formatter
JSON npm-package-json-lint
JSONNPM_PACKAGE_JSON_LINT_
GitHub stars
LATEX chktex
LATEXCHKTEX_
MARKDOWN markdownlint
MARKDOWNMARKDOWNLINT_
GitHub stars formatter
MARKDOWN remark-lint
MARKDOWNREMARK_LINT_
disabled GitHub stars formatter
MARKDOWN markdown-link-check
MARKDOWNMARKDOWN_LINK_CHECK_
downgraded version GitHub stars
MARKDOWN markdown-table-formatter
MARKDOWNMARKDOWN_TABLE_FORMATTER_
GitHub stars formatter
PROTOBUF protolint
PROTOBUFPROTOLINT_
GitHub stars autofix
RST rst-lint
RSTRST_LINT_
GitHub stars
RST rstcheck
RSTRSTCHECK_
GitHub stars
RST rstfmt
RSTRSTFMT_
formatter
XML xmllint
XMLXMLLINT_
autofix
YAML prettier
YAMLPRETTIER_
GitHub stars formatter
YAML yamllint
YAMLYAMLLINT_
GitHub stars
YAML v8r
YAMLV8R_
GitHub stars

Tooling formats

Tooling format Linter Additional
ACTION actionlint
ACTIONACTIONLINT_
GitHub stars
ANSIBLE ansible-lint
ANSIBLEANSIBLE_LINT_
GitHub stars sarif
API spectral
APISPECTRAL_
GitHub stars
ARM arm-ttk
ARMARM_TTK_
GitHub stars
BICEP bicep_linter
BICEPBICEP_LINTER_
GitHub stars
CLOUDFORMATION cfn-lint
CLOUDFORMATIONCFN_LINT_
GitHub stars sarif
DOCKERFILE hadolint
DOCKERFILEHADOLINT_
GitHub stars sarif
EDITORCONFIG editorconfig-checker
EDITORCONFIGEDITORCONFIG_CHECKER_
GitHub stars
GHERKIN gherkin-lint
GHERKINGHERKIN_LINT_
GitHub stars
KUBERNETES kubeconform
KUBERNETESKUBECONFORM_
GitHub stars
KUBERNETES helm
KUBERNETESHELM_
GitHub stars
KUBERNETES kubescape
KUBERNETESKUBESCAPE_
downgraded version GitHub stars sarif
PUPPET puppet-lint
PUPPETPUPPET_LINT_
GitHub stars autofix
SNAKEMAKE snakemake
SNAKEMAKELINT_
disabled GitHub stars
SNAKEMAKE snakefmt
SNAKEMAKESNAKEFMT_
GitHub stars formatter
TEKTON tekton-lint
TEKTONTEKTON_LINT_
GitHub stars
TERRAFORM tflint
TERRAFORMTFLINT_
GitHub stars sarif
TERRAFORM terrascan
TERRAFORMTERRASCAN_
downgraded version GitHub stars sarif
TERRAFORM terragrunt
TERRAFORMTERRAGRUNT_
GitHub stars autofix
TERRAFORM terraform-fmt
TERRAFORMTERRAFORM_FMT_
GitHub stars formatter

Other

Code quality checker Linter Additional
COPYPASTE jscpd
COPYPASTEJSCPD_
GitHub stars
REPOSITORY checkov
REPOSITORYCHECKOV_
GitHub stars sarif
REPOSITORY devskim
REPOSITORYDEVSKIM_
GitHub stars sarif
REPOSITORY dustilock
REPOSITORYDUSTILOCK_
GitHub stars sarif
REPOSITORY git_diff
REPOSITORYGIT_DIFF_
GitHub stars
REPOSITORY gitleaks
REPOSITORYGITLEAKS_
GitHub stars sarif
REPOSITORY grype
REPOSITORYGRYPE_
downgraded version GitHub stars sarif
REPOSITORY kics
REPOSITORYKICS_
GitHub stars sarif
REPOSITORY ls-lint
REPOSITORYLS_LINT_
GitHub stars
REPOSITORY secretlint
REPOSITORYSECRETLINT_
GitHub stars sarif
REPOSITORY semgrep
REPOSITORYSEMGREP_
GitHub stars sarif
REPOSITORY syft
REPOSITORYSYFT_
GitHub stars sarif
REPOSITORY trivy
REPOSITORYTRIVY_
GitHub stars sarif
REPOSITORY trivy-sbom
REPOSITORYTRIVY_SBOM_
GitHub stars sarif
REPOSITORY trufflehog
REPOSITORYTRUFFLEHOG_
GitHub stars
SPELL cspell
SPELLCSPELL_
GitHub stars
SPELL proselint
SPELLPROSELINT_
GitHub stars
SPELL vale
SPELLVALE_
GitHub stars
SPELL lychee
SPELLLYCHEE_
GitHub stars

Installation

Assisted installation

Just run npx mega-linter-runner --install at the root of your repository and answer questions, it will generate ready to use configuration files for MegaLinter :)

Runner Install

Which version to use ?

The following instructions examples are using latest MegaLinter stable version (v8 , always corresponding to the latest release)

  • Docker image: oxsecurity/megalinter:v8
  • GitHub Action: oxsecurity/megalinter@v8

You can also use beta version (corresponding to the content of main branch)

  • Docker image: oxsecurity/megalinter:beta
  • GitHub Action: oxsecurity/megalinter@beta

GitHub Action

  1. Create a new file in your repository called .github/workflows/mega-linter.yml
  2. Copy the example workflow from below into that new file, no extra configuration required
  3. Commit that file to a new branch
  4. Open up a pull request and observe the action working
  5. Enjoy your more stable, and cleaner code base

NOTES:

  • If you pass the Environment variable GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} in your workflow, then the MegaLinter will mark the status of each individual linter run in the Checks section of a pull request. Without this you will only see the overall status of the full run. There is no need to set the GitHub Secret as it's automatically set by GitHub, it only needs to be passed to the action.
  • You can also use it outside of GitHub Actions (CircleCI, Azure Pipelines, Jenkins, GitLab, or even locally with a docker run) , and have status on Github Pull Request if GITHUB_TARGET_URL environment variable exists.

In your repository you should have a .github/workflows folder with GitHub Action similar to below:

  • .github/workflows/mega-linter.yml
<summary>This file should have this code</summary>
---
# MegaLinter GitHub Action configuration file
# More info at https://megalinter.io
name: MegaLinter

on:
  # Trigger mega-linter at every push. Action will also be visible from Pull Requests to main
  push: # Comment this line to trigger action only on pull-requests (not recommended if you don't pay for GH Actions)
  pull_request:
    branches: [master, main]

env: # Comment env block if you don't want to apply fixes
  # Apply linter fixes configuration
  APPLY_FIXES: all # When active, APPLY_FIXES must also be defined as environment variable (in github/workflows/mega-linter.yml or other CI tool)
  APPLY_FIXES_EVENT: pull_request # Decide which event triggers application of fixes in a commit or a PR (pull_request, push, all)
  APPLY_FIXES_MODE: commit # If APPLY_FIXES is used, defines if the fixes are directly committed (commit) or posted in a PR (pull_request)

concurrency:
  group: ${{ github.ref }}-${{ github.workflow }}
  cancel-in-progress: true

jobs:
  megalinter:
    name: MegaLinter
    runs-on: ubuntu-latest
    permissions:
      # Give the default GITHUB_TOKEN write permission to commit and push, comment issues & post new PR
      # Remove the ones you do not need
      contents: write
      issues: write
      pull-requests: write
    steps:
      # Git Checkout
      - name: Checkout Code
        uses: actions/checkout@v4
        with:
          token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
          fetch-depth: 0 # If you use VALIDATE_ALL_CODEBASE = true, you can remove this line to improve performances

      # MegaLinter
      - name: MegaLinter
        id: ml
        # You can override MegaLinter flavor used to have faster performances
        # More info at https://megalinter.io/flavors/
        uses: oxsecurity/megalinter@v8
        env:
          # All available variables are described in documentation
          # https://megalinter.io/configuration/
          VALIDATE_ALL_CODEBASE: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} # Validates all source when push on main, else just the git diff with main. Override with true if you always want to lint all sources
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # ADD YOUR CUSTOM ENV VARIABLES HERE OR DEFINE THEM IN A FILE .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
          # DISABLE: COPYPASTE,SPELL # Uncomment to disable copy-paste and spell checks

      # Upload MegaLinter artifacts
      - name: Archive production artifacts
        if: success() || failure()
        uses: actions/upload-artifact@v4
        with:
          name: MegaLinter reports
          path: |
            megalinter-reports
            mega-linter.log

      # Create pull request if applicable (for now works only on PR from same repository, not from forks)
      - name: Create Pull Request with applied fixes
        id: cpr
        if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'pull_request' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && !contains(github.event.head_commit.message, 'skip fix')
        uses: peter-evans/create-pull-request@v6
        with:
          token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }}
          commit-message: "[MegaLinter] Apply linters automatic fixes"
          title: "[MegaLinter] Apply linters automatic fixes"
          labels: bot
      - name: Create PR output
        if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'pull_request' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && !contains(github.event.head_commit.message, 'skip fix')
        run: |
          echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
          echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"

      # Push new commit if applicable (for now works only on PR from same repository, not from forks)
      - name: Prepare commit
        if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'commit' && github.ref != 'refs/heads/main' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && !contains(github.event.head_commit.message, 'skip fix')
        run: sudo chown -Rc $UID .git/
      - name: Commit and push applied linter fixes
        if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'commit' && github.ref != 'refs/heads/main' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && !contains(github.event.head_commit.message, 'skip fix')
        uses: stefanzweifel/git-auto-commit-action@v4
        with:
          branch: ${{ github.event.pull_request.head.ref || github.head_ref || github.ref }}
          commit_message: "[MegaLinter] Apply linters fixes"
          commit_user_name: megalinter-bot
          commit_user_email: nicolas.vuillamy@ox.security

GitLab CI

Manual setup

Create or update .gitlab-ci.yml file at the root of your repository

# MegaLinter GitLab CI job configuration file
# More info at https://megalinter.io/

mega-linter:
  stage: test
  # You can override MegaLinter flavor used to have faster performances
  # More info at https://megalinter.io/flavors/
  image: oxsecurity/megalinter:v8
  script: [ "true" ] # if script: ["true"] doesn't work, you may try ->  script: [ "/bin/bash /entrypoint.sh" ]
  variables:
    # All available variables are described in documentation
    # https://megalinter.io/configuration/
    DEFAULT_WORKSPACE: $CI_PROJECT_DIR
    # ADD YOUR CUSTOM ENV VARIABLES HERE TO OVERRIDE VALUES OF .mega-linter.yml AT THE ROOT OF YOUR REPOSITORY
  artifacts:
    when: always
    paths:
      - megalinter-reports
    expire_in: 1 week

Create a Gitlab access token and define it in a variable GITLAB_ACCESS_TOKEN_MEGALINTER in the project CI/CD masked variables. Make sure your token (e.g. if a project token) as the appropriate role for commenting a merge request (at least developer).

config-gitlab-access-token

Screenshot

Using R2Devops

R2Devops Logo

Our friends at R2Devops have packaged a Gitlab-CI MegaLinter workflow on their open-source templates marketplace, and it can post MegaLinter results in Gitlab Code Quality Reports !

Screenshot

Azure Pipelines

Use the following Azure Pipelines YAML template

You can configure a build validation branch policy against a single repository or across all repositories. If you configure across all repositories then your pipeline is stored in a central repository.

Single Repository

Add the following to an azure-pipelines.yaml file within your code repository:

  # Run MegaLinter to detect linting and security issues
  - job: MegaLinter
    pool:
      vmImage: ubuntu-latest
    steps:
      # Checkout repo
      - checkout: self

      # Pull MegaLinter docker image
      - script: docker pull oxsecurity/megalinter:v8
        displayName: Pull MegaLinter

      # Run MegaLinter
      - script: |
          docker run -v $(System.DefaultWorkingDirectory):/tmp/lint \
            --env-file <(env | grep -e SYSTEM_ -e BUILD_ -e TF_ -e AGENT_) \
            -e SYSTEM_ACCESSTOKEN=$(System.AccessToken) \
            -e GIT_AUTHORIZATION_BEARER=$(System.AccessToken) \
            oxsecurity/megalinter:v8
        displayName: Run MegaLinter

      # Upload MegaLinter reports
      - task: PublishPipelineArtifact@1
        condition: succeededOrFailed()
        displayName: Upload MegaLinter reports
        inputs:
          targetPath: "$(System.DefaultWorkingDirectory)/megalinter-reports/"
          artifactName: MegaLinterReport

Central Repository

Add the following to an azure-pipelines.yaml file within a separate repository e.g. 'MegaLinter' repository:

# Run MegaLinter to detect linting and security issues

trigger: none

pool:
  vmImage: ubuntu-latest

variables:
  repoName: $[ replace(split(variables['System.PullRequest.SourceRepositoryURI'], '/')[6], '%20', ' ') ]

steps:
  # Checkout triggering repo
  - checkout: git://$(System.TeamProject)/$(repoName)@$(System.PullRequest.SourceBranch)
    displayName: Checkout Triggering Repository

  # Pull MegaLinter docker image
  - script: docker pull oxsecurity/megalinter:v8
    displayName: Pull MegaLinter

  # Run MegaLinter
  - script: |
      docker run -v $(System.DefaultWorkingDirectory):/tmp/lint \
        --env-file <(env | grep -e SYSTEM_ -e BUILD_ -e TF_ -e AGENT_) \
        -e SYSTEM_ACCESSTOKEN=$(System.AccessToken) \
        -e GIT_AUTHORIZATION_BEARER=$(System.AccessToken) \
        oxsecurity/megalinter:v8
    displayName: Run MegaLinter

  # Upload MegaLinter reports
  - task: PublishPipelineArtifact@1
    condition: succeededOrFailed()
    displayName: MegaLinter Report
    inputs:
      targetPath: $(System.DefaultWorkingDirectory)/megalinter-reports/
      artifactName: MegaLinterReport

Pull Request Comments

To benefit from Pull Request comments, please follow configuration instructions

Detailed Tutorial

You can also follow this detailed tutorial by DonKoning

Bitbucket Pipelines

  1. Create a bitbucket-pipelines.yml file on the root directory of your repository

  2. Copy and paste the following template or add the step to your existing pipeline.

image: atlassian/default-image:3
pipelines:
  default:
    - parallel:
      - step:
          name: Run MegaLinter
          image: oxsecurity/megalinter:v8
          script:
            - export DEFAULT_WORKSPACE=$BITBUCKET_CLONE_DIR && bash /entrypoint.sh
          artifacts:
            -  megalinter-reports/**

Jenkins

Add the following stage in your Jenkinsfile

You may activate File.io reporter or E-mail reporter to access detailed logs and fixed source

// Lint with MegaLinter: https://megalinter.io/
stage('MegaLinter') {
    agent {
        docker {
            image 'oxsecurity/megalinter:v8'
            args "-u root -e VALIDATE_ALL_CODEBASE=true -v ${WORKSPACE}:/tmp/lint --entrypoint=''"
            reuseNode true
        }
    }
    steps {
        sh '/entrypoint.sh'
    }
    post {
        always {
            archiveArtifacts allowEmptyArchive: true, artifacts: 'mega-linter.log,megalinter-reports/**/*', defaultExcludes: false, followSymlinks: false
        }
    }
}

CloudBees themselves made a nice tutorial about how to use MegaLinter with Jenkins !

<iframe width="560" height="315" src="https://www.youtube.com/embed/KhkNf2tQ3hM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Concourse

Pipeline step

Use the following job.step in your pipeline template

Note: make sure you have job.plan.get step which gets repo containing your repository as shown in example

---

  - name: linting
    plan:
      - get: repo
      - task: linting
        config:
          platform: linux
          image_resource:
            type: docker-image
            source:
              repository: oxsecurity/megalinter
              tag: v8
          inputs:
            - name: repo
          run:
            path: bash
            args:
            - -cxe
            - |
              cd repo
              export DEFAULT_WORKSPACE=$(pwd)
              bash -ex /entrypoint.sh
              ## doing this because concourse doesn't work as other CI systems
          # params:
            # PARALLEL: true
            # DISABLE: SPELL
            # APPLY_FIXES: all
            # DISABLE_ERRORS: true
            # VALIDATE_ALL_CODEBASE: true

OR

Use it as reusable task

Create reusable concourse task which can be used with multiple pipelines

  1. Create task file task-linting.yaml
---
platform: linux
image_resource:
  type: docker-image
  source:
    repository: oxsecurity/megalinter
    tag: v8

inputs:
- name: repo

## uncomment this if you want reports as task output
# output:
# - name: reports
#   path: repo/megalinter-reports

run:
  path: bash
  args:
  - -cxe
  - |
    cd repo
    export DEFAULT_WORKSPACE=$(pwd)
    bash -ex /entrypoint.sh
  1. Use that task-linting.yaml task in pipeline

Note:

  1. make sure task-linting.yaml is available in that repo input at root

  2. task output is not shown here

resources:

  - name: linting
    plan:
      - get: repo
      - task: linting
        file: repo/task-linting.yaml
        # params:
        #   PARALLEL: true
        #   DISABLE: SPELL
        #   APPLY_FIXES: all
        #   DISABLE_ERRORS: true
        #   VALIDATE_ALL_CODEBASE: true

Drone CI

Warning: Drone CI support is experimental and is undergoing heavy modifications (see issue #2047).

  1. Create a .drone.yml file on the root directory of your repository

  2. Copy and paste the following template:

kind: pipeline
type: docker
name: MegaLinter

workspace:
  path: /tmp/lint

steps:

- name: megalinter
  image: oxsecurity/megalinter:v8
  environment:
    DEFAULT_WORKSPACE: /tmp/lint

This uses the Drone CI docker runner, so it's needed to install and configure it beforehand on your Drone CI server.

(Optional) Adjusting trigger rules

The Drone CI workflow should trigger automatically for every scenario (push, pull request, sync…) however, you can optionally change this behavior by changing the trigger. For example:

kind: pipeline
type: docker
name: MegaLinter

workspace:
  path: /tmp/lint

steps:

- name: megalinter
  image: oxsecurity/megalinter:v8
  environment:
    DEFAULT_WORKSPACE: /tmp/lint

trigger:
  event:
  - push

The workflow above should only trigger on push, not on any other situation. For more information about how to configure Drone CI trigger rules, click here.

Docker container

You can also run megalinter with its Docker container, just execute this command:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:rw -v $(pwd):/tmp/lint:rw oxsecurity/megalinter:v8

No extra arguments are needed, however, megalinter will lint all of the files inside the /tmp/lint folder, so it may be needed to configure your tool of choice to use the /tmp/lint folder as workspace. This can also be changed:

Example:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:rw -v $(pwd):/example/folder:rw oxsecurity/megalinter:v8

Run MegaLinter locally

Version Downloads/week Downloads/total

You can use mega-linter-runner to locally run MegaLinter with the same configuration defined in .mega-linter.yml file

See mega-linter-runner installation instructions

Example

npx mega-linter-runner --flavor salesforce -e "'ENABLE=DOCKERFILE,MARKDOWN,YAML'" -e 'SHOW_ELAPSED_TIME=true'

Note: You can also use such command line in your custom CI/CD pipelines

Configuration

.mega-linter.yml file

MegaLinter configuration variables are defined in a .mega-linter.yml file at the root of the repository or with environment variables. You can see an example config file in this repo: .mega-linter.yml

Configuration is assisted with autocompletion and validation in most commonly used IDEs, thanks to JSON schema stored on schemastore.org

  • VSCode: You need a VSCode extension like Red Hat YAML
  • IDEA family: Auto-completion natively supported

You can also define variables as environment variables.

  • In case a variable exists in both ENV and .mega-linter.yml file, priority is given to ENV variable.

Assisted configuration

Common variables

ENV VAR Default Value Notes
ADDITIONAL_EXCLUDED_DIRECTORIES [] List of additional excluded directory basenames. they're excluded at any nested level.
APPLY_FIXES none Activates formatting and autofix (more info)
CLEAR_REPORT_FOLDER false Flag to clear files from report folder (usually megalinter-reports) before starting the linting process
CONFIG_PROPERTIES_TO_APPEND [] List of configuration properties to append their values (instead of replacing them) in case of using EXTENDS.
DEFAULT_BRANCH HEAD Deprecated: The name of the repository's default branch.
DEFAULT_WORKSPACE /tmp/lint The location containing files to lint if you are running locally.
DISABLE_ERRORS false Flag to have the linter complete with exit code 0 even if errors were detected.
DISABLE List of disabled descriptors keys (more info)
DISABLE_LINTERS List of disabled linters keys (more info)
DISABLE_ERRORS_LINTERS List of enabled but not blocking linters keys (more info)
ENABLE List of enabled descriptors keys (more info)
ENABLE_LINTERS List of enabled linters keys (more info)
EXCLUDED_DIRECTORIES […many values…] List of excluded directory basenames. they're excluded at any nested level.
EXTENDS Base mega-linter.yml config file(s) to extend local configuration from. Can be a single URL or a list of .mega-linter.yml config files URLs. Later files take precedence.
FAIL_IF_MISSING_LINTER_IN_FLAVOR false If set to true, MegaLinter fails if a linter is missing in the selected flavor
FAIL_IF_UPDATED_SOURCES false If set to true, MegaLinter fails if a linter or formatter has autofixed sources, even if there are no errors
FILTER_REGEX_EXCLUDE none Regular expression defining which files will be excluded from linting (more info) .ex: .*src/test.*)
FILTER_REGEX_INCLUDE all Regular expression defining which files will be processed by linters (more info) .ex: .*src/.*)
FLAVOR_SUGGESTIONS true Provides suggestions about different MegaLinter flavors to use to improve runtime performances
FORMATTERS_DISABLE_ERRORS true Formatter errors will be reported as errors (and not warnings) if this variable is set to false
GIT_AUTHORIZATION_BEARER If set, calls git with Authorization: Bearer+value
GITHUB_WORKSPACE Base directory for REPORT_OUTPUT_FOLDER, for user-defined linter rules location, for location of linted files if DEFAULT_WORKSPACE isn't set
IGNORE_GENERATED_FILES false If set to true, MegaLinter will skip files containing @generated marker but without @not-generated marker (more info at https://generated.at)
IGNORE_GITIGNORED_FILES true If set to true, MegaLinter will skip files ignored by git using .gitignore file
JAVASCRIPT_DEFAULT_STYLE standard Javascript default style to check/apply. standard,prettier
LINTER_RULES_PATH .github/linters Directory for all linter configuration rules.
Can be a local folder or a remote URL (ex: https://raw.githubusercontent.com/some_org/some_repo/mega-linter-rules )
LOG_FILE mega-linter.log The file name for outputting logs. All output is sent to the log file regardless of LOG_LEVEL. Use none to not generate this file.
LOG_LEVEL INFO How much output the script will generate to the console. One of INFO, DEBUG, WARNING or ERROR.
MARKDOWN_DEFAULT_STYLE markdownlint Markdown default style to check/apply. markdownlint,remark-lint
MEGALINTER_CONFIG .mega-linter.yml Name of MegaLinter configuration file. Can be defined remotely, in that case set this environment variable with the remote URL of .mega-linter.yml config file
MEGALINTER_FILES_TO_LINT [] Comma-separated list of files to analyze. Using this variable will bypass other file listing methods
PARALLEL true Process linters in parallel to improve overall MegaLinter performance. If true, linters of same language or formats are grouped in the same parallel process to avoid lock issues if fixing the same files
PARALLEL_PROCESS_NUMBER All available cores are used by default. If there are too many, you need to decrease the number of used cores in order to enhance performances (example: 4)
PLUGINS [] List of plugin urls to install and run during MegaLinter run
POST_COMMANDS [] Custom bash commands to run after linters
PRE_COMMANDS [] Custom bash commands to run before linters
PRINT_ALPACA true Enable printing alpaca image to console
PRINT_ALL_FILES false Display all files analyzed by the linter instead of only the number
PYTHON_DEFAULT_STYLE black Python default style to check/apply. black,ruff
REPORT_OUTPUT_FOLDER ${GITHUB_WORKSPACE}/megalinter-reports Directory for generating report files. Set to none to not generate reports
SECURED_ENV_VARIABLES [] Additional list of secured environment variables to hide when calling linters.
SECURED_ENV_VARIABLES_DEFAULT MegaLinter & CI platforms sensitive variables List of secured environment variables to hide when calling linters. Default list. This is not recommended to override this variable, use SECURED_ENV_VARIABLES
SHOW_ELAPSED_TIME false Displays elapsed time in reports
SHOW_SKIPPED_LINTERS true Displays all disabled linters mega-linter could have run
SKIP_CLI_LINT_MODES [] Comma-separated list of cli_lint_modes. To use if you want to skip linters with some CLI lint modes (ex: file,project). Available values: file,cli_lint_mode,project.
TYPESCRIPT_DEFAULT_STYLE standard Typescript default style to check/apply. standard,prettier
VALIDATE_ALL_CODEBASE true Will parse the entire repository and find all files to validate across all types. NOTE: When set to false, only new or edited files will be parsed for validation.

Activation and deactivation

MegaLinter have all linters enabled by default, but allows to enable only some, or disable only some

  • If ENABLE isn't set, all descriptors are activated by default. If set, all linters of listed descriptors will be activated by default
  • If ENABLE_LINTERS is set, only listed linters will be processed
  • If DISABLE is set, the linters in the listed descriptors will be skipped
  • If DISABLE_LINTERS is set, the listed linters will be skipped
  • If DISABLE_ERRORS_LINTERS is set, the listed linters will be run, but if errors are found, they will be considered as non blocking

Examples:

  • Run all javascript and groovy linters except STANDARD javascript linter. DevSkim errors will be non-blocking
ENABLE: JAVASCRIPT,GROOVY
DISABLE_LINTERS: JAVASCRIPT_STANDARD
DISABLE_ERRORS_LINTERS: REPOSITORY_DEVSKIM
  • Run all linters except PHP linters (PHP_BUILTIN, PHP_PHPCS, PHP_PHPSTAN, PHP_PSALM)
DISABLE: PHP
  • Run all linters except PHP_PHPSTAN and PHP_PSALM linters
DISABLE_LINTERS:
  - PHP_PHPSTAN
  - PHP_PSALM

Filter linted files

If you need to lint only a folder or exclude some files from linting, you can use optional environment parameters FILTER_REGEX_INCLUDE and FILTER_REGEX_EXCLUDE You can apply filters to a single linter by defining variable <LINTER_KEY>_FILTER_REGEX_INCLUDE and <LINTER_KEY>_FILTER_REGEX_EXCLUDE

Examples:

  • Lint only src folder: FILTER_REGEX_INCLUDE: (src/)
  • Don't lint files inside test and example folders: FILTER_REGEX_EXCLUDE: (test/|examples/)
  • Don't lint javascript files inside test folder: FILTER_REGEX_EXCLUDE: (test/.*\.js)

Warning: not applicable with linters using CLI lint mode project (see details)

Apply fixes

Mega-linter is able to apply fixes provided by linters. To use this capability, you need 3 env variables defined at top level

  • APPLY_FIXES: all to apply fixes of all linters, or a list of linter keys (ex: JAVASCRIPT_ES,MARKDOWN_MARKDOWNLINT)

Only for GitHub Action Workflow file if you use it:

  • APPLY_FIXES_EVENT: all, push, pull_request, none (use none in case of use of Updated sources reporter)
  • APPLY_FIXES_MODE: commit to create a new commit and push it on the same branch, or pull_request to create a new PR targeting the branch.

Apply fixes issues

You may see github permission errors, or workflows not run on the new commit.

To solve these issues, you can apply one of the following solutions.

Notes

  • You can use Updated sources reporter if you don't want fixes to be automatically applied on git branch, but download them in a zipped file and manually extract them in your project
  • If used, APPLY_FIXES_EVENT and APPLY_FIXES_MODE can not be defined in .mega-linter.ymlconfig file, they must be set as environment variables
  • If you use APPLY_FIXES, add the following line in your .gitignore file
megalinter-reports/

Linter specific variables

See variables related to a single linter behavior in linters documentations

Pre-commands

MegaLinter can run custom commands before running linters (for example, installing an plugin required by one of the linters you use)

Example in .mega-linter.yml config file

PRE_COMMANDS:
  - command: npm install eslint-plugin-whatever
    cwd: root        # Will be run at the root of MegaLinter docker image
    secured_env: true  # True by default, but if defined to false, no global variable will be hidden (for example if you need GITHUB_TOKEN)
    run_before_linters: True # Will be run before the execution of the linters themselves, required for npm/pip commands that cannot be run in parallel
  - command: echo "pre-test command has been called"
    cwd: workspace   # Will be run at the root of the workspace (usually your repository root)
    continue_if_failed: False  # Will stop the process if command is failed (return code > 0)
  - command: pip install flake8-cognitive-complexity
    venv: flake8 # Will be run within flake8 python virtualenv. There is one virtualenv per python-based linter, with the same name
  - command: export MY_OUTPUT_VAR="my output var" && export MY_OUTPUT_VAR2="my output var2"
    output_variables: ["MY_OUTPUT_VAR","MY_OUTPUT_VAR2"] # Will collect the values of output variables and update MegaLinter own ENV context
  - command: echo "Some command called before loading MegaLinter plugins"
    cwd: workspace   # Will be run at the root of the workspace (usually your repository root)
    continue_if_failed: False  # Will stop the process if command is failed (return code > 0)
    tag: before_plugins # Tag indicating that the command will be run before loading plugins
  - command: echo "Some command called after running MegaLinter linters"
    run_after_linters: True # Will be run after the execution of the linters themselves
Property Description Default value
command Command line to run Mandatory
cwd Directory where to run the command (workspace or root) workspace
run_before_linters If set to true, runs the command before the execution of the linters themselves, required for npm/pip commands that cannot be run in parallel false
run_after_linters If set to true, runs the command after the execution of the linters themselves false
secured_env Apply filtering of secured env variables before calling the command (default true)
Be careful if you disable it !
true
continue_if_failed If set to false, stop MegaLinter process in case of command failure true
venv If set, runs the command into the related python venv
output_variables ENV variables to get from output after running the commands, and store in MegaLinter ENV context, so they can be reused in next commands []
tag Tag defining at which commands entry point the command will be run (available tags: before_plugins)

Post-commands

MegaLinter can run custom commands after running linters (for example, running additional tests)

Example in .mega-linter.yml config file

POST_COMMANDS:
  - command: npm run test
    cwd: "workspace"   # Will be run at the root of the workspace (usually your repository root)
    continue_if_failed: False  # Will stop the process if command is failed (return code > 0)

Environment variables security

Secured env variables

MegaLinter runs on a docker image and calls the linters via command line to gather their results.

If you run it from your CI/CD pipelines, the docker image may have access to your environment variables, that can contain secrets defined in CI/CD variables.

As it can be complicated to trust the authors of all the open-source linters, MegaLinter removes variables from the environment used to call linters.

Thanks to this feature, you only need to trust MegaLinter and its internal python dependencies, but there is no need to trust all the linters that are used !

You can add secured variables to the default list using configuration property SECURED_ENV_VARIABLES in .mega-linter.yml or in an environment variable (priority is given to ENV variables above .mega-linter.yml property).

Values can be:

  • String (ex: MY_SECRET_VAR)
  • Regular Expression (ex: (MY.*VAR))

Environment variables are secured for each command line called (linters, plugins, sarif formatter...) except for PRE_COMMANDS , ONLY if you define secured_env: false in the command.

Secured configuration examples

  • Example of adding extra secured variables .mega-linter.yml:
SECURED_ENV_VARIABLES:
  - MY_SECRET_TOKEN
  - ANOTHER_VAR_CONTAINING_SENSITIVE_DATA
  - OX_API_KEY
  - (MY.*VAR)  # Regex format
  • Example of adding extra secured variables in CI variables, so they can not be overridden in .mega-linter.yml:
SECURED_ENV_VARIABLES=MY_SECRET_TOKEN,ANOTHER_VAR_CONTAINING_SENSITIVE_DATA,OX_API_KEY

Default secured variables

If you override SECURED_ENV_VARIABLES_DEFAULT, it replaces the default list, so it's better to only define SECURED_ENV_VARIABLES to add them to the default list !

SECURED_ENV_VARIABLES_DEFAULT contains:

  • GITHUB_TOKEN
  • PAT
  • SYSTEM_ACCESSTOKEN
  • GIT_AUTHORIZATION_BEARER
  • CI_JOB_TOKEN
  • GITLAB_ACCESS_TOKEN_MEGALINTER
  • GITLAB_CUSTOM_CERTIFICATE
  • WEBHOOK_REPORTER_BEARER_TOKEN
  • NODE_TOKEN
  • NPM_TOKEN
  • DOCKER_USERNAME
  • DOCKER_PASSWORD
  • CODECOV_TOKEN
  • GCR_USERNAME
  • GCR_PASSWORD
  • SMTP_PASSWORD
  • CI_SFDX_HARDIS_GITLAB_TOKEN
  • (SFDX_CLIENT_ID_.*)
  • (SFDX_CLIENT_KEY_.*)

Unhide variables for linters

You can configure exceptions for a specific linter by defining (linter-key)UNSECUREDENV_VARIABLES.

Variable names in this list won't be hidden to the linter commands.

TERRAFORM_TFLINT_UNSECURED_ENV_VARIABLES:
  - GITHUB_TOKEN # Can contain string only, not regex

CLI lint mode

Each linter is pre-configured to use a default lint mode, which are visible in the MegaLinter documentation (example). The possible values are:

  • list_of_files: The linter is called only once, and passed a list of all the files to be processed
  • project: The linter is called only once, from the root folder of the repository, and it scans for the files to process, as no file names are provided it
  • file: The linter is called once per file, which hurts performance

You can override the CLI_LINT_MODE by using a configuration variable for each linter (see linters documentation).

  • Linters that default to the file lint mode cannot be overridden to use the list_of_files lint mode
  • Linters that default to the project lint mode cannot be overridden to use either the list_of_files or file lint modes.

Allowing file or list_of_files to be overridden to project is mostly for workarounds. For example, some linters have a problem finding their config file when the current folder isn't the repository's root folder.

Special considerations:

  • Linters that are configured to use the project lint mode ignore variables like FILTER_REGEX_INCLUDE and FILTER_REGEX_EXCLUDE, as they are not passed a list of files to lint. For those linters, you must check their documentation to see if a linter can be configured to ignore specific files. For example, the Secretlint linter ignore files listed in ~/.secretlintignore by default, or it can be configured to instead ignore files listed in ~/.gitignore by setting REPOSITORY_SECRETLINT_ARGUMENTS to --secretlintignore .gitignore..

Reporters

MegaLinter can generate various reports that you can activate / deactivate and customize

Reporter Description Default
Text files Generates One log file by linter + suggestions for fixes that can not be automated Active
SARIF (beta) Generates an aggregated SARIF output file Inactive
GitHub Pull Request comments MegaLinter posts a comment on the PR with a summary of lint results, and links to detailed logs Active if GitHub Action
Gitlab Merge Request comments Mega-Linter posts a comment on the MR with a summary of lint results, and links to detailed logs Active if in Gitlab CI
Azure Pipelines Pull Request comments Mega-Linter posts a comment on the PR with a summary of lint results, and links to detailed logs Active if in Azure Pipelines
Bitbucket Pull Request comments Mega-Linter posts a comment on the PR with a summary of lint results, and links to detailed logs Active if in Bitbucket CI
API (Grafana) Sends logs and metrics to Grafana endpoint (Loki / Prometheus) Inactive
Updated sources Zip containing all formatted and autofixed sources so you can extract them in your repository Active
IDE Configuration Apply MegaLinter configuration in your local IDE with linter config files and IDE extensions Active
GitHub Status One GitHub status by linter on the PR, with links to detailed logs Active if GitHub Action
File.io Send reports on file.io so you can access them with a simple hyperlink provided at the end of console log Inactive
JSON Generates a JSON output report file Inactive
Email Receive all reports on your e-mail, if you can not use artifacts Active
TAP files One file by linter following Test Anything Protocol format Active
Console Execution logs visible in console with summary table and links to other reports at the end Active
Markdown Summary Generates a Markdown summary report file Inactive

Flavors

To improve run performances, we generate Flavored MegaLinter images containing only the list of linters related to a project type

  • When using default MegaLinter, if a MegaLinter Flavor would cover all your project requirements, a message is added in the logs
  • If your project uses a MegaLinter Flavor not covering linter requirements, an error message will be thrown with instructions about how to solve the issue

The following table doesn't display docker pulls from MegaLinter v4 & v5 images.

Flavor Description Embedded linters Info
all Default MegaLinter Flavor 125 Docker Image Size (tag) Docker Pulls
c_cpp Optimized for pure C/C++ projects 53 Docker Image Size (tag) Docker Pulls
ci_light Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML 21 Docker Image Size (tag) Docker Pulls
cupcake MegaLinter for the most commonly used languages 85 Docker Image Size (tag) Docker Pulls
documentation MegaLinter for documentation projects 48 Docker Image Size (tag) Docker Pulls
dotnet Optimized for C, C++, C# or VB based projects 61 Docker Image Size (tag) Docker Pulls
dotnetweb Optimized for C, C++, C# or VB based projects with JS/TS 70 Docker Image Size (tag) Docker Pulls
formatters Contains only formatters 18 Docker Image Size (tag) Docker Pulls
go Optimized for GO based projects 50 Docker Image Size (tag) Docker Pulls
java Optimized for JAVA based projects 52 Docker Image Size (tag) Docker Pulls
javascript Optimized for JAVASCRIPT or TYPESCRIPT based projects 58 Docker Image Size (tag) Docker Pulls
php Optimized for PHP based projects 53 Docker Image Size (tag) Docker Pulls
python Optimized for PYTHON based projects 62 Docker Image Size (tag) Docker Pulls
ruby Optimized for RUBY based projects 49 Docker Image Size (tag) Docker Pulls
rust Optimized for RUST based projects 49 Docker Image Size (tag) Docker Pulls
salesforce Optimized for Salesforce based projects 53 Docker Image Size (tag) Docker Pulls
security Optimized for security 24 Docker Image Size (tag) Docker Pulls
swift Optimized for SWIFT based projects 49 Docker Image Size (tag) Docker Pulls
terraform Optimized for TERRAFORM based projects 53 Docker Image Size (tag) Docker Pulls

If you need a new flavor, post an issue :wink:

Badge

You can show MegaLinter status with a badge in your repository README

MegaLinter

If your main branch is master , replace main by master in URLs

Markdown

  • Format
[![MegaLinter](https://github.com/<OWNER>/<REPOSITORY>/workflows/MegaLinter/badge.svg?branch=main)](https://github.com/<OWNER>/<REPOSITORY>/actions?query=workflow%3AMegaLinter+branch%3Amain)
  • Example
[![MegaLinter](https://github.com/nvuillam/npm-groovy-lint/workflows/MegaLinter/badge.svg?branch=main)](https://github.com/nvuillam/npm-groovy-lint/actions?query=workflow%3AMegaLinter+branch%3Amain)

reStructuredText

  • Format
.. |MegaLinter yes| image:: https://github.com/<OWNER>/<REPOSITORY>/workflows/MegaLinter/badge.svg?branch=main
   :target: https://github.com/<OWNER>/<REPOSITORY>/actions?query=workflow%3AMegaLinter+branch%3Amain
  • Example
.. |MegaLinter yes| image:: https://github.com/nvuillam/npm-groovy-lint/workflows/MegaLinter/badge.svg?branch=main
   :target: https://github.com/nvuillam/npm-groovy-lint/actions?query=workflow%3AMegaLinter+branch%3Amain

Note: IF you did not use MegaLinter as GitHub Action name, please read GitHub Actions Badges documentation{target=_blank}

Plugins

For performances and security reasons, we can not embed all linters of the world within MegaLinter.

But our core architecture allows to build and publish MegaLinter Plugins !

External Plugins Catalog

Name Description Author Raw URL
jupyfmt The uncompromising Jupyter notebook formatter Kim Philipp Jablonski Descriptor
linkcheck Plugin to check and validate markdown links exist and working Shiran Rubin Descriptor
nitpick Command-line tool and flake8 plugin to enforce the same settings across multiple language-independent projects W. Augusto Andreoli Descriptor
mustache Plugin to validate Logstash pipeline definition files using mustache Yann Jouanique Descriptor
salt-lint Checks Salt State files (SLS) for best practices and behavior that could potentially be improved. Joachim Grimm Descriptor

Note: Using an external plugin means you trust its author

Submit a Pull Request if you want your plugin to appear here :)

Use external plugins

Add plugin URLs in PLUGINS property of .mega-linter.yml. URLs must either begin with "https://" or take the form of "file://<path>", where <path> points to a valid plugin descriptor file.

Note: Both <path> and the default mount directory (/tmp/lint/<path>) will be checked for a valid descriptor.

Example

PLUGINS:
  - https://raw.githubusercontent.com/kpj/jupyfmt/master/mega-linter-plugin-jupyfmt/jupyfmt.megalinter-descriptor.yml
  - file://.automation/test/mega-linter-plugin-test/test.megalinter-descriptor.yml

Create your own plugin

You can implement your own descriptors and load them as plugins during MegaLinter runtime

Limitations

  • For now, the only install attributes managed are dockerfile instructions starting by RUN

They talk about MegaLinter

English articles

Article Author
MegaLinter Performance Tuning for Maximum Efficiency{target=_blank} Wes Dean{target=_blank}
10 MegaLinter Tips and Tricks Unlock its Full Potential{target=_blank} Wes Dean{target=_blank}
30 Seconds to Setup MegaLinter: Your Go-To Tool for Automated Code Quality{target=_blank} Peng Cao
Introducing MegaLinter: Streamlining Code Quality Checks Across Multiple Languages{target=_blank} Cloud Tuned{target=_blank}
Infrastructure as Code GitHub Codespace Template{target=_blank} Luke Murray{target=_blank}
5 ways MegaLinter upped our DevSecOps game{target=_blank} Wes Dean{target=_blank}
Achieve Code Consistency: MegaLinter Integration in Azure DevOps{target=_blank} Don Koning{target=blank} on Microsoft Tech Community{target=blank}
MegaLinter in Azure DevOps{target=_blank} James Cook{target=_blank}
Maximize your code consistency with Megalinter{target=_blank} Tor Ivar Asbølmo{target=blank} on codewithme.cloud{target=blank}
8 Tools to Scan Node.js Applications for Security Vulnerability{target=_blank} Chandan Kumar{target=blank} on GeekFlare.com{target=blank}
Use the Workflows JSON schema in your IDE{target=_blank} Google Cloud{target=_blank}
Level up your Unity Packages with CI/CD{target=_blank} RunningMattress{target=_blank}
Writing documentation as a champ in engineering teams{target=_blank} Gijs Reijn{target=_blank}
GitHub Actions: sharing your secrets with third-party actions{target=_blank} Constantin Bosse{target=blank} and Stephen Hosom{target=blank}
GitOps security topics you must address{target=_blank} Wiebe de Roos{target=_blank}
Talk about the Kotlin plugins Kover, Ktlint and Detekt. Made for the AmsterdamJUG meetup.{target=_blank} Simone de Gijt{target=_blank}
Linting - What is all the fluff about?{target=_blank} Neil Shepard{target=_blank}, University Of Sheffield
How to apply security at the source using GitOps{target=_blank} Edu Minguez{target=_blank}
How to linter basic things like trailing whitespaces and newlines{target=_blank} Nicolai Antiferov{target=_blank}
Open-source linters landscape in 2021{target=_blank} Cédric Teyton{target=_blank}
Node.js Coding Standard Tools with MegaLinter on Gitlab CI{target=_blank} Albion Bame{target=_blank}
Linting a Jekyll blog with MegaLinter{target=_blank} Alec Johnson{target=_blank}
MegaLinter sells his soul and joins OX Security{target=_blank} Nicolas Vuillamy{target=_blank}
Limit your technical debt and secure your code base using MegaLinter{target=_blank} Nicolas Vuillamy{target=_blank}

French articles

Article Author
MegaLinter{target=_blank} Stéphane Robert, 3DS OutScale{target=_blank}
MegaLinter: un linter pour les gouverner tous{target=_blank} Guillaume Arnaud, WeScale{target=_blank}
MegaLinter, votre meilleur ami pour un code de qualité{target=_blank} Thomas Sanson{target=_blank}

Japanese articles

Article Author
Try using MegaLinter{target=_blank} Takashi Minayaga{target=_blank}

Videos

<iframe width="560" height="315" src="https://www.youtube.com/embed/iBMWAk5QIfM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/KhkNf2tQ3hM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/SlKurrIsUls" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  • Code quality - Ep01 - MegaLinter, one linter to rule them all, by Bertrand Thomas
<iframe width="560" height="315" src="https://www.youtube.com/embed/NauVD4z-cMA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/hk950RUwIUA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
  • Ortelius Architecture Meeting, with a review of MegaLinter, by Steve Taylor{target=_blank} from Ortelius
<iframe width="560" height="315" src="https://www.youtube.com/embed/oegOSmVegiQ?start=1510" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/raCDpsP9O78" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Web Sites

Linters

Frequently Asked Questions

My repo CI already have linters and they're perfectly working, so why do I need MegaLinter ?

You can perfectly continue using your installed linters and deactivate them in .mega-linter.yml. For example, in a javascript project using eslint, you can configure MegaLinter with DISABLE: JAVASCRIPT. That way, you will benefit from both your installed linters but also from other MegaLinter linters checking JSON, YAML, Markdown, Dockerfile, Bash, spelling mistakes, dead URLs…

Ok but… how does it work ?

MegaLinter is based on Docker images containing either all linters, or just a selection of linters if you are using a MegaLinter flavor for a project using a specific language / format

The core architecture does the following:

  • Initialization
    • List all project files:
      • except files in ignored folders (node_modules, etc…)
      • except files not matching FILTER_REGEX_INCLUDE (if defined by user)
      • except files matching FILTER_REGEX_EXCLUDE (if defined by user)
    • Collect files for each activated linter, matching their own filtering criteria:
      • file extensions
      • file names
      • file content
      • <descriptor_or_linter_key>_FILTER_REGEX_INCLUDE (if defined by user)
      • <descriptor_or_linter_key>_FILTER_REGEX_EXCLUDE (if defined by user)
  • Linting
    • Parallelly, for each linter with matching files:
      • Call the linter on matching files (or the whole project for some linters like copy-paste detector)
      • Call activated linter-level reporters (GitHub Status Reporter…)
  • Finalization
    • Call activated global level reporters (GitHub Pull Request Comment Reporter, File.io Reporter, Email Reporter…)
    • Manage return code:
      • 0 if no error (or only non blocking errors if user defined DISABLE_ERRORS or <descriptor_or_linter_key>_DISABLE_ERRORS)
      • 1 if errors

How to contribute

Contributions to MegaLinter are very welcome, the more we're, the stronger MegaLinter is ! Please follow Contributing Guide

To help, you can also:

Special thanks

Maintainers

MegaLinter wouldn't be what it is without its great team of maintainers !

Contributors

Open-source teams

MegaLinter obviously would not exist without its linters and libraries, so many thanks to all the dedicated Open-Source teams maintaining all these awesome linters !

Super-Linter team

MegaLinter has been built on the ashes of a rejected Pull Request{target=blank} on GitHub Super-Linter{target=blank}.

Even if I disagree with their decision to remain in bash, the core team has always been nice and supporting during the time I was a Super-Linter contributor{target=_blank} :)

License

MegaLinter vs Super-Linter

The hard-fork of Super-Linter to be rewritten in Python isn't just a language switch: use of python flexibility and libraries allowed to define lots of additional functions described below

Security

MegaLinter hides many environment variables when calling the linters.

That way you need to trust only MegaLinter core code with your secrets, not the 100+ embedded linters !

Performances

  • MegaLinter Flavors allow to use smaller docker images, so the pull time is reduced
  • Thanks to python multiprocessing capabilities, linters are run in parallel, which is way faster than Super-Linter bash script who runs all linters in sequence
  • When the linter allows it, call it 1 time with N files, instead of calling N times with one file

More languages and formats linted

  • C*, *C++, Copy-Paste detection, Credentials, GraphQL, JSON & YAML with JSON schemas, Markdown tables formatting, Puppet, reStructuredText, Rust, Scala, Spell checker, Swift, Visual Basic .NET

Automatically apply formatting and fixes

MegaLinter can automatically apply fixes performed by linters, and push them to the same branch, or create a Pull Request that you can validate

This is pretty handy, especially for linter errors related to formatting (in that case, you don't have any manual update to perform)

Run locally

MegaLinter can be run locally thanks to mega-linter-runner

Reports

Capabilities

  • Accuracy: Count the total number of errors and not only the number of files in error
  • Show linter version and applied filters for each linter processed
  • Reports stored as artefacts on GitHub Action run or other remote files
    • General log
    • One report file by linter

Additional Reporters

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Screenshot

Enhanced Configuration

  • Assisted installation and configuration using a yeoman generator and JSON schemas for configuration file

Runner Install

Assisted configuration

  • Configure include and exclude regexes for a single language or linter: ex: JAVASCRIPT_FILTER_REGEX_INCLUDE (src)
  • Configure additional CLI arguments for a linter: ex: JAVASCRIPT_ES_ARGUMENTS "--debug --env-info"
  • Configure non blocking errors for a single language or linter: ex: JAVASCRIPT_DISABLE_ERRORS
  • Simplify languages and linters variables
    • ENABLE = list of languages and formats to apply lint on codebase (default: all)
    • ENABLE_LINTERS = list of linters to apply lint on codebase (default: all)
    • DISABLE = list of languages and formats to skip (default: none)
    • DISABLE_LINTERS = list of linters to skip (default: none)
    • Variables VALIDATE_XXX are still taken in account (but should not be used in association with ENABLE and DISABLE variables)

Enhanced Documentation

HTML doc home

  • One page per linter documentation :
    • All variables that can be used with this linter
    • List of file extensions, names and filters applied by the linter
    • Link to MegaLinter default linter configuration
    • Link to linter Web-Site
    • Link to official page explaining how to customize the linter rules
    • Link to official page explaining how to disable rules from source comments
    • Examples of linter command line calls behind the hood
    • Help command text
    • Installation commands

HTML doc linter

  • Installation links for related IDEs

HTML doc IDE

  • README
    • Separate languages, formats and tooling formats in the linters table
    • Add logos for each descriptor

Plugins management

For linters less commonly used, MegaLinters offers a plugins architecture so anyone can publish plugins

Simplify architecture and evolutive maintenance

  • Refactoring runtime in Python, for easier handling than bash thanks to classes and python modules
  • Everything related to each linter in a single descriptor YML file
    • easier evolutive maintenance
    • less conflicts to manage between PRs.
    • Few special cases require a python linter class)
  • Default behaviours for all linters, with possibility to override part of them for special cases
  • Hierarchical architecture: Apply fixes and new behaviours to all linters with a single code update
  • Documentation as code
    • Generate linters tables (ordered by type: language, format & tooling format) and include it in README. (see result)
    • Generate one markdown file per Linter, containing all configuration variables, infos and examples (See examples)
  • Automatic generation of Dockerfile using YML descriptors, always using the linter latest version
    • Dockerfile commands (FROM, ARG, ENV, COPY, RUN )
    • APK packages (linux)
    • NPM packages (node)
    • PIP packages (python)
    • GEM packages (ruby)
    • Phive packages (PHP)
  • Have a centralized exclude list (node_modules,.rbenv, etc…)

Improve robustness & stability

  • Test classes for each capability
  • Test classes for each linter: Automatic generation of test classes using .automation/build.py
  • Setup code coverage codecov
  • Development CD / CI
    • Validate multi-status on PR inside each PR (posted from step "Run against all code base")
    • Run test classes and code coverage with pytest during validation GitHub Action
    • Validate descriptor YML files with json schema during build
    • Automated job to upgrade linters to their latest stable version

changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased] (beta, main branch content)

Note: Can be used with oxsecurity/megalinter@beta in your GitHub Action mega-linter.yml file, or with oxsecurity/megalinter:beta docker image

  • Core

  • New linters

  • Disabled linters

  • Media

  • Linters enhancements

  • Fixes

  • Reporters

  • Doc

  • Flavors

  • CI

  • mega-linter-runner

  • Linter versions upgrades (N)

[v8.4.0] - 2024-01-26

[v8.3.0] - 2024-11-23

  • Core

    • Display command log (truncated to 250 chars) even when LOG_LEVEL is not DEBUG
    • Allow to replace an ENV var value with the value of another ENV var before calling a PRE_COMMAND (helps for tflint run from GitHub Enterprise)
    • Fix handling of git submodule paths
  • Fixes

    • trivy: retry in case of BLOB_UNKNOWN while downloading vulnerability list
  • Reporters

    • Fix UpdatedSourcesReporter when APPLY_FIXES is list (array)
    • Fix AzureCommentReporter when the repo is not found: fallback using BUILD_REPOSITORY_ID. (+ disable space replacement in repo name with AZURE_COMMENT_REPORTER_REPLACE_WITH_SPACES: false)
  • CI

    • Fix Docker mirroring job for release context
    • Remove max parallel jobs for release linters workflow
  • Linter versions upgrades (13)

[v8.2.0] - 2024-11-17

  • Media

  • Linters enhancements

    • detekt Enable SARIF output + count errors
    • lintr: Support files in subdirectories, fix unit tests
    • phpcs: Activate APPLY_FIXES
    • Salesforce linters: Add SF_CLI_DISABLE_AUTOUPDATE for SF CLI JIT plugins
    • trivy: handle retry if failed to download Java DB is detected
    • tsqllint Re-enabled after .net 8 and security updates
  • Fixes

    • Add message in PR comment if FAIL_IF_UPDATED_SOURCES is triggered
    • Fix linting errors in GitHub Actions template
  • Reporters

    • UpdatedSourcesReporter will git commit & push fixed files to source branch if APPLY_FIXES is set
    • Fix AzureCommentReporter not adding comments to PR
    • Fix AzureCommentReporter fails when target repo contains spaces
  • Doc

    • Updated documentation with Azure central pipeline use case
    • Update DevSkim documentation to show a valid exclusion config file
    • Note about risky rules and how to fix rule violations with PHP-CS-Fixer
  • CI

    • Also prune volumes before pulling and pushing to docker hub
    • Externalize mirroring from ghcr.io to docker hub in another workflow to avoid memory issues
    • Squash docker images to have less layers and size
    • Comment jobs related to GitHub Worker images, as CodeTotal is not actively maintained
    • Make gitpod workflow not blocking until uv install is fixed
    • Update stale comment
    • Try several times to embed trivy db during Docker build, as a workaround to the random failures
    • Wait 10 secondes instead of 1 before retrying a failing test method, to avoid race conditions
  • Linter versions upgrades (104)

[v8.1.0] - 2024-10-13

[v8.0.0] - 2024-08-19

Upgrade to v8 Video

[v7.13.0] - 2024-07-06

[v7.12.0] - 2024-06-02

[v7.11.1] - 2024-04-23

  • Fixes

    • Implement fallback in case git diff does not work with merge-base
  • Linter versions upgrades

[v7.11.0] - 2024-04-23

[v7.10.0] - 2024-03-10

[v7.9.0] - 2024-02-11

  • Core

    • Upgrade actions/checkout and stefanzweifel/git-auto-commit-action in generator template workflow, by @Jayllyz in #3327
    • Upgrade base python image to python:3.12.2-alpine3.19
  • Fixes

    • Format powershell linter output into terminal-wide table, and count errors, by @efrecon in #3318
    • Allow active_only_if_file_found to work in specified subdirectory (_DIRECTORY), fixes #2873, by @TimothyEarley in #3323
    • Activate CI servers reporters only if we find a related default env variable, by @nvuillam in #3321
  • Doc

    • Update copyright year to 2024, by @Jayllyz in #3339
  • CI

    • Free more disk space before docker build
    • Upgrade peter-evans/create-pull-request from v5 to v6 in GitHub Actions workflows
  • Linter versions upgrades

[v7.8.0] - 2024-01-21

<iframe width="560" height="315" src="https://www.youtube.com/embed/SlKurrIsUls" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

[v7.7.0] - 2023-12-09

[v7.6.0] - 2023-11-19

[v7.5.0] - 2023-10-29

  • Core

    • mega-linter-runner: Convert to ES6 and upgrade npm dependencies. Node 18 minimum version is now required.
    • Allow to define COMPILER_ONLY virtual package as cargo dependency in descriptors to embed rust compiler in the Dockerfile
    • Optimize @generated marker scanning (#2654)
    • Upgrade to python 3.12.0
  • Media

  • Fixes

    • build.py: Remove exclusivity between pip, gem & cargo packages
    • Salesforce linters: Switch sfdx-cli to @salesforce/cli
    • Fixed issue with actionlint throwing an error on if statements in the generated workflow file
    • Added default .devskim.json to mitigate errors introduced when no config exists
  • Doc

    • Display list of articles from newest to oldest
    • Fix incorrect environment variable in djlint docs
    • Improve lychee documentation to add an example of .lycheeignore
  • CI

    • Add the other maintainers globally to the CODEOWNERS file (#3008)
    • Free disk space earlier in the process to avoid failure during docker build
    • Set flavors-stats.json as a generated file in .gitattributes (#3023)
    • Update and fix our ChatOps automations to only run on pull request comments, by @echoix in #3034
    • Use App::cpm to install perlcritic faster, and clean .perl-cpm cache, by @echoix in #3036
    • Add failure message in ChatOps build-command and Slash dispatcher, by @echoix in #3037
  • Linter versions upgrades

[v7.4.0] - 2023-09-22

[v7.3.0] - 2023-08-10

  • Features

    • Allow to define linter_keyCOMMANDREMOVE_ARGUMENTS to remove a command line argument internally added by MegaLinter
  • Fixes

    • Replace https://megalinter.io/config-file by https://megalinter.io/latest/config-file to avoid lychee 404 detection
    • Improve docs for posting comments to PRs in GitHub Enterprise
  • CodeTotal

    • Redis reporter: Return URL of linter icons when available, in property iconPngUrl
    • Allow to run CodeTotal with a single command npx mega-linter-runner@latest --codetotal , that opens CodeTotal in Web Browser once started
  • Linter versions upgrades

[v7.2.1] - 2023-07-26

  • Fixes

    • Fix TAP reporter (3 real dots instead if 3 dots character)
    • Call trufflehog with --only-verified to avoid false positives in .git/config
  • Linter versions upgrades

[v7.2.0] - 2023-07-25

[v7.1.0] - 2023-06-11

[v7.0.4] - 2023-05-31

  • Core

    • Allow to define linterkey_UNSECURED_ENV_VARIABLES for specific linters to make them visible when necessary (ex: GITHUB_TOKEN for TERRAFORM_TFLINT)
  • Documentation

  • Linter versions upgrades

[v7.0.3] - 2023-05-29

  • Linter enhancements & fixes

    • New variable TERRAFORM_TFLINT_SECURED_ENV with default value true. Set to false to allow tflint --init to access your env vars.
  • Core

    • Secure PRE_COMMANDS and POST_COMMANDS by default
    • Can be disabled with secured_env: false in the command definition
    • Manage v6 retrocompatibility with FILTER_REGEX_INCLUDE and FILTER_REGEX_EXCLUDE expression
  • Linter versions upgrades

[v7.0.2] - 2023-05-27

  • Quick Fix mega-linter-runner --upgrade (Warning: bug with npm, not publish yet in mega-linter-runner)
    • Dead link to configuration.md
    • Regex issue with megalinter-reports

[v7.0.0] - 2023-05-27

To upgrade to MegaLinter v7, run npx mega-linter-runner@latest --upgrade , comment here if you have any issue :)

[v6.22.2] - 2023-04-03

  • Core

    • Fix failure of AzureCommentReporter when there is no pull request found in ENV vars
    • Fix HTML comment appearing in Azure Pull Request mail notifications
  • Linter versions upgrades

[v6.22.1] - 2023-04-02

  • Core

    • Changed vars in AzureCommentReporter to reflects official Azure DevOps naming convention + fallback to keep backward compatibility, see #2509
    • Update AzureCommentReport to have only one MegaLinter thread instead of a new one for each run of MegaLinter
  • Documentation

    • Updated usage scenario for Azure DevOps, see #2509
  • Linter versions upgrades

[v6.22.0] - 2023-04-01

[v6.21.0] - 2023-03-26

[v6.20.1] - 2023-03-07

[v6.20.0] - 2023-03-05

  • Core

    • Upgrade base docker image from python:3.10.4-alpine3.16 to python:3.11.1-alpine3.17
    • Build: remove folder contents before generating Dockerfile files for each linter in generate_linter_dockerfiles(), by @bdovaz in #2294
    • Build: remove folder contents before generating test classes for each linter in generate_linter_test_classes(), by @bdovaz in #2294
    • Build: automatically update the linter list used in the matrix of several of the workflows, by @bdovaz in #2294
    • Test: create a testing architecture for format/autofix linters, by @bdovaz in #2294
    • Test: create or adapt input files for format/autofix tests, by @bdovaz in #2294
    • Test: created specific test folders for linters that need them because they can't share them, by @bdovaz in #2294
    • Added rubocop-rake RubyGem for linting Rake files with RuboCop
  • Fixes

    • Correctly generate class names and test class files for each linter when the linter descriptor defines the attribute "name", by @bdovaz in #2294
    • Removed the default powershell templates TEMPLATES/.powershell-formatter.psd1 and TEMPLATES/.powershell-psscriptanalyzer.psd1. Having these templates caused all rules to be ignored as the settings aren't incremental but absolute, by @bdovaz in #2294
    • Added cli_lint_fix_arg_name parameter to dotnet format descriptor as without it, autofix doesn't work, by @bdovaz in #2294
    • Created BicepLinter class to add DOTNET_SYSTEM_GLOBALIZATION_INVARIANT environment variable to avoid problems with ICU packages, by @bdovaz in #2294
    • Modified npm-groovy-lint descriptor to add --failon parameter to only fail with error and not info which is the default value, by @bdovaz in #2294
    • Added cli_lint_fix_arg_name parameter to powershell formatter descriptor as without it, autofix doesn't work, by @bdovaz in #2294
    • Created ProtolintLinter class to fix the problem that returns exit code 1 when it encounters a problem to correct even though it corrects it correctly, by @bdovaz in #2294
    • Concatenate --output parameter correctly to xmllint linter, by @bdovaz in #2294
    • Modified the .pre-commit-hooks.yaml for megalinter-full so the containername argument is correctly split between two lines, by @drbothen #2411
    • Avoid jscpd default config to detect copy pastes in image files
    • Move utilstest to megalinter folder to avoid import issues
    • Replace deprecated spectral package, by @bdovaz in by @bdovaz in https://github.com/oxsecurity/megalinter/pull/2340
    • Generate correct urls for packages with fixed versions, by @bdovaz in https://github.com/oxsecurity/megalinter/pull/2339
  • Documentation

    • Change swiftlint example that did not correctly reflect the --fix parameter, by @bdovaz in #2294
    • Change in TSX eslint descriptor the urls as they were not correct, by @bdovaz in #2294
    • Change in TYPESCRIPT eslint descriptor the urls as they were not correct, by @bdovaz on #2294
    • Use mkdocs-glightbox to allow to click on images and display them in full screen
  • CI

    • Use docker/build-push-action to build docker images and akhilerm/tag-push-action to release by retagging and pushing beta images instead of rebuilding them
    • Authenticate to GitHub API during docker build to avoid reaching limits
    • Remove apk go package install in images where possible to decrease image sizes, by @echoix in https://github.com/oxsecurity/megalinter/pull/2318
    • Create a slash PR bot to run ./build.sh command manually on PRs, by @echoix in #2353 and #2381
    • Limit parallel execution of large job matrix in the workflows with max-parallel in order to keep runners available for other jobs, by @echoix in #2397
  • Linter versions upgrades

[v6.19.0] - 2023-02-05

[v6.18.0] - 2023-01-07

  • New linters

  • Core

    • Upgrade to dotnet 6.0, by @lexstatic in #1680
      • dotnet-format requires .sln, .csproj or .vbproj in the repo
    • Switch to docker buildx, by @bdovaz in #2199
    • Drone CI enhancements, by @NebulaOnion in #2195
      • Config generator tool now supports Drone CI
      • Added information about how to change trigger rules for Drone CI workflow
    • Unify the drawing of badges in documentation, by @bdovaz in #2220
  • Fixes

    • Don't write output files if REPORT_OUTPUT_FOLDER is none
    • Fix Perl linter skipping files
  • New MegaLinter plugins

    • linkcheck: Plugin to check and validate Markdown links, by @shiranr
    • salt-lint: Checks Salt State files (SLS) for best practices and behavior that could potentially be improved, by @grimmjo
  • New article talking about MegaLinter: Writing documentation as a champ in engineering teams (deleted), by @gijsreyn

  • Linter versions upgrades

[v6.17.0] - 2022-12-27

  • New linters

    • Add PowerShell formatter, by @bdovaz (#2176)
  • Documentation

    • Improve meta tags in HTML documentation
    • Clarify how npm-package-json-lint files can be ignored, by @bdovaz (#2184)
  • Linter versions upgrades

[v6.16.0] - 2022-12-24

  • New linters

  • Evolutions

    • Upgrade to alpine 3.16
    • Disable php7 & upgrade php8 to php81
    • Add Makefile linters to documentation flavor
    • PowershellLinter autofix capability, by @bdovaz (#2175)
    • Allow local files with EXTENDS configuration, by @bdovaz (#2151)
    • Add Trivy config file parameters, by @bdovaz (#2154)
  • Fixes

    • Change reporter text for better UX, by @ashokm (#2168)
    • Remove workspace prefix from aggregate sarif report, by @janderssonse (#2119)
    • CSpell file name linting doesn't use (custom) CSpell configuration (#2058)
    • HTML email not rendering correctly (#2120). Set REPORTERS_MARKDOWN_TYPE to simple to avoid external images in PR/MR markdown comments.
    • mega-linter-runner: Fix Value for container-name of type String required, by @AlbanAndrieu (#2123
    • Use warning emoji in reporters, by @ashokm (#2156)
    • Fix branding to use the correct 'OX Security' name, by @ashokm
  • Doc

    • Enclose System.TeamProject in Azure Pipelines, by @ashokm (#2131)
    • Better contributing docs, by @bdovaz (#2162)
  • Linter versions upgrades

[v6.15.0] - 2022-11-23

[v6.14.0] - 2022-11-06

[v6.13.0] - 2022-10-24

[v6.12.0] - 2022-10-16

[v6.11.1] - 2022-10-03

  • Remove no-space-check from MegaLinter default .pylintrc file (#1923)

[v6.11.0] - 2022-10-02

  • Linters

  • Core

    • Improve support for devcontainers by using Python base image
      • Fixed Python version in devcontainer from 3.9 -> 3.10
      • Fix build command on linux (thanks a lot to Edouard Choinière for the investigation and solution !)
    • Azure Comments reporter - Change status when all tests pass (#1915)
  • Doc

    • Document the -f argument to mega-linter-runner (#1895)
    • Fix a typo in documentation of bash-exec linter (#1892)
  • Linter versions upgrades

[v6.10.0] - 2022-09-19

  • Add git-lfs in Docker image to handle large files in git repositories

  • MegaLinter Docker images size improvements

    • Remove NPM cache
    • Remove Cargo cache
    • Remove rustup when clippy isn't embedded in the image
    • Remove npm packages useless files
  • Linter versions upgrades

[v6.9.1] - 2022-09-11

  • Linters

  • Core

    • Improve build performances and docker images sizes (reduce from 117 to 36 layers)
      • Use BUILDKIT
      • Join RUN instructions
      • Optimize core Dockerfile items
      • Clean npm, python and cargo caches
    • Create a venv for each python-based linter to avoid issues with dependencies
    • Fix broken link to documentation when using v6
  • Linter versions upgrades

Note: MegaLinter 6.9.0 release has been cancelled: it was fine but the docker image sizes were not optimized enough.

[v6.8.0] - 2022-09-04

  • Run MegaLinter pre-commit hooks serially (#1826).
  • Replace deprecated StandardJS VS Code extension with the newer official version
  • When SARIF_REPORTER is active, use sarif-fmt to convert SARIF into text for console and text reporters (#1822).
  • Count checkstyle errors (#1820)

  • Linter versions upgrades

[v6.7.1] - 2022-08-28

  • Fix Azure Comments reporter: Use BuildId to build artifacts url
  • Fix actionlint install command

[v6.7.0] - 2022-08-28

  • Linters

    • Add PMD java linter
  • Azure Pipelines integration enhancements

    • Update installation instructions
    • Console reporter: manage collapsible groups for easier display & navigation in job logs (requires CI=true and TF_BUILD=true sent as env variables)
    • Azure comments reporter (see documentation)
  • Performances improvements

    • When running linters in parallel, run in the same process only the linters from same descriptor and that can update the same sources (to avoid concurrency). Other linters can be run independently.
    • Define linter_speed of linter descriptors (default 3). Can be from 1 (super slow) to 5 (super fast). This is used to optimize the processing order of linters.
  • Fixes

    • Fix: Properly match files_sub_directory as a prefix instead of partial string matching (#1765)
    • Match regex without workspace and sub_directory
    • Remove config variables that aren't applicable to linters analyzing all files or all other linters files
  • Linter versions upgrades

[v6.6.0] - 2022-08-21

[v6.5.0] - 2022-08-15

  • npm-groovy-lint: Use Cli lint mode list_of_files for much better performances
  • Disable proselint by default if .proselintrc file isn't found

  • Linter versions upgrades

[v6.4.0] - 2022-08-12

  • Add REPOSITORY_CHECKOV in all flavors

  • New config variables

    • MEGALINTER_FILES_TO_LINT: Comma-separated list of files to analyze. Using this variable will bypass other file listing methods (#808)
    • SKIP_CLI_LINT_MODES: Comma-separated list of cli_lint_modes. To use if you want to skip linters with some CLI lint modes (ex: file,project). Available values: file,cli_lint_mode,project.
  • mega-linter-runner:

    • Allow MEGALINTER_FILES_TO_LINT to be sent as positional arguments
    • New argument --filesonly that sends SKIP_CLI_LINT_MODES=project
    • Example: mega-linter-runner --flavor python --release beta --filesonly megalinter/config.py megalinter/flavor_factory.py megalinter/MegaLinter.py
  • Fixes

    • Fix SARIF when a run is missing a results list (#1725)
    • Fix missing quotes for Powershell script analyzer (#1728)
  • Linter versions upgrades

[v6.3.0] - 2022-08-07

  • Linters

    • Add REPOSITORY_CHECKOV to benefit from all checks and not only terraform ones. TERRAFORM_CHECKOV will be deprecated in a next major version
    • Add djlint (HTML_DJLINT) to lint HTML files (html, django, jinja, nunjucks, handlebars, golang, angular)
    • Upgrade jsonlint to use maintained package @prantlf/jsonlint]([https://www.npmjs.com/package/@prantlf/jsonlint) + use cli_lint_mode list_of_files to improve performances
  • Core

    • Support for automatic removal of Docker container when linting is finished
    • Fix SARIF when endColumn is 0 (#1702)
    • Use dynamic REPORT_FOLDER value for output files for SALESFORCE and COPYPASTE descriptors
    • Fix collapsible sections in Gitlab console logs
    • Manage ignore files (like .secretlintignore or .eslintignore)
      • Define ignore argument for client in descriptors
      • Define ignore file name in descriptors (overridable with IGNOREFILE_NAME at runtime)
      • Update documentation generation to take in account this new configuration
  • Linter versions upgrades

[v6.2.1] - 2022-08-01

  • Fix blocking bug in MegaLinter v6.2.0 core (#1684 and #1685)

  • Linter versions upgrades

    • checkstyle from 10.3.1 to 10.3.2 on 2022-08-01
    • flake8 from 5.0.0 to 5.0.1 on 2022-08-01
    • checkov from 2.1.82 to 2.1.83 on 2022-08-01

[v6.2.0] - 2022-07-31

  • Core

    • Fix mega-linter-runner --install template (#1662)
    • Use REPORT_OUTPUT_FOLDER: none to not generate report files
    • Add info in doc about CLI_LINT_MODE and about how to ignore files when cli_lint_mode is project
    • Fix bug that disables generation of megalinter.log file in most cases
    • Fixes about JSON Schema (#1621)
    • Remove redundant line separator after generated table (#1650)
    • Avoid flavor suggestion message when only REPOSITORY linters aren't found
  • Linters

    • Add checkmake to lint Makefile
    • Disable SemGrep by default if REPOSITORY_SEMGREP_RULESETS isn't defined.
    • Avoid cspell to lint all files. Lint only other linter files (#1648)
    • Fix revive installation command
    • New default config for gitleaks with useDefault=true
  • Linter versions upgrades

[v6.1.0] - 2022-07-19

  • Improve console logs by using collapsible sections in GitHub Actions and Gitlab CI (disable by defining CONSOLE_REPORTER_SECTIONS: false)
  • Define CLEAR_REPORT_FOLDER=true to empty report folder at the beginning of each run (#1502)
  • Improve SARIF output

    • Replace CI paths in logs
    • Add missing required properties so SARIF is valid
    • Add MegaLinter information in SARIF linter runs
    • Allow to select linters to activate SARIF for, using SARIF_REPORTER_LINTERS
    • Fix issue when a linter is used in multiple SARIF lint results
  • Linter versions upgrades

    • cfn-lint from 0.61.2 to 0.61.3 on 2022-07-19
    • checkov from 2.1.57 to 2.1.59 on 2022-07-18
    • checkov from 2.1.59 to 2.1.60 on 2022-07-19
    • cspell from 6.2.3 to 6.3.0 on 2022-07-18
    • eslint from 8.19.0 to 8.20.0 on 2022-07-17
    • golangci-lint from 1.46.2 to 1.47.0 on 2022-07-19
    • jscpd from 3.3.26 to 3.4.5 on 2022-07-19
    • markdownlint from 0.31.1 to 0.32.0 on 2022-07-17
    • pylint from 2.14.4 to 2.14.5 on 2022-07-18

[v6.0.5] - 2022-07-16

  • Fix mega-linter-runner --upgrade so it also updates report folder to megalinter-reports in GitHub Actions Workflows #1609
  • Fix documentation and templates to use megalinter-reports folder everywhere
  • Workaround for python-markdown issue https://github.com/radude/mdx_truly_sane_lists/issues/9

  • Linter versions upgrades

    • checkov from 2.1.54 to 2.1.56 on 2022-07-15
    • checkov from 2.1.56 to 2.1.57 on 2022-07-16
    • gitleaks from 8.8.7 to 8.8.12 on 2022-07-16
    • kics from 1.5.11 to 1.5.12 on 2022-07-16
    • protolint from 0.38.2 to 0.38.3 on 2022-07-15
    • sqlfluff from 1.2.0 to 1.2.1 on 2022-07-16
    • terraform-fmt from 1.2.4 to 1.2.5 on 2022-07-15
    • terragrunt from 0.38.4 to 0.38.5 on 2022-07-15

[v6.0.4] - 2022-07-14

  • Fix count of errors when using SARIF reporter
  • DevSkim: Ignore megalinter-reports by default (#1603)
  • Load JSON when list of objects is defined in an ENV var (#1605)
  • AutoFix pre_commands using npm install (1258)

  • Linter versions upgrades

    • checkov from 2.1.43 to 2.1.54 on 2022-07-14
    • git_diff from 2.34.2 to 2.34.4 on 2022-07-14
    • phpstan from 1.8.0 to 1.8.1 on 2022-07-14
    • sqlfluff from 1.1.0 to 1.2.0 on 2022-07-14
    • syft from 0.50.0 to 0.51.0 on 2022-07-14

[v6.0.3] - 2022-07-11

  • mega-linter-runner: Update query args when opening OX Security
  • Fix mega-linter-runner doesn't default to v6 for flavors (1596)

[v6.0.0] - 2022-07-10

  • Breaking changes: you must run npx mega-linter-runner --upgrade to use MegaLinter v6

  • Core architecture

    • New reporter SARIF_REPORTER that aggregates all SARIF output files into a single one
      • Correct SARIF files for known format errors
    • New config variable DISABLE_LINTERS_ERRORS to define a list of linters that will be considered as non blocking
    • Upgrade base docker image to python:3.10.4-alpine3.15
    • Rename default report folder from report to megalinter-reports
    • Display GitHub stars in linters summary table in documentation
  • Linters:

    • Add DevSkim security linter by Microsoft
    • Add dustilock to check for dependency confusion attacks with node and python packages
    • Add gitleaks to lint git repository
    • Add goodcheck as regex-based linter
    • Add PMD to lint java files (disabled for now)
    • Add semgrep as regex-based linter with many community rules
    • Add syft to generate SBOM (Software Bill Of Materials)
    • Add trivy security linter
    • Remove dockerfilelint, as it'sn't maintained anymore and hadolint contains all its rules
    • Remove rstfmt as it'sn't maintained anymore
    • SARIF management for:
      • bandit
      • checkov
      • checkstyle
      • cfn-lint
      • devskim
      • eslint
      • gitleaks
      • hadolint
      • ktlint
      • npm-groovy-lint
      • psalm
      • semgrep
      • secretlint
      • revive
      • terrascan
      • tflint
      • trivy
  • Descriptors:

    • New flavor Security
    • New descriptor repository: contains DevSkim, dustilock, gitleaks, secretlint, semgrep, syft, trivy
    • Remove CREDENTIALS and GIT descriptors
  • mega-linter-runner

    • --upgrade option can now upgrade repos MegaLinter config to v6
    • Create/update local .gitignore file when installing / updating MegaLinter using mega-linter-runner
    • Propose to test ox.security service
    • Switch from npm to yarn
  • Dev architecture

    • Manage offline run of bash build.sh for those who want to code in planes :)
    • Automate update of CHANGELOG.md after release (beta)
    • Accelerate internal CI testing performances
  • Linter versions upgrades

    • actionlint from 1.6.13 to 1.6.15 on 2022-07-10
    • black from 22.3.0 to 22.6.0 on 2022-07-10
    • cfn-lint from 0.61.1 to 0.61.2 on 2022-07-10
    • checkov from 3.9 to 2.1.43 on 2022-07-10
    • checkstyle from 10.3 to 10.3.1 on 2022-07-10
    • clippy from 0.1.61 to 0.1.62 on 2022-07-10
    • cspell from 6.1.2 to 6.2.3 on 2022-07-10
    • eslint-plugin-jsonc from 2.3.0 to 2.3.1 on 2022-07-10
    • eslint from 8.18.0 to 8.19.0 on 2022-07-10
    • git_diff from 2.30.3 to 2.34.2 on 2022-07-10
    • phpstan from 1.7.15 to 1.8.0 on 2022-07-10
    • pylint from 2.14.3 to 2.14.4 on 2022-07-10
    • rubocop from 1.30.1 to 1.31.2 on 2022-07-10
    • secretlint from 4.1.0 to 5.2.3 on 2022-07-10
    • snakemake from 7.8.3 to 7.8.5 on 2022-07-10
    • spectral from 5.6.0 to 5.9.2 on 2022-07-10
    • sqlfluff from 1.0.0 to 1.1.0 on 2022-07-10
    • terraform-fmt from 1.2.3 to 1.2.4 on 2022-07-10
    • terragrunt from 0.38.1 to 0.38.4 on 2022-07-10
    • terrascan from 1.14.0 to 1.15.2 on 2022-07-10
    • v8r from 0.6.1 to 0.13.0 on 2022-07-10
    • yamllint from 1.26.3 to 1.27.1 on 2022-07-10

[v5.17.0] - 2022-07-10

  • Message to propose users to upgrade to v6

[v5.16.1] - 2022-06-26

  • Quick fix release management

[v5.16.0] - 2022-06-26

  • Support for named Docker container.

  • Linter versions upgrades

[v5.15.0] - 2022-06-23

  • OX Security branding and pre-announcement
  • Linter versions upgrades
    • cfn-lint from 0.61.0 to 0.61.1 on 2022-06-22
    • checkov from 2.0.1209 to 2.0.1210 on 2022-06-14
    • checkov from 2.0.1210 to 2.0.1212 on 2022-06-15
    • checkov from 2.0.1212 to 2.0.1217 on 2022-06-15
    • checkov from 2.0.1217 to 2.0.1218 on 2022-06-17
    • checkov from 2.0.1218 to 2.0.1219 on 2022-06-19
    • checkov from 2.0.1219 to 2.0.1226 on 2022-06-22
    • checkov from 2.0.1226 to 2.0.1230 on 2022-06-22
    • eslint from 8.17.0 to 8.18.0 on 2022-06-19
    • ktlint from 0.45.2 to 0.46.0 on 2022-06-19
    • ktlint from 0.46.0 to 0.46.1 on 2022-06-22
    • phpcs from 3.6.2 to 3.7.0 on 2022-06-14
    • phpcs from 3.7.0 to 3.7.1 on 2022-06-19
    • phpstan from 1.7.12 to 1.7.13 on 2022-06-14
    • phpstan from 1.7.13 to 1.7.14 on 2022-06-15
    • phpstan from 1.7.14 to 1.7.15 on 2022-06-22
    • powershell from 7.2.4 to 7.2.5 on 2022-06-22
    • prettier from 2.6.2 to 2.7.0 on 2022-06-15
    • prettier from 2.7.0 to 2.7.1 on 2022-06-17
    • pylint from 2.14.1 to 2.14.2 on 2022-06-15
    • pylint from 2.14.2 to 2.14.3 on 2022-06-19
    • snakefmt from 0.6.0 to 0.6.1 on 2022-06-14
    • snakemake from 7.8.2 to 7.8.3 on 2022-06-22
    • sql-lint from 0.0.19 to 0.0.20 on 2022-06-19
    • sql-lint from 0.0.20 to 1.0.0 on 2022-06-22
    • sqlfluff from 0.13.2 to 1.0.0 on 2022-06-19
    • terraform-fmt from 1.2.2 to 1.2.3 on 2022-06-17
    • terragrunt from 0.37.3 to 0.37.4 on 2022-06-15
    • terragrunt from 0.37.4 to 0.38.0 on 2022-06-19

[v5.14.0] - 2022-06-12

  • Local plugins support & documentation
  • Update R lintr documentation

  • Linter versions upgrades

    • actionlint from 1.6.12 to 1.6.13 on 2022-05-20
    • cfn-lint from 0.60.0 to 0.60.1 on 2022-05-20
    • cfn-lint from 0.60.1 to 0.61.0 on 2022-06-01
    • checkov from 2.0.1141 to 2.0.1143 on 2022-05-17
    • checkov from 2.0.1143 to 2.0.1147 on 2022-05-20
    • checkov from 2.0.1147 to 2.0.1150 on 2022-05-22
    • checkov from 2.0.1150 to 2.0.1158 on 2022-05-24
    • checkov from 2.0.1158 to 2.0.1159 on 2022-05-24
    • checkov from 2.0.1159 to 2.0.1161 on 2022-05-25
    • checkov from 2.0.1161 to 2.0.1162 on 2022-05-27
    • checkov from 2.0.1162 to 2.0.1174 on 2022-05-30
    • checkov from 2.0.1174 to 2.0.1175 on 2022-05-31
    • checkov from 2.0.1175 to 2.0.1177 on 2022-05-31
    • checkov from 2.0.1177 to 2.0.1182 on 2022-05-31
    • checkov from 2.0.1182 to 2.0.1185 on 2022-06-02
    • checkov from 2.0.1185 to 2.0.1188 on 2022-06-03
    • checkov from 2.0.1188 to 2.0.1206 on 2022-06-08
    • checkov from 2.0.1206 to 2.0.1207 on 2022-06-09
    • checkov from 2.0.1207 to 2.0.1209 on 2022-06-10
    • checkstyle from 10.2 to 10.3 on 2022-05-30
    • clippy from 0.1.60 to 0.1.61 on 2022-05-20
    • coffeelint from 5.2.8 to 5.2.9 on 2022-05-17
    • cspell from 5.20.0 to 5.21.0 on 2022-05-20
    • cspell from 5.21.0 to 5.21.1 on 2022-05-21
    • cspell from 5.21.1 to 6.0.0 on 2022-05-22
    • cspell from 6.0.0 to 6.1.0 on 2022-05-31
    • cspell from 6.1.0 to 6.1.1 on 2022-06-03
    • cspell from 6.1.1 to 6.1.2 on 2022-06-09
    • eslint-plugin-jsonc from 2.2.1 to 2.3.0 on 2022-05-28
    • eslint from 8.15.0 to 8.16.0 on 2022-05-21
    • eslint from 8.16.0 to 8.17.0 on 2022-06-08
    • golangci-lint from 1.46.1 to 1.46.2 on 2022-05-20
    • graphql-schema-linter from 3.0.0 to 3.0.1 on 2022-05-22
    • kics from 1.5.8 to 1.5.9 on 2022-05-27
    • kics from 1.5.9 to 1.5.10 on 2022-06-09
    • mypy from 0.950 to 0.960 on 2022-05-27
    • mypy from 0.960 to 0.961 on 2022-06-08
    • phpstan from 1.6.8 to 1.6.9 on 2022-05-22
    • phpstan from 1.6.9 to 1.7.0 on 2022-05-24
    • phpstan from 1.7.0 to 1.7.1 on 2022-05-24
    • phpstan from 1.7.1 to 1.7.2 on 2022-05-27
    • phpstan from 1.7.11 to 1.7.12 on 2022-06-09
    • phpstan from 1.7.2 to 1.7.3 on 2022-05-30
    • phpstan from 1.7.3 to 1.7.6 on 2022-05-31
    • phpstan from 1.7.6 to 1.7.7 on 2022-05-31
    • phpstan from 1.7.7 to 1.7.8 on 2022-06-02
    • phpstan from 1.7.8 to 1.7.9 on 2022-06-03
    • phpstan from 1.7.9 to 1.7.11 on 2022-06-08
    • powershell from 7.2.3 to 7.2.4 on 2022-05-20
    • pylint from 2.13.9 to 2.14.0 on 2022-06-02
    • pylint from 2.14.0 to 2.14.1 on 2022-06-08
    • rstcheck from 5.0.0 to 6.0.0 on 2022-06-08
    • rubocop from 1.29.1 to 1.30.0 on 2022-05-27
    • rubocop from 1.30.0 to 1.30.1 on 2022-06-08
    • scalafix from 0.10.0 to 0.10.1 on 2022-06-10
    • sfdx-scanner-apex from 2.13.2 to 2.13.4 on 2022-05-27
    • sfdx-scanner-aura from 2.13.2 to 2.13.4 on 2022-05-27
    • sfdx-scanner-lwc from 2.13.2 to 2.13.4 on 2022-05-27
    • shfmt from 3.5.0 to 3.6.0 on 2022-05-24
    • snakemake from 7.6.2 to 7.7.0 on 2022-05-17
    • snakemake from 7.7.0 to 7.8.0 on 2022-05-24
    • snakemake from 7.8.0 to 7.8.1 on 2022-05-31
    • snakemake from 7.8.1 to 7.8.2 on 2022-06-08
    • sqlfluff from 0.13.1 to 0.13.2 on 2022-05-21
    • stylelint from 14.8.2 to 14.8.3 on 2022-05-22
    • stylelint from 14.8.3 to 14.8.4 on 2022-05-25
    • stylelint from 14.8.4 to 14.8.5 on 2022-05-27
    • stylelint from 14.8.5 to 14.9.0 on 2022-06-09
    • stylelint from 14.9.0 to 14.9.1 on 2022-06-11
    • terraform-fmt from 1.1.9 to 1.2.0 on 2022-05-20
    • terraform-fmt from 1.2.0 to 1.2.1 on 2022-05-24
    • terraform-fmt from 1.2.1 to 1.2.2 on 2022-06-03
    • terragrunt from 0.37.1 to 0.37.2 on 2022-06-09
    • terragrunt from 0.37.2 to 0.37.3 on 2022-06-12

[v5.13.0] - 2022-05-15

  • Add gherkin-lint in dotnet flavor (#1435)
  • Define pre-commit hooks (#569).
  • Pin ansible-lint to 6.0.2 to fix pip dependency conflict between jsonschema versions (#1470).
  • Use docker image for editorconfig-checker
  • Update sqlfluff descriptor properties to enable error count(#1460)

  • Linter versions upgrades

    • cfn-lint from 0.59.0 to 0.59.1 on 2022-05-03
    • cfn-lint from 0.59.1 to 0.60.0 on 2022-05-14
    • checkov from 2.0.1076 to 2.0.1079 on 2022-04-24
    • checkov from 2.0.1079 to 2.0.1084 on 2022-04-26
    • checkov from 2.0.1084 to 2.0.1088 on 2022-04-28
    • checkov from 2.0.1088 to 2.0.1098 on 2022-04-29
    • checkov from 2.0.1098 to 2.0.1100 on 2022-04-30
    • checkov from 2.0.1100 to 2.0.1102 on 2022-05-02
    • checkov from 2.0.1102 to 2.0.1108 on 2022-05-03
    • checkov from 2.0.1108 to 2.0.1110 on 2022-05-03
    • checkov from 2.0.1110 to 2.0.1113 on 2022-05-05
    • checkov from 2.0.1113 to 2.0.1118 on 2022-05-06
    • checkov from 2.0.1118 to 2.0.1119 on 2022-05-07
    • checkov from 2.0.1119 to 2.0.1120 on 2022-05-08
    • checkov from 2.0.1120 to 2.0.1121 on 2022-05-08
    • checkov from 2.0.1121 to 2.0.1140 on 2022-05-14
    • checkov from 2.0.1140 to 2.0.1141 on 2022-05-15
    • checkstyle from 10.1 to 10.2 on 2022-04-24
    • clj-kondo from 2022.04.08 to 2022.04.25 on 2022-04-30
    • coffeelint from 5.2.7 to 5.2.8 on 2022-04-26
    • cspell from 5.19.7 to 5.20.0 on 2022-05-03
    • editorconfig-checker from 2.3.5 to 2.4.0 on 2022-05-15
    • eslint from 8.14.0 to 8.15.0 on 2022-05-07
    • golangci-lint from 1.45.2 to 1.46.1 on 2022-05-14
    • graphql-schema-linter from 2.0.1 to 2.0.2 on 2022-05-06
    • graphql-schema-linter from 2.0.2 to 3.0.0 on 2022-05-07
    • kics from 1.5.6 to 1.5.7 on 2022-05-03
    • kics from 1.5.7 to 1.5.8 on 2022-05-14
    • luacheck from 0.26.0 to 0.26.1 on 2022-04-24
    • markdown-link-check from 3.10.0 to 3.10.2 on 2022-05-05
    • mypy from 0.942 to 0.950 on 2022-04-28
    • phpstan from 1.5.7 to 1.6.0 on 2022-04-26
    • phpstan from 1.6.0 to 1.6.2 on 2022-04-28
    • phpstan from 1.6.2 to 1.6.3 on 2022-04-29
    • phpstan from 1.6.3 to 1.6.4 on 2022-05-03
    • phpstan from 1.6.4 to 1.6.7 on 2022-05-05
    • phpstan from 1.6.7 to 1.6.8 on 2022-05-14
    • powershell from 7.2.2 to 7.2.3 on 2022-04-28
    • protolint from 0.37.1 to 0.38.1 on 2022-05-03
    • psalm from Psalm.4.x-dev@ to Psalm.5.x-dev@ on 2022-05-14
    • pylint from 2.13.7 to 2.13.8 on 2022-05-03
    • pylint from 2.13.8 to 2.13.9 on 2022-05-14
    • rubocop from 1.28.1 to 1.28.2 on 2022-04-26
    • rubocop from 1.28.2 to 1.29.0 on 2022-05-07
    • rubocop from 1.29.0 to 1.29.1 on 2022-05-14
    • sfdx-scanner-apex from 2.13.1 to 2.13.2 on 2022-05-05
    • sfdx-scanner-aura from 2.13.1 to 2.13.2 on 2022-05-05
    • sfdx-scanner-lwc from 2.13.1 to 2.13.2 on 2022-05-05
    • snakemake from 7.4.0 to 7.5.0 on 2022-04-28
    • snakemake from 7.5.0 to 7.6.0 on 2022-05-03
    • snakemake from 7.6.0 to 7.6.1 on 2022-05-05
    • snakemake from 7.6.1 to 7.6.2 on 2022-05-07
    • sqlfluff from 0.13.0 to 0.13.1 on 2022-05-07
    • stylelint from 14.7.1 to 14.8.0 on 2022-04-28
    • stylelint from 14.8.0 to 14.8.1 on 2022-04-30
    • stylelint from 14.8.1 to 14.8.2 on 2022-05-04
    • terragrunt from 0.36.10 to 0.37.1 on 2022-05-14
    • terragrunt from 0.36.7 to 0.36.8 on 2022-04-28
    • terragrunt from 0.36.8 to 0.36.9 on 2022-04-30
    • terragrunt from 0.36.9 to 0.36.10 on 2022-05-06
    • xmllint from 20913 to 20914 on 2022-05-14

[v5.12.0] - 2022-04-23

  • Core

  • Linter versions upgrades

    • actionlint from 1.6.11 to 1.6.12 on 2022-04-18
    • cfn-lint from 0.58.4 to 0.59.0 on 2022-04-18
    • checkov from 2.0.1047 to 2.0.1050 on 2022-04-11
    • checkov from 2.0.1050 to 2.0.1067 on 2022-04-18
    • checkov from 2.0.1067 to 2.0.1068 on 2022-04-18
    • checkov from 2.0.1068 to 2.0.1076 on 2022-04-22
    • coffeelint from 5.2.5 to 5.2.6 on 2022-04-11
    • coffeelint from 5.2.6 to 5.2.7 on 2022-04-22
    • eslint from 8.13.0 to 8.14.0 on 2022-04-23
    • git_diff from 2.30.2 to 2.30.3 on 2022-04-18
    • htmlhint from 1.1.3 to 1.1.4 on 2022-04-11
    • kics from 1.5.5 to 1.5.6 on 2022-04-18
    • npm-groovy-lint from 9.4.1 to 9.5.0 on 2022-04-18
    • phpstan from 1.5.4 to 1.5.6 on 2022-04-18
    • phpstan from 1.5.6 to 1.5.7 on 2022-04-22
    • pylint from 2.13.5 to 2.13.7 on 2022-04-22
    • rstcheck from 3.3.1 to 5.0.0 on 2022-04-18
    • rubocop from 1.27.0 to 1.28.1 on 2022-04-22
    • snakemake from 7.3.8 to 7.4.0 on 2022-04-22
    • sqlfluff from 0.12.0 to 0.13.0 on 2022-04-22
    • stylelint from 14.6.1 to 14.7.1 on 2022-04-18
    • terraform-fmt from 1.1.8 to 1.1.9 on 2022-04-22
    • terragrunt from 0.36.6 to 0.36.7 on 2022-04-18
    • tflint from 0.34.1 to 0.35.0 on 2022-04-18

[v5.11.0] - 2022-04-11

  • Linters

    • Disable rstfmt as it's neither stable or maintained
    • markdown-links-check: allow 203 as valid return code
  • Fixes

    • Github Comment Reporter: switch to using a hidden HTML comment to mark the comment, with the current workflow and jobid. This is more robust than the old method. ([#1355)
    • Allow to provide CI_ACTION_RUN_URL to build hlink for GitHub Comments reporter messages ([#1341)
    • Display plugin URL in MegaLinter output logs ([#1340)
    • Fix public glibc public key download
    • Fix no override and no default toolchain set when lint rust with clippy via github-action (#975)
    • Fix cspell FileNotFound error by creating subdirectories under report as required (#1397)
  • Doc

    • Add instructions to upload artifacts when using MegaLinter with Jenkins
  • Linter versions upgrades

    • actionlint from 1.6.10 to 1.6.11 on 2022-04-06
    • ansible-lint from 6.0.1 to 6.0.2 on 2022-03-24
    • bash-exec from 5.1.0 to 5.1.16 on 2022-03-22
    • black from 22.1.0 to 22.3.0 on 2022-03-30
    • cfn-lint from 0.58.3 to 0.58.4 on 2022-03-22
    • checkov from 2.0.1008 to 2.0.1016 on 2022-03-31
    • checkov from 2.0.1016 to 2.0.1021 on 2022-03-31
    • checkov from 2.0.1021 to 2.0.1024 on 2022-04-01
    • checkov from 2.0.1024 to 2.0.1030 on 2022-04-04
    • checkov from 2.0.1030 to 2.0.1037 on 2022-04-06
    • checkov from 2.0.1037 to 2.0.1045 on 2022-04-09
    • checkov from 2.0.1045 to 2.0.1046 on 2022-04-10
    • checkov from 2.0.1046 to 2.0.1047 on 2022-04-11
    • checkov from 2.0.975 to 2.0.977 on 2022-03-21
    • checkov from 2.0.977 to 2.0.980 on 2022-03-22
    • checkov from 2.0.980 to 2.0.983 on 2022-03-23
    • checkov from 2.0.983 to 2.0.995 on 2022-03-26
    • checkov from 2.0.995 to 2.0.999 on 2022-03-27
    • checkov from 2.0.999 to 2.0.1008 on 2022-03-30
    • checkstyle from 10.0 to 10.1 on 2022-03-27
    • clippy from 0.1.59 to 0.1.60 on 2022-04-09
    • clj-kondo from 2022.02.09 to 2022.04.08 on 2022-04-10
    • coffeelint from 5.2.4 to 5.2.5 on 2022-03-22
    • cspell from 5.19.2 to 5.19.3 on 2022-03-26
    • cspell from 5.19.3 to 5.19.4 on 2022-04-01
    • cspell from 5.19.4 to 5.19.5 on 2022-04-02
    • cspell from 5.19.5 to 5.19.6 on 2022-04-09
    • cspell from 5.19.6 to 5.19.7 on 2022-04-10
    • eslint from 8.11.0 to 8.12.0 on 2022-03-26
    • eslint from 8.12.0 to 8.13.0 on 2022-04-09
    • golangci-lint from 1.45.0 to 1.45.2 on 2022-03-26
    • hadolint from 2.9.1 to 2.9.3 on 2022-03-31
    • hadolint from 2.9.3 to 2.10.0 on 2022-04-10
    • htmlhint from 1.1.2 to 1.1.3 on 2022-03-30
    • kics from 1.5.4 to 1.5.5 on 2022-03-31
    • ktlint from 0.45.0 to 0.45.1 on 2022-03-22
    • ktlint from 0.45.1 to 0.45.2 on 2022-04-07
    • luacheck from 0.25.0 to 0.26.0 on 2022-03-26
    • mypy from 0.941 to 0.942 on 2022-03-26
    • phpstan from 1.4.10 to 1.5.0 on 2022-03-26
    • phpstan from 1.5.0 to 1.5.2 on 2022-03-30
    • phpstan from 1.5.2 to 1.5.3 on 2022-03-31
    • phpstan from 1.5.3 to 1.5.4 on 2022-04-04
    • prettier from 2.6.0 to 2.6.1 on 2022-03-26
    • prettier from 2.6.1 to 2.6.2 on 2022-04-04
    • pylint from 2.12.2 to 2.13.1 on 2022-03-26
    • pylint from 2.13.1 to 2.13.2 on 2022-03-27
    • pylint from 2.13.2 to 2.13.3 on 2022-03-30
    • pylint from 2.13.3 to 2.13.4 on 2022-03-31
    • pylint from 2.13.4 to 2.13.5 on 2022-04-07
    • rubocop from 1.26.0 to 1.26.1 on 2022-03-23
    • rubocop from 1.26.1 to 1.27.0 on 2022-04-09
    • scalafix from 0.9.34 to 0.10.0 on 2022-04-04
    • sfdx-scanner-apex from 2.13.0 to 2.13.1 on 2022-03-24
    • sfdx-scanner-aura from 2.13.0 to 2.13.1 on 2022-03-24
    • sfdx-scanner-lwc from 2.13.0 to 2.13.1 on 2022-03-24
    • snakemake from 7.2.1 to 7.3.0 on 2022-03-22
    • snakemake from 7.3.0 to 7.3.1 on 2022-03-24
    • snakemake from 7.3.1 to 7.3.2 on 2022-03-26
    • snakemake from 7.3.2 to 7.3.3 on 2022-03-30
    • snakemake from 7.3.3 to 7.3.4 on 2022-03-31
    • snakemake from 7.3.4 to 7.3.5 on 2022-03-31
    • snakemake from 7.3.5 to 7.3.6 on 2022-04-04
    • snakemake from 7.3.6 to 7.3.7 on 2022-04-06
    • snakemake from 7.3.7 to 7.3.8 on 2022-04-07
    • sqlfluff from 0.11.1 to 0.11.2 on 2022-03-26
    • sqlfluff from 0.11.2 to 0.12.0 on 2022-04-09
    • stylelint from 14.6.0 to 14.6.1 on 2022-03-26
    • terraform-fmt from 1.1.7 to 1.1.8 on 2022-04-09
    • terrascan from 1.13.2 to 1.14.0 on 2022-04-01

[v5.10.0] - 2022-03-20

  • Linter versions upgrades
    • ansible-lint from 5.4.0 to 6.0.0 on 2022-03-16
    • ansible-lint from 6.0.0 to 6.0.1 on 2022-03-19
    • checkov from 2.0.939 to 2.0.940 on 2022-03-13
    • checkov from 2.0.940 to 2.0.943 on 2022-03-14
    • checkov from 2.0.943 to 2.0.949 on 2022-03-15
    • checkov from 2.0.949 to 2.0.962 on 2022-03-16
    • checkov from 2.0.962 to 2.0.969 on 2022-03-17
    • checkov from 2.0.969 to 2.0.970 on 2022-03-17
    • checkov from 2.0.970 to 2.0.975 on 2022-03-19
    • cspell from 5.19.0 to 5.19.1 on 2022-03-13
    • cspell from 5.19.1 to 5.19.2 on 2022-03-14
    • golangci-lint from 1.44.2 to 1.45.0 on 2022-03-19
    • hadolint from 2.7.0 to 2.9.1 on 2022-03-19
    • kics from 1.5.3 to 1.5.4 on 2022-03-17
    • ktlint from 0.44.0 to 0.45.0 on 2022-03-19
    • markdown-link-check from 3.9.3 to 3.10.0 on 2022-03-20
    • mypy from 0.940 to 0.941 on 2022-03-15
    • phpstan from 1.4.9 to 1.4.10 on 2022-03-14
    • powershell from 7.2.1 to 7.2.2 on 2022-03-17
    • prettier from 2.5.1 to 2.6.0 on 2022-03-17
    • snakemake from 7.2.0 to 7.2.1 on 2022-03-14
    • sqlfluff from 0.11.0 to 0.11.1 on 2022-03-17
    • stylelint from 14.5.3 to 14.6.0 on 2022-03-17
    • terragrunt from 0.36.3 to 0.36.5 on 2022-03-17
    • terragrunt from 0.36.5 to 0.36.6 on 2022-03-19

[v5.9.0] - 2022-03-13

  • Linters

    • New linter kubeconform to validate Kubernetes manifests with updated schemas
  • Core

    • Switch from JDK 8 to JDK 11
    • Use latest version of npm
  • Flavors

    • Add shell linters to ci_light flavor (#1298)
  • Fixes

    • Generate JSON Schema HTML Documentation when building documentation (#1287)
    • rubocop: remove --force-exclusion from auto-added parameters (#302)
    • terrascan: call terrascan init as a pre-command
  • Linter versions upgrades

    • actionlint from 1.6.8 to 1.6.9 on 2022-02-25
    • actionlint from 1.6.9 to 1.6.10 on 2022-03-12
    • bandit from 1.7.2 to 1.7.3 on 2022-02-28
    • bandit from 1.7.3 to 1.7.4 on 2022-03-06
    • cfn-lint from 0.58.0 to 0.58.1 on 2022-02-21
    • cfn-lint from 0.58.1 to 0.58.2 on 2022-02-27
    • cfn-lint from 0.58.2 to 0.58.3 on 2022-03-09
    • checkov from 2.0.873 to 2.0.885 on 2022-02-21
    • checkov from 2.0.885 to 2.0.901 on 2022-02-25
    • checkov from 2.0.901 to 2.0.902 on 2022-02-25
    • checkov from 2.0.902 to 2.0.903 on 2022-02-27
    • checkov from 2.0.903 to 2.0.906 on 2022-02-28
    • checkov from 2.0.906 to 2.0.914 on 2022-03-03
    • checkov from 2.0.914 to 2.0.917 on 2022-03-04
    • checkov from 2.0.917 to 2.0.918 on 2022-03-06
    • checkov from 2.0.918 to 2.0.923 on 2022-03-08
    • checkov from 2.0.923 to 2.0.924 on 2022-03-08
    • checkov from 2.0.924 to 2.0.927 on 2022-03-09
    • checkov from 2.0.927 to 2.0.931 on 2022-03-10
    • checkov from 2.0.931 to 2.0.935 on 2022-03-11
    • checkov from 2.0.935 to 2.0.938 on 2022-03-12
    • checkov from 2.0.938 to 2.0.939 on 2022-03-13
    • checkstyle from 9.3 to 10.0 on 2022-03-03
    • clippy from 0.1.58 to 0.1.59 on 2022-02-25
    • clj-kondo from 2022.01.15 to 2022.02.09 on 2022-02-21
    • cpplint from 1.5.5 to 1.6.0 on 2022-02-20
    • cspell from 5.18.5 to 5.19.0 on 2022-03-13
    • eslint from 8.10.0 to 8.11.0 on 2022-03-12
    • eslint from 8.9.0 to 8.10.0 on 2022-02-27
    • kics from 1.5.2 to 1.5.3 on 2022-03-03
    • mypy from 0.931 to 0.940 on 2022-03-12
    • phpstan from 1.4.6 to 1.4.7 on 2022-03-03
    • phpstan from 1.4.7 to 1.4.8 on 2022-03-06
    • phpstan from 1.4.8 to 1.4.9 on 2022-03-11
    • protolint from 0.37.0 to 0.37.1 on 2022-02-27
    • rst-lint from 1.3.2 to 1.4.0 on 2022-02-25
    • rubocop from 1.25.1 to 1.26.0 on 2022-03-10
    • sfdx-scanner-apex from 2.12.0 to 2.13.0 on 2022-02-25
    • sfdx-scanner-aura from 2.12.0 to 2.13.0 on 2022-02-25
    • sfdx-scanner-lwc from 2.12.0 to 2.13.0 on 2022-02-25
    • snakefmt from 0.4.4 to 0.6.0 on 2022-03-04
    • snakemake from 6.15.5 to 7.0.0 on 2022-02-25
    • snakemake from 7.0.0 to 7.0.1 on 2022-02-27
    • snakemake from 7.0.1 to 7.0.3 on 2022-03-03
    • snakemake from 7.0.3 to 7.0.4 on 2022-03-04
    • snakemake from 7.0.4 to 7.1.0 on 2022-03-06
    • snakemake from 7.1.0 to 7.1.1 on 2022-03-08
    • snakemake from 7.1.1 to 7.2.0 on 2022-03-13
    • sqlfluff from 0.10.1 to 0.11.0 on 2022-03-08
    • stylelint from 14.5.1 to 14.5.3 on 2022-02-25
    • swiftlint from 0.46.2 to 0.46.3 on 2022-02-25
    • swiftlint from 0.46.3 to 0.46.4 on 2022-03-08
    • swiftlint from 0.46.4 to 0.46.5 on 2022-03-09
    • terraform-fmt from 1.1.6 to 1.1.7 on 2022-03-04
    • terragrunt from 0.36.1 to 0.36.2 on 2022-02-25
    • terragrunt from 0.36.2 to 0.36.3 on 2022-03-04
    • terrascan from 1.13.1 to 1.13.2 on 2022-02-25
    • tsqllint from 1.14.3.0 to 1.14.5.0 on 2022-02-21
    • xmllint from 20912 to 20913 on 2022-03-12

[v5.8.0] - 2022-02-18

  • Linters

    • Improve ansible-lint performances by linting all project in one call, and count number of errors
    • Use project cli_lint_mode to improve performances
      • terrascan
  • Fixes

    • Manage to use local certificate with Gitlab comments reporter using GITLAB_SSL_CERTIFICATE_PATH (#1239)
    • Fix GITLAB_ACCESS_TOKEN_MEGALINTER suggestion when trying to push comments to gitlab merge request
    • Gitlab Comments Reporter: allow to use certificates with variable GITLAB_CUSTOM_CERTIFICATE (or GITLAB_CERTIFICATE_PATH only if PRE_COMMANDS are used) (#1239)
  • Core

    • Allow to check prop existence in active_only_if_file_found and apply to eslint descriptors (#1205)
  • Doc

    • Update images with screen records gifs
    • Add publish artifact task in azure pipelines doc
  • Linter versions upgrades

    • ansible-lint from 5.3.2 to 5.4.0 on 2022-02-13
    • checkov from 2.0.782 to 2.0.783 on 2022-02-03
    • checkov from 2.0.783 to 2.0.786 on 2022-02-03
    • checkov from 2.0.786 to 2.0.791 on 2022-02-05
    • checkov from 2.0.791 to 2.0.793 on 2022-02-06
    • checkov from 2.0.793 to 2.0.795 on 2022-02-06
    • checkov from 2.0.795 to 2.0.812 on 2022-02-09
    • checkov from 2.0.812 to 2.0.813 on 2022-02-09
    • checkov from 2.0.813 to 2.0.817 on 2022-02-10
    • checkov from 2.0.817 to 2.0.830 on 2022-02-13
    • checkov from 2.0.830 to 2.0.833 on 2022-02-14
    • checkov from 2.0.833 to 2.0.853 on 2022-02-16
    • checkov from 2.0.853 to 2.0.866 on 2022-02-18
    • checkov from 2.0.866 to 2.0.873 on 2022-02-18
    • cspell from 5.18.0 to 5.18.3 on 2022-02-05
    • cspell from 5.18.3 to 5.18.4 on 2022-02-09
    • cspell from 5.18.4 to 5.18.5 on 2022-02-16
    • eslint-plugin-jsonc from 2.1.0 to 2.2.1 on 2022-02-18
    • eslint from 8.8.0 to 8.9.0 on 2022-02-13
    • golangci-lint from 1.44.0 to 1.44.2 on 2022-02-18
    • kics from 1.5.1 to 1.5.2 on 2022-02-18
    • ktlint from 0.43.2 to 0.44.0 on 2022-02-16
    • markdownlint from 0.30.0 to 0.31.0 on 2022-02-06
    • markdownlint from 0.31.0 to 0.31.1 on 2022-02-09
    • phpstan from 1.4.5 to 1.4.6 on 2022-02-06
    • protolint from 0.36.0 to 0.37.0 on 2022-02-13
    • rubocop from 1.25.0 to 1.25.1 on 2022-02-03
    • snakemake from 6.15.1 to 6.15.2 on 2022-02-06
    • snakemake from 6.15.2 to 6.15.3 on 2022-02-09
    • snakemake from 6.15.3 to 6.15.4 on 2022-02-09
    • snakemake from 6.15.4 to 6.15.5 on 2022-02-10
    • sqlfluff from 0.10.0 to 0.10.1 on 2022-02-18
    • sqlfluff from 0.9.4 to 0.10.0 on 2022-02-13
    • stylelint from 14.3.0 to 14.4.0 on 2022-02-09
    • stylelint from 14.4.0 to 14.5.0 on 2022-02-13
    • stylelint from 14.5.0 to 14.5.1 on 2022-02-18
    • terraform-fmt from 1.1.4 to 1.1.5 on 2022-02-03
    • terraform-fmt from 1.1.5 to 1.1.6 on 2022-02-18
    • terrascan from 1.13.0 to 1.13.1 on 2022-02-13

[v5.7.1] - 2022-02-02

  • Linter updates:

    • temporary disable snakefmt to allow latest versions of black and sqlfluff
    • cspell: Update .cspell default config with "version: "2.0", "noConfigSearch": true
    • Use list_of_files mode to improve performances
      • markdown-link-check
      • standard
      • stylelint
  • Fixes

    • Remove extraheader in git repo when using Azure Pipelines (#1125)
    • Fix gitlab token error message (#1228)
  • Linter versions upgrades

    • black from 21.12 to 22.1.0 on 2022-02-02
    • cfn-lint from 0.57.0 to 0.58.0 on 2022-02-01
    • checkov from 2.0.775 to 2.0.777 on 2022-01-31
    • checkov from 2.0.777 to 2.0.778 on 2022-02-01
    • checkov from 2.0.778 to 2.0.780 on 2022-02-02
    • checkov from 2.0.780 to 2.0.782 on 2022-02-02
    • cspell from 5.17.0 to 5.18.0 on 2022-01-31
    • kics from 1.5.0 to 1.5.1 on 2022-02-02
    • markdown-table-formatter from 1.2.0 to 1.3.0 on 2022-01-31
    • phpstan from 1.4.3 to 1.4.4 on 2022-02-01
    • phpstan from 1.4.4 to 1.4.5 on 2022-02-02
    • snakemake from 6.13.1 to 6.15.1 on 2022-02-02
    • sqlfluff from 0.9.3 to 0.9.4 on 2022-02-02
    • terragrunt from 0.36.0 to 0.36.1 on 2022-02-01

[v5.7.0] - 2022-01-30

  • Core:

    • New reporter GITLAB_COMMENT_REPORTER allowing to post MegaLinter results as comments on Gitlab merge requests
    • CI: Update test method to check that the number of errors is correctly calculated (+ fix linter test cases)
  • Linter updates:

    • Add configuration file option for SQLFluff (#1200)
    • secretlint: Use .gitignore as .secretlintignore if --secretlintignore isn't defined and .secretlintignore not found (#1207)
    • Update bash-exec documentation
    • Display correct number of errors in logs
      • actionlint
      • chktex
      • cpplint
      • htmlhint
      • perlcritic
      • sfdx-scanner
      • shellcheck
      • shfmt
    • Use list_of_files mode to improve performances
      • htmlhint
      • shellcheck
      • shfmt
  • Fixes:

    • Fix v5 doc deployment when there is a new release (#1190)
    • Fix issue when using VALIDATE_ALL_CODEBASE: false on Azure Pipelines by defining auth header in CI env variable GIT_AUTHORIZATION_BEARER (#1125)
    • Fix tflint initialization so it uses configuration file when defined (#1134)
  • Linter versions upgrades

    • bandit from 1.7.1 to 1.7.2 on 2022-01-26
    • checkov from 2.0.744 to 2.0.745 on 2022-01-23
    • checkov from 2.0.745 to 2.0.746 on 2022-01-24
    • checkov from 2.0.746 to 2.0.749 on 2022-01-24
    • checkov from 2.0.749 to 2.0.754 on 2022-01-24
    • checkov from 2.0.754 to 2.0.763 on 2022-01-26
    • checkov from 2.0.763 to 2.0.769 on 2022-01-28
    • checkov from 2.0.769 to 2.0.772 on 2022-01-29
    • checkov from 2.0.772 to 2.0.775 on 2022-01-30
    • checkstyle from 9.2.1 to 9.3 on 2022-01-30
    • coffeelint from 5.2.3 to 5.2.4 on 2022-01-28
    • cspell from 5.16.0 to 5.17.0 on 2022-01-28
    • dotenv-linter from 3.1.1 to 3.2.0 on 2022-01-24
    • eslint-plugin-jsonc from 2.0.0 to 2.1.0 on 2022-01-28
    • eslint from 8.7.0 to 8.8.0 on 2022-01-29
    • golangci-lint from 1.43.0 to 1.44.0 on 2022-01-26
    • htmlhint from 1.1.0 to 1.1.1 on 2022-01-23
    • htmlhint from 1.1.1 to 1.1.2 on 2022-01-28
    • markdown-link-check from 3.9.2 to 3.9.3 on 2022-01-29
    • phpstan from 1.4.2 to 1.4.3 on 2022-01-29
    • rubocop from 0.82.0 to 1.25.0 on 2022-01-29
    • shfmt from 3.2.1 to 3.5.0 on 2022-01-30
    • shfmt from 3.3.1 to 3.2.1 on 2022-01-30
    • snakemake from 6.13.1 to 6.14.0 on 2022-01-28
    • snakemake from 6.14.0 to 6.15.0 on 2022-01-29
    • snakemake from 6.15.0 to 6.13.1 on 2022-01-30
    • sqlfluff from 0.9.1 to 0.9.3 on 2022-01-28
    • stylelint from 14.2.0 to 14.3.0 on 2022-01-23
    • swiftlint from 0.46.0 to 0.46.2 on 2022-01-28
    • tsqllint from 1.14.0.0 to 1.14.3.0 on 2022-01-23

[v5.6.0] - 2022-01-22

  • Add linters licenses to online documentation
  • Fix issue when config vars are both from ENV and from config file (#1154)
  • Fix issue of --files argument format when calling npm-groovy-lint (#1176)
  • Fix wrong status in reports when DISABLE_ERRORS is used
  • Increase memory size for node.js-based linters (#1149)
  • Make python linters play nice with each other (#1182)

  • Linter versions upgrades

    • coffeelint from 5.2.2 to 5.2.3 on 2022-01-09
    • phpstan from 1.3.0 to 1.3.3 on 2022-01-09
    • mypy from 0.930 to 0.931 on 2022-01-09
    • cspell from 5.14.0 to 5.15.1 on 2022-01-09
    • checkov from 2.0.702 to 2.0.708 on 2022-01-09
    • terraform-fmt from 1.1.2 to 1.1.3 on 2022-01-09
    • terrascan from 1.12.0 to 1.13.0 on 2022-01-09
    • npm-groovy-lint from 9.3.0 to 9.3.2 on 2022-01-09
    • sqlfluff from 0.9.0 to 0.9.1 on 2022-01-09
    • cfn-lint from 0.56.3 to 0.56.4 on 2022-01-11
    • npm-groovy-lint from 9.3.2 to 9.4.0 on 2022-01-11
    • snakemake from 6.12.3 to 6.13.0 on 2022-01-11
    • checkov from 2.0.708 to 2.0.709 on 2022-01-11
    • scalafix from 0.9.33 to 0.9.34 on 2022-01-12
    • snakemake from 6.13.0 to 6.13.1 on 2022-01-12
    • cspell from 5.15.1 to 5.15.2 on 2022-01-12
    • checkov from 2.0.709 to 2.0.710 on 2022-01-12
    • npm-groovy-lint from 9.4.0 to 9.4.1 on 2022-01-13
    • checkov from 2.0.710 to 2.0.712 on 2022-01-13
    • terragrunt from 0.35.16 to 0.35.18 on 2022-01-13
    • clj-kondo from 2021.12.19 to 2022.01.13 on 2022-01-14
    • clippy from 0.1.57 to 0.1.58 on 2022-01-14
    • checkov from 2.0.712 to 2.0.717 on 2022-01-14
    • phpstan from 1.3.3 to 1.4.0 on 2022-01-15
    • terragrunt from 0.35.18 to 0.35.19 on 2022-01-15
    • terragrunt from 0.35.19 to 0.35.20 on 2022-01-15
    • checkov from 2.0.717 to 2.0.718 on 2022-01-16
    • eslint from 8.6.0 to 8.7.0 on 2022-01-17
    • checkov from 2.0.718 to 2.0.720 on 2022-01-17
    • phpstan from 1.4.0 to 1.4.1 on 2022-01-18
    • checkov from 2.0.720 to 2.0.727 on 2022-01-18
    • clj-kondo from 2022.01.13 to 2022.01.15 on 2022-01-22
    • cfn-lint from 0.56.4 to 0.57.0 on 2022-01-22
    • markdown-link-check from 3.9.0 to 3.9.2 on 2022-01-22
    • phpstan from 1.4.1 to 1.4.2 on 2022-01-22
    • protolint from 0.35.2 to 0.36.0 on 2022-01-22
    • cspell from 5.15.2 to 5.16.0 on 2022-01-22
    • swiftlint from 0.45.1 to 0.46.0 on 2022-01-22
    • checkov from 2.0.727 to 2.0.744 on 2022-01-22
    • kics from 1.4.9 to 1.5.0 on 2022-01-22
    • terraform-fmt from 1.1.3 to 1.1.4 on 2022-01-22
    • terragrunt from 0.35.20 to 0.36.0 on 2022-01-22

[v5.5.0] - 2022-01-03

  • Linter versions upgrades
    • checkov from 2.0.680 to 2.0.681 on 2021-12-21
    • stylelint from 14.1.0 to 14.2.0 on 2021-12-23
    • mypy from 0.920 to 0.930 on 2021-12-23
    • checkov from 2.0.681 to 2.0.687 on 2021-12-23
    • npm-groovy-lint from 9.1.0 to 9.2.0 on 2021-12-23
    • checkov from 2.0.687 to 2.0.690 on 2021-12-23
    • tflint from 0.34.0 to 0.34.1 on 2021-12-26
    • clj-kondo from 2021.06.18 to 2021.12.19 on 2021-12-29
    • npm-groovy-lint from 9.2.0 to 9.3.0 on 2021-12-29
    • checkstyle from 9.2 to 9.2.1 on 2021-12-29
    • cspell from 5.13.4 to 5.14.0 on 2021-12-29
    • checkov from 2.0.690 to 2.0.695 on 2021-12-29
    • phpstan from 1.2.0 to 1.3.0 on 2021-12-29
    • checkov from 2.0.695 to 2.0.701 on 2021-12-31
    • htmlhint from 1.0.0 to 1.1.0 on 2022-01-01
    • eslint from 8.5.0 to 8.6.0 on 2022-01-01
    • checkov from 2.0.701 to 2.0.702 on 2022-01-03

[v5.4.0] - 2021-12-21

  • Linter versions upgrades
    • snakemake from 6.12.1 to 6.12.2 on 2021-12-09
    • checkov from 2.0.636 to 2.0.639 on 2021-12-09
    • checkov from 2.0.639 to 2.0.641 on 2021-12-09
    • terraform-fmt from 1.0.11 to 1.1.0 on 2021-12-09
    • snakemake from 6.12.2 to 6.12.3 on 2021-12-11
    • checkov from 2.0.641 to 2.0.648 on 2021-12-11
    • cspell from 5.13.2 to 5.13.3 on 2021-12-11
    • terragrunt from 0.35.13 to 0.35.14 on 2021-12-11
    • checkov from 2.0.648 to 2.0.649 on 2021-12-12
    • phpcs from 3.6.1 to 3.6.2 on 2021-12-14
    • sqlfluff from 0.8.2 to 0.9.0 on 2021-12-14
    • checkov from 2.0.649 to 2.0.659 on 2021-12-14
    • tflint from 0.33.2 to 0.34.0 on 2021-12-14
    • npm-groovy-lint from 9.0.0 to 9.1.0 on 2021-12-15
    • powershell from 7.2.0 to 7.2.1 on 2021-12-15
    • checkov from 2.0.659 to 2.0.660 on 2021-12-15
    • mypy from 0.910 to 0.920 on 2021-12-16
    • checkov from 2.0.660 to 2.0.662 on 2021-12-16
    • checkov from 2.0.662 to 2.0.668 on 2021-12-17
    • terraform-fmt from 1.1.0 to 1.1.1 on 2021-12-17
    • eslint from 8.4.1 to 8.5.0 on 2021-12-18
    • checkov from 2.0.668 to 2.0.672 on 2021-12-18
    • cspell from 5.13.3 to 5.13.4 on 2021-12-18
    • terraform-fmt from 1.1.1 to 1.1.2 on 2021-12-18
    • terragrunt from 0.35.14 to 0.35.16 on 2021-12-18
    • coffeelint from 5.2.1 to 5.2.2 on 2021-12-21
    • checkov from 2.0.672 to 2.0.680 on 2021-12-21
    • kics from 1.4.8 to 1.4.9 on 2021-12-21

[v5.3.0] - 2021-12-08

  • Fix jscpd typo about .venv (#986)
  • markdownlint: rename default config file from .markdown-lint.json to .markdownlint.json
  • Deprecate DEFAULT_BRANCH setting (#948)
  • Correct some broken links in README from Mega-Linter to MegaLinter (#1030)
  • Docker run -- clean-up containers when exits (#1033)
  • Add missing Bandit config file and rules path options (#679)
  • Fix getting linter version of npm plugin. (#845)
  • Improve runtime performances when using a flavor and defining FLAVORS_SUGGESTION: false
  • Don't check for updated files when APPLY_FIXES isn't active
  • Fix CLI_LINT_MODE default value in doc (#1086)

  • Linters

    • New linter phplint to speed-up linting of php files (#1031)
      • Fix phplint constraint to accept all future bugfix v3.0.x versions (PHP 7.4 support) (#1043)
    • cpplint: Use cli_lint_mode: project to improve performances
  • Linter versions upgrades

    • remark-lint from 14.0.1 to 14.0.2 on 2021-11-19
    • php from 7.4.25 to 7.4.26 on 2021-11-19
    • checkov from 2.0.587 to 2.0.588 on 2021-11-19
    • markdownlint from 0.29.0 to 0.30.0 on 2021-11-21
    • checkov from 2.0.588 to 2.0.591 on 2021-11-21
    • terragrunt from 0.35.10 to 0.35.12 on 2021-11-21
    • eslint from 8.2.0 to 8.3.0 on 2021-11-21
    • checkov from 2.0.591 to 2.0.595 on 2021-11-21
    • cfn-lint from 0.56.1 to 0.56.2 on 2021-11-22
    • sqlfluff from 0.8.1 to 0.8.2 on 2021-11-22
    • checkov from 2.0.595 to 2.0.597 on 2021-11-22
    • htmlhint from 0.16.1 to 0.16.2 on 2021-11-24
    • checkov from 2.0.597 to 2.0.600 on 2021-11-24
    • htmlhint from 0.16.2 to 0.16.3 on 2021-11-25
    • markdown-link-check from 0.0.0 to 3.9.0 on 2021-11-25
    • cspell from 5.13.0 to 5.13.1 on 2021-11-25
    • checkov from 2.0.600 to 2.0.603 on 2021-11-25
    • kics from 1.4.7 to 1.4.8 on 2021-11-25
    • prettier from 2.4.1 to 2.5.0 on 2021-11-26
    • pylint from 2.11.1 to 2.12.1 on 2021-11-26
    • snakemake from 6.10.0 to 6.11.0 on 2021-11-26
    • checkov from 2.0.603 to 2.0.605 on 2021-11-26
    • terragrunt from 0.35.12 to 0.35.13 on 2021-11-26
    • htmlhint from 0.16.3 to 1.0.0 on 2021-11-27
    • scalafix from 0.9.32 to 0.9.33 on 2021-11-27
    • snakemake from 6.11.0 to 6.11.1 on 2021-11-27
    • checkstyle from 9.1 to 9.2 on 2021-11-29
    • checkov from 2.0.605 to 2.0.606 on 2021-11-29
    • snakemake from 6.11.1 to 6.12.1 on 2021-11-30
    • swiftlint from 0.45.0 to 0.45.1 on 2021-11-30
    • checkov from 2.0.606 to 2.0.609 on 2021-11-30
    • v8r from 0.6.1 to 0.7.0 on 2021-11-30
    • v8r from 0.7.0 to 0.6.1 on 2021-12-01
    • checkov from 2.0.614 to 2.0.616 on 2021-12-01
    • checkov from 2.0.616 to 2.0.618 on 2021-12-01
    • coffeelint from 5.2.0 to 5.2.1 on 2021-12-02
    • checkov from 2.0.618 to 2.0.621 on 2021-12-02
    • ktlint from 0.40.0 to 0.43.2 on 2021-12-02
    • clippy from 0.1.56 to 0.1.57 on 2021-12-03
    • checkov from 2.0.621 to 2.0.625 on 2021-12-03
    • cfn-lint from 0.56.2 to 0.56.3 on 2021-12-04
    • pylint from 2.12.1 to 2.12.2 on 2021-12-04
    • checkov from 2.0.625 to 2.0.626 on 2021-12-04
    • eslint from 8.3.0 to 8.4.0 on 2021-12-04
    • prettier from 2.5.0 to 2.5.1 on 2021-12-05
    • black from 21.11 to 21.12 on 2021-12-06
    • checkov from 2.0.626 to 2.0.628 on 2021-12-06
    • checkov from 2.0.628 to 2.0.632 on 2021-12-07
    • eslint from 8.4.0 to 8.4.1 on 2021-12-07
    • cspell from 5.13.1 to 5.13.2 on 2021-12-07
    • checkov from 2.0.632 to 2.0.634 on 2021-12-07
    • tflint from 0.33.1 to 0.33.2 on 2021-12-07
    • checkov from 2.0.634 to 2.0.636 on 2021-12-08

[v5.2.0] - 2021-11-18

  • Fix release doc CI
  • Add <utteranc.es> comments in online documentation
  • Add link to MegaLinter documentation in console logs

  • Linter versions upgrades

    • actionlint from 1.6.7 to 1.6.8 on 2021-11-15
    • checkov from 2.0.572 to 2.0.573 on 2021-11-15
    • checkov from 2.0.573 to 2.0.574 on 2021-11-15
    • cfn-lint from 0.56.0 to 0.56.1 on 2021-11-17
    • checkov from 2.0.574 to 2.0.580 on 2021-11-17
    • black from 21.10 to 21.11 on 2021-11-17
    • cspell from 5.12.6 to 5.13.0 on 2021-11-17
    • checkov from 2.0.580 to 2.0.582 on 2021-11-17
    • checkov from 2.0.582 to 2.0.583 on 2021-11-18
    • phpstan from 1.1.2 to 1.2.0 on 2021-11-18
    • checkov from 2.0.583 to 2.0.587 on 2021-11-18

[v5.1.0] - 2021-11-15

  • Fix config issue with IGNORE_GITIGNORED_FILES (#932)
  • Bypass random CI issue with sql_tsqllint_test test version and test help
  • New configuration PRINT_ALL_FILES (default: true). If set to false, console log only displays updated and error files, not all of them
  • Update black configuration, that now uses a pyproject.toml file (#949)
  • Allows list_of_files cli_lint_mode on Psalm linter to improve performance compare to file mode
  • mega-linter-runner: Upgrade yeoman environment to allow spaces in path
  • Documentation versioning with mike
  • Accordingly, to official PHPStan documentation, the TEMPLATES/phpstan.neon.dist config file set default level to zero.
  • Downgrade dotnet from 6.0 to 5.0, to be compliant with tsqllint
  • Allow GithubStatusReporter to work for other CI platforms
  • Add license badge in linters documentation (All linters)
  • Upgrade checkov install instructions to use alpine-oriented ones
  • Fix wrong errors count displayed with PHPStan and Psalm linters (#985)
  • Fix typo error in .jscpd.json config file (#986)
  • Deprecate DEFAULT_BRANCH, and change its default from master to HEAD (#915)

  • Core architecture

    • New configuration PRINT_ALL_FILES (default: true). If set to false, console log only displays updated and error files, not all of them
    • Documentation versioning with mike
    • Allow GithubStatusReporter to work for other CI platforms
    • Add license info in List of linters documentation page
  • Linters

    • Update black configuration, that now uses a pyproject.toml file (#949)
    • Allows list_of_files cli_lint_mode on Psalm linter to improve performance compare to file mode
    • Upgrade checkov install instructions to use alpine-oriented ones
    • Accordingly, to official PHPStan documentation, the TEMPLATES/phpstan.neon.dist config file set default level to zero.
    • Downgrade dotnet from 6.0 to 5.0, to be compliant with tsqllint
  • Bug fixes

    • Fix config issue with IGNORE_GITIGNORED_FILES (#932)
    • Bypass random CI issue with sql_tsqllint_test test version and test help
    • mega-linter-runner: Upgrade yeoman environment to allow spaces in path
  • Linter versions upgrades

    • cspell from 5.12.5 to 5.12.6 on 2021-11-04
    • cfn-lint from 0.55.0 to 0.56.0 on 2021-11-06
    • coffeelint from 5.1.0 to 5.1.1 on 2021-11-06
    • jscpd from 3.3.26 to 3.4.1 on 2021-11-06
    • hadolint from 2.7.0 to 2.8.0 on 2021-11-06
    • eslint-plugin-jsonc from 1.7.0 to 2.0.0 on 2021-11-06
    • phpstan from 1.0.2 to 1.1.0 on 2021-11-06
    • jscpd from 3.4.1 to 3.4.2 on 2021-11-07
    • shellcheck from 0.7.2 to 0.8.0 on 2021-11-07
    • coffeelint from 5.1.1 to 5.2.0 on 2021-11-07
    • jscpd from 3.4.2 to 3.3.26 on 2021-11-07
    • hadolint from 2.8.0 to 2.7.0 on 2021-11-07
    • sqlfluff from 0.7.1 to 0.8.0 on 2021-11-07
    • sqlfluff from 0.8.0 to 0.8.1 on 2021-11-08
    • swiftlint from 0.43.1 to 0.44.0 on 2021-11-08
    • actionlint from 1.6.6 to 1.6.7 on 2021-11-08
    • eslint from 7.32.0 to 8.2.0 on 2021-11-08
    • swiftlint from 0.44.0 to 0.45.0 on 2021-11-08
    • powershell from 7.1.5 to 7.2.0 on 2021-11-08
    • protolint from 0.35.1 to 0.35.2 on 2021-11-09
    • isort from 5.10.0 to 5.10.1 on 2021-11-09
    • phpstan from 1.1.1 to 1.1.2 on 2021-11-09
    • kics from 1.4.6 to 1.4.7 on 2021-11-11
    • terraform-fmt from 1.0.10 to 1.0.11 on 2021-11-11
    • terragrunt from 0.35.6 to 0.35.8 on 2021-11-11
    • htmlhint from 0.16.0 to 0.16.1 on 2021-11-12
    • checkov from 2.0.524 to 2.0.566 on 2021-11-12
    • terragrunt from 0.35.8 to 0.35.9 on 2021-11-12
    • bandit from 1.7.0 to 1.7.1 on 2021-11-13
    • scalafix from 0.9.31 to 0.9.32 on 2021-11-13
    • checkov from 2.0.566 to 2.0.569 on 2021-11-13
    • terragrunt from 0.35.9 to 0.35.10 on 2021-11-13
    • checkov from 2.0.569 to 2.0.571 on 2021-11-14
    • stylelint from 14.0.1 to 14.1.0 on 2021-11-14
    • checkov from 2.0.571 to 2.0.572 on 2021-11-14

[v5.0.7] - 2021-11-04

  • Fix that upgrader removed all jobs after cancel_duplicates but the last (#925)

  • Linter versions upgrades

    • cfn-lint from 0.54.4 to 0.55.0 on 2021-11-03
    • phpstan from 1.0.0 to 1.0.1 on 2021-11-03
    • golangci-lint from 1.42.1 to 1.43.0 on 2021-11-04
    • phpstan from 1.0.1 to 1.0.2 on 2021-11-04
    • isort from 5.9.3 to 5.10.0 on 2021-11-04

[v5.0.6] - 2021-11-03

  • Use GH actions concurrency to cancel runs (#921)

[v5.0.5] - 2021-11-02

  • Fix mega-linter-runner --install template for Github Action Workflow
  • Replace expression "abusive copy-paste" by "excessive copy-paste"

  • Linter versions upgrades

    • coffeelint from 5.0.5 to 5.1.0 on 2021-11-02
    • phpstan from 0.12.99 to 1.0.0 on 2021-11-02
    • black from 21.9 to 21.10 on 2021-11-02
    • cspell from 5.12.4 to 5.12.5 on 2021-11-02
    • terragrunt from 0.35.5 to 0.35.6 on 2021-11-02

[v5.0.2] - 2021-10-31

  • Quick build to fix stargazers badge regression (see issue #873) (#909)
  • Improve Azure Pipeline template documentation (#908)
  • Take in account legacy docker images for total docker pull count (#910)
  • Upgrade stale github action

  • Linter versions upgrades

    • cspell from 5.12.3 to 5.12.4 on 2021-10-31
    • checkstyle from 9.0.1 to 9.1 on 2021-10-31
    • tflint from 0.33.0 to 0.33.1 on 2021-10-31

[v5.0.1] - 2021-10-30

  • Fix mega-linter-runner bug related to v5
  • Fix online documentation

[v5.0.0] - 2021-10-30

  • Migration from github individual repo nvuillam/mega-linter to github organization repo megalinter/megalinter
  • Migration from docker hub space nvuillam to space megalinter
    • Docker images are now megalinter/megalinter or megalinter/megalinter-FLAVOR
  • Documentation is now hosted at https://megalinter.github.io/
  • Tool to upgrade user repos configuration files using npx mega-linter-runner --upgrade (will upgrade references to nvuillam/mega-linter into megalinter/megalinter)
  • Version management: Now mega-linter docker images, github action and mega-linter-runner versions are aligned
    • latest for latest official release
    • beta for current content of main branch
    • alpha for current content of alpha branch
    • docker image, github action and mega-linter-runner can still be called with exact version number
  • Being more inclusive: rename master branch into main
  • IGNORE_GITIGNORED_FILES parameter default to true

[4.47.0] - 2021-10-30

  • Upgrades
    • Base docker image python:3.9.6-alpine3.13 to python:3.9.7-alpine3.13
    • Automerge internal job pascalgn/automerge-action-0.14.2 to pascalgn/automerge-action-0.14.3
  • Config reporter: Parse .vscode/extensions.json as json5 (with comments)
  • Add eslint-plugin-jsx-a11y dependency
  • Rename default PHPStan config file, from phpstan.neon to phpstan.neon.dist accordingly to PHPStan resolution priority
  • Allows list_of_files cli_lint_mode on PHPSTAN linter to improve performance compare to file mode
  • phpstan is now installed with phive rather than composer (reduces disk usage)
  • Allows list_of_files cli_lint_mode on PHPCS linter to improve performance compare to file mode
  • Allows list_of_files cli_lint_mode on EditorConfig-Checker linter to improve performance compare to file mode
  • Fix internal CSS because of StyleLint new rule selector-class-pattern
  • Fix ansible-lint version collection
  • Message to recommend to upgrade to MegaLinter v5

  • Linter versions upgrades

    • cfn-lint from 0.54.1 to 0.54.2 on 2021-09-23
    • eslint-plugin-jsonc from 1.6.0 to 1.7.0 on 2021-09-23
    • checkov from 2.0.430 to 2.0.436 on 2021-09-23
    • coffeelint from 5.0.3 to 5.0.4 on 2021-09-24
    • checkov from 2.0.436 to 2.0.438 on 2021-09-24
    • php from 7.4.21 to 7.4.24 on 2021-09-24
    • terragrunt from 0.32.3 to 0.32.4 on 2021-09-24
    • snakemake from 6.8.0 to 6.8.1 on 2021-09-25
    • checkov from 2.0.438 to 2.0.441 on 2021-09-25
    • secretlint from 4.0.0 to 4.1.0 on 2021-09-25
    • checkov from 2.0.441 to 2.0.442 on 2021-09-26
    • checkov from 2.0.442 to 2.0.443 on 2021-09-27
    • protolint from 0.32.0 to 0.35.1 on 2021-09-26
    • protolint from 0.32.0 to 0.35.1 on 2021-09-27
    • checkov from 2.0.443 to 2.0.446 on 2021-09-27
    • cspell from 5.10.1 to 5.11.0 on 2021-09-29
    • checkov from 2.0.446 to 2.0.448 on 2021-09-29
    • npm-groovy-lint from 8.2.0 to 9.0.0 on 2021-09-30
    • sfdx-scanner-apex from 2.11.0 to 2.12.0 on 2021-09-30
    • sfdx-scanner-aura from 2.11.0 to 2.12.0 on 2021-09-30
    • sfdx-scanner-lwc from 2.11.0 to 2.12.0 on 2021-09-30
    • snakemake from 6.8.1 to 6.9.0 on 2021-09-30
    • cspell from 5.11.0 to 5.11.1 on 2021-09-30
    • checkov from 2.0.448 to 2.0.454 on 2021-09-30
    • snakemake from 6.9.0 to 6.9.1 on 2021-09-30
    • checkov from 2.0.454 to 2.0.461 on 2021-09-30
    • checkstyle from 9.0 to 9.0.1 on 2021-10-03
    • luacheck from 0.23.0 to 0.25.0 on 2021-10-03
    • checkov from 2.0.461 to 2.0.467 on 2021-10-03
    • terraform-fmt from 1.0.7 to 1.0.8 on 2021-10-03
    • terragrunt from 0.32.4 to 0.34.0 on 2021-10-03
    • sqlfluff from 0.6.6 to 0.6.7 on 2021-10-05
    • checkov from 2.0.467 to 2.0.469 on 2021-10-05
    • markdownlint from 0.28.1 to 0.29.0 on 2021-10-06
    • cspell from 5.11.1 to 5.12.0 on 2021-10-06
    • sqlfluff from 0.6.7 to 0.6.8 on 2021-10-06
    • checkov from 2.0.469 to 2.0.475 on 2021-10-06
    • cspell from 5.12.0 to 5.12.1 on 2021-10-06
    • checkov from 2.0.475 to 2.0.476 on 2021-10-06
    • cspell from 5.12.1 to 5.12.2 on 2021-10-07
    • terragrunt from 0.34.0 to 0.34.1 on 2021-10-07
    • checkov from 2.0.476 to 2.0.477 on 2021-10-07
    • terrascan from 1.10.0 to 1.11.0 on 2021-10-07
    • cspell from 5.12.2 to 5.12.3 on 2021-10-09
    • checkov from 2.0.477 to 2.0.479 on 2021-10-09
    • sqlfluff from 0.6.8 to 0.6.9 on 2021-10-10
    • checkov from 2.0.479 to 2.0.481 on 2021-10-10
    • checkov from 2.0.481 to 2.0.482 on 2021-10-10
    • phpcs from 3.6.0 to 3.6.1 on 2021-10-12
    • flake8 from 3.9.2 to 4.0.1 on 2021-10-12
    • checkov from 2.0.482 to 2.0.484 on 2021-10-12
    • terragrunt from 0.34.1 to 0.34.3 on 2021-10-12
    • checkov from 2.0.484 to 2.0.485 on 2021-10-13
    • powershell from 7.1.4 to 7.1.5 on 2021-10-16
    • sqlfluff from 0.6.9 to 0.7.0 on 2021-10-16
    • checkov from 2.0.485 to 2.0.491 on 2021-10-16
    • terraform-fmt from 1.0.8 to 1.0.9 on 2021-10-16
    • terragrunt from 0.34.3 to 0.35.3 on 2021-10-16
    • tflint from 0.32.1 to 0.33.0 on 2021-10-16
    • checkov from 2.0.491 to 2.0.492 on 2021-10-17
    • actionlint from 1.6.5 to 1.6.6 on 2021-10-17
    • cfn-lint from 0.54.2 to 0.54.3 on 2021-10-21
    • coffeelint from 5.0.4 to 5.0.5 on 2021-10-21
    • snakefmt from 0.4.3 to 0.4.4 on 2021-10-21
    • tekton-lint from 0.5.2 to 0.6.0 on 2021-10-21
    • checkov from 2.0.492 to 2.0.497 on 2021-10-21
    • terragrunt from 0.35.3 to 0.35.4 on 2021-10-21
    • stylelint from 13.13.1 to 14.0.0 on 2021-10-24
    • clippy from 0.1.55 to 0.1.56 on 2021-10-24
    • snakemake from 6.9.1 to 6.10.0 on 2021-10-24
    • sqlfluff from 0.7.0 to 0.7.1 on 2021-10-24
    • checkov from 2.0.497 to 2.0.509 on 2021-10-24
    • terrascan from 1.11.0 to 1.12.0 on 2021-10-24
    • checkov from 2.0.509 to 2.0.510 on 2021-10-25
    • checkov from 2.0.510 to 2.0.516 on 2021-10-26
    • stylelint from 14.0.0 to 14.0.1 on 2021-10-26
    • checkov from 2.0.516 to 2.0.524 on 2021-10-26
    • php from 7.4.24 to 7.4.25 on 2021-10-27
    • cfn-lint from 0.54.3 to 0.54.4 on 2021-10-28
    • htmlhint from 0.15.2 to 0.16.0 on 2021-10-29
    • terraform-fmt from 1.0.9 to 1.0.10 on 2021-10-29
    • terragrunt from 0.35.4 to 0.35.5 on 2021-10-29

[4.46.0] - 2021-09-21

  • Add openssh apk for git repos using ssh
  • Change default yamllint config file name from .yaml-lint.yml to .yamllint.yml
  • Allow to disable console reporter using CONSOLE_REPORTER: false
  • Override cli_lint_mode of linters using configuration : LINTER_CLI_LINT_MODE
  • Performances
    • Use list_of_files linting mode for yamllint , black and prettier
  • Fixes

    • Add CONFIG_REPORTER in json schema
    • Fix Broken CI due to mega-linter test plugin
  • Linter versions upgrades

    • checkov from 2.0.396 to 2.0.399 on 2021-09-06
    • golangci-lint from 1.42.0 to 1.42.1 on 2021-09-07
    • snakemake from 6.7.0 to 6.8.0 on 2021-09-07
    • cfn-lint from 0.53.1 to 0.54.1 on 2021-09-12
    • prettier from 2.3.2 to 2.4.0 on 2021-09-12
    • clippy from 0.1.54 to 0.1.55 on 2021-09-12
    • sqlfluff from 0.6.4 to 0.6.5 on 2021-09-12
    • checkov from 2.0.399 to 2.0.407 on 2021-09-12
    • terragrunt from 0.31.8 to 0.31.10 on 2021-09-12
    • tflint from 0.31.0 to 0.32.1 on 2021-09-12
    • cspell from 5.9.0 to 5.9.1 on 2021-09-12
    • phpstan from 0.12.98 to 0.12.99 on 2021-09-15
    • puppet-lint from 2.5.0 to 2.5.2 on 2021-09-15
    • black from 21.8 to 21.9 on 2021-09-15
    • checkov from 2.0.407 to 2.0.414 on 2021-09-15
    • terragrunt from 0.31.10 to 0.31.11 on 2021-09-15
    • terragrunt from 0.31.11 to 0.32.1 on 2021-09-15
    • secretlint from 3.3.0 to 4.0.0 on 2021-09-18
    • htmlhint from 0.15.1 to 0.15.2 on 2021-09-18
    • prettier from 2.4.0 to 2.4.1 on 2021-09-18
    • pylint from 2.10.2 to 2.11.1 on 2021-09-18
    • scalafix from 0.9.30 to 0.9.31 on 2021-09-18
    • cspell from 5.9.1 to 5.10.1 on 2021-09-18
    • checkov from 2.0.414 to 2.0.421 on 2021-09-18
    • terraform-fmt from 1.0.6 to 1.0.7 on 2021-09-18
    • terragrunt from 0.32.1 to 0.32.2 on 2021-09-18
    • checkov from 2.0.421 to 2.0.425 on 2021-09-19
    • checkov from 2.0.425 to 2.0.426 on 2021-09-19
    • checkov from 2.0.426 to 2.0.427 on 2021-09-20
    • coffeelint from 5.0.2 to 5.0.3 on 2021-09-21
    • rstfmt from 0.0.9 to 0.0.10 on 2021-09-21
    • sqlfluff from 0.6.5 to 0.6.6 on 2021-09-21
    • checkov from 2.0.427 to 2.0.428 on 2021-09-21
    • checkov from 2.0.428 to 2.0.430 on 2021-09-21
    • terragrunt from 0.32.2 to 0.32.3 on 2021-09-21

[4.45.0] - 2021-09-04

  • New CONFIG_REPORTER to generate "ready to copy" folder containing default linter configurations and IDE extensions recommendations
  • New JSON_REPORTER to generate an output json file in report folder
  • Manage pre_commands and post_commands at linter level
    • Default commands defined at linter descriptor level
    • Overridable by user in linterName_PRE_COMMANDS and linterName_POST_COMMANDS in .mega-linter.yml
  • Fix tflint config so no custom PRE_COMMAND is necessary
  • Use dotnet installer to setup tsqllint. tsqllint is now part of the main MegaLinter flavor, but removed from JAVASCRIPT flavor
  • Ignore linter_FILTER_REGEX_INCLUDE/linter_FILTER_REGEX_EXCLUDE for linters running on the whole project directory
  • mega-linter-runner updates

    • New CLI argument --json, to get the full report as JSON in stdout last line
    • Fix mega-linter-runner --install when local folder path contain spaces
    • Upgrade mega-linter-runner dependencies (npm audit fix)
    • Better comments for generated .mega-linter.yml config file
  • Linter versions upgrades

    • markdown-table-formatter from 1.1.0 to 1.2.0 on 2021-08-20
    • phpstan from 0.12.94 to 0.12.95 on 2021-08-20
    • pylint from 2.9.6 to 2.10.1 on 2021-08-21
    • sqlfluff from 0.6.3 to 0.6.4 on 2021-08-21
    • phpstan from 0.12.95 to 0.12.96 on 2021-08-21
    • pylint from 2.10.1 to 2.10.2 on 2021-08-22
    • cspell from 5.7.2 to 5.8.0 on 2021-08-22
    • yamllint from 1.26.2 to 1.26.3 on 2021-08-22
    • eslint-plugin-jsonc from 1.5.0 to 1.6.0 on 2021-08-23
    • checkov from 2.0.363 to 2.0.367 on 2021-08-23
    • cspell from 5.8.0 to 5.8.1 on 2021-08-24
    • terragrunt from 0.31.5 to 0.31.6 on 2021-08-24
    • hadolint from 2.6.0 to 2.7.0 on 2021-08-28
    • dotenv-linter from 3.1.0 to 3.1.1 on 2021-08-28
    • cspell from 5.8.1 to 5.8.2 on 2021-08-28
    • checkov from 2.0.367 to 2.0.376 on 2021-08-28
    • terragrunt from 0.31.6 to 0.31.7 on 2021-08-28
    • terrascan from 1.9.0 to 1.10.0 on 2021-08-28
    • checkov from 2.0.376 to 2.0.377 on 2021-08-29
    • cfn-lint from 0.53.0 to 0.53.1 on 2021-08-31
    • tsqllint from 1.13.5.0 to 1.14.0.0 on 2021-08-31
    • checkov from 2.0.377 to 2.0.380 on 2021-08-31
    • terragrunt from 0.31.7 to 0.31.8 on 2021-08-31
    • checkstyle from 8.45.1 to 9.0 on 2021-09-01
    • cspell from 5.8.2 to 5.9.0 on 2021-09-01
    • checkov from 2.0.380 to 2.0.387 on 2021-09-01
    • phpstan from 0.12.96 to 0.12.97 on 2021-09-02
    • checkov from 2.0.387 to 2.0.392 on 2021-09-02
    • checkov from 2.0.392 to 2.0.393 on 2021-09-02
    • phpstan from 0.12.97 to 0.12.98 on 2021-09-03
    • checkov from 2.0.393 to 2.0.395 on 2021-09-03
    • checkov from 2.0.395 to 2.0.396 on 2021-09-04
    • black from 20.8 to 21.8 on 2021-09-04
    • snakefmt from 0.4.2 to 0.4.3 on 2021-09-04
    • terraform-fmt from 1.0.5 to 1.0.6 on 2021-09-04

[4.44.0] - 2021-08-19

  • Upgrade tflint descriptor to use ghcr.io/terraform-linters/tflint docker image and initialize tflint
  • Add page for flavors stats in online documentation
  • Unable to list git ignored files when IGNORED_GITIGNORED_FILES: true (#PR605, by David Bernard with the contribution of Tim Pansino)

  • Linter versions upgrades

[4.43.0] - 2021-08-12

  • Add secretlint to check for credentials , secrets and passwords stored in linted repository

  • Linter versions upgrades

    • snakemake from 6.6.1 to 6.7.0 on 2021-08-12
    • checkov from 2.0.344 to 2.0.346 on 2021-08-12
    • checkov from 2.0.346 to 2.0.347 on 2021-08-12

[4.42.0] - 2021-08-12

  • Add tsqllint to lint TSQL files
  • Store docker pulls statistics history
  • add IGNORE_GENERATED_FILES in json schema
  • allow commonjs config file for eslint - #629, by vitalitytv

  • Linter versions upgrades

    • checkov from 2.0.295 to 2.0.297 on 2021-07-25
    • puppet-lint from 2.4.2 to 2.5.0 on 2021-07-26
    • checkov from 2.0.297 to 2.0.303 on 2021-07-26
    • checkov from 2.0.303 to 2.0.307 on 2021-07-28
    • v8r from 0.5.0 to 0.6.0 on 2021-07-29
    • pylint from 2.9.5 to 2.9.6 on 2021-07-29
    • checkov from 2.0.307 to 2.0.313 on 2021-07-29
    • isort from 5.9.2 to 5.9.3 on 2021-07-30
    • clippy from 0.1.53 to 0.1.54 on 2021-07-30
    • snakefmt from 0.4.1 to 0.4.2 on 2021-07-30
    • checkov from 2.0.313 to 2.0.317 on 2021-07-30
    • terragrunt from 0.31.1 to 0.31.2 on 2021-07-30
    • eslint from 7.31.0 to 7.32.0 on 2021-07-31
    • phpstan from 0.12.93 to 0.12.94 on 2021-07-31
    • checkov from 2.0.317 to 2.0.318 on 2021-07-31
    • terragrunt from 0.31.2 to 0.31.3 on 2021-07-31
    • checkstyle from 8.44 to 8.45 on 2021-08-01
    • shfmt from 3.3.0 to 3.3.1 on 2021-08-02
    • checkov from 2.0.318 to 2.0.323 on 2021-08-02
    • cfn-lint from 0.52.0 to 0.53.0 on 2021-08-03
    • checkov from 2.0.323 to 2.0.327 on 2021-08-03
    • remark-lint from 13.0.0 to 14.0.1 on 2021-08-04
    • checkov from 2.0.327 to 2.0.330 on 2021-08-04
    • yamllint from 1.26.1 to 1.26.2 on 2021-08-04
    • checkov from 2.0.330 to 2.0.334 on 2021-08-05
    • terraform-fmt from 1.0.3 to 1.0.4 on 2021-08-05
    • checkov from 2.0.334 to 2.0.336 on 2021-08-05
    • sfdx-scanner-apex from 2.10.0 to 2.10.1005 on 2021-08-06
    • sfdx-scanner-aura from 2.10.0 to 2.10.1005 on 2021-08-06
    • sfdx-scanner-lwc from 2.10.0 to 2.10.1005 on 2021-08-06
    • v8r from 0.6.0 to 0.6.1 on 2021-08-07
    • checkov from 2.0.336 to 2.0.337 on 2021-08-07
    • terrascan from 1.8.1 to 1.9.0 on 2021-08-07
    • checkov from 2.0.337 to 2.0.338 on 2021-08-08
    • checkstyle from 8.45 to 8.45.1 on 2021-08-09
    • checkov from 2.0.338 to 2.0.340 on 2021-08-09
    • checkov from 2.0.340 to 2.0.342 on 2021-08-10
    • checkov from 2.0.342 to 2.0.344 on 2021-08-10

[4.41.0] - 2021-07-25

  • New config variable IGNORE_GITIGNORED_FILES (default: false). If set to true, MegaLinter will skips files ignored by git using .gitignore files
  • New config variable IGNORE_GENERATED_FILES (default: false). If set to true, MegaLinter will skips files containing @generated marker and not containing @not-generated marker

  • Linter versions upgrades

[4.40.0] - 2021-07-14

  • Add mypy python linter
  • mega-linter-runner: Add possibility to send the docker image to use, including from another registry than docker hub, with argument --image

  • Linter versions upgrades

    • phpstan from 0.12.91 to 0.12.92 on 2021-07-10
    • checkov from 2.0.259 to 2.0.261 on 2021-07-11
    • checkov from 2.0.261 to 2.0.262 on 2021-07-11
    • checkov from 2.0.262 to 2.0.263 on 2021-07-12
    • checkov from 2.0.263 to 2.0.266 on 2021-07-13
    • checkov from 2.0.266 to 2.0.267 on 2021-07-13

[4.39.0] - 2021-07-14 [DELETED RELEASE BECAUSE NOT WORKING, USE 4.38.0 UNTIL 4.40.0 RELEASE]

  • Add mypy python linter
  • mega-linter-runner: Add possibility to send the docker image to use, including from another registry than docker hub, with argument --image

  • Linter versions upgrades

    • phpstan from 0.12.91 to 0.12.92 on 2021-07-10
    • checkov from 2.0.259 to 2.0.261 on 2021-07-11
    • checkov from 2.0.261 to 2.0.262 on 2021-07-11
    • checkov from 2.0.262 to 2.0.263 on 2021-07-12
    • checkov from 2.0.263 to 2.0.266 on 2021-07-13
    • checkov from 2.0.266 to 2.0.267 on 2021-07-13

[4.38.0] - 2021-07-10

  • New python linter: bandit, added by Tom Pansino
  • Manage Github action versioning: Match MegaLinter docker image version

  • Linter versions upgrades

    • snakemake from 6.5.2 to 6.5.3 on 2021-07-07
    • checkov from 2.0.251 to 2.0.253 on 2021-07-07
    • php from 7.4.19 to 7.4.21 on 2021-07-07
    • sql-lint from 0.0.18 to 0.0.19 on 2021-07-08
    • checkov from 2.0.253 to 2.0.257 on 2021-07-08
    • isort from 5.9.1 to 5.9.2 on 2021-07-10
    • checkov from 2.0.257 to 2.0.259 on 2021-07-10

[4.37.0] - 2021-07-05

  • Downgrade npm to npm@latest-6 to avoid idealTree error when using npm install
  • Use pip to install ansible & ansible-lint as alpine apk package ansible disappeared
  • Add --doc argument to build.sh to generate doc only when requested (manually, or from CI job Auto-Update-Linters)
  • Add rust in default installations as it's required for latest pip cryptography package

  • Linter versions upgrades

[4.36.0] - 2021-06-22

  • Fix Phive (php package manager) installation
  • Fix dependency error with importlib_metadata before build

  • Linter versions upgrades

    • clj-kondo from 2021.04.23 to 2021.06.18 on 2021-06-22
    • cfn-lint from 0.50.0 to 0.51.0 on 2021-06-22
    • hadolint from 2.4.1 to 2.5.0 on 2021-06-22
    • dotenv-linter from 3.0.0 to 3.1.0 on 2021-06-22
    • golangci-lint from 1.40.1 to 1.41.1 on 2021-06-22
    • npm-groovy-lint from 8.1.0 to 8.2.0 on 2021-06-22
    • htmlhint from 0.14.2 to 0.15.1 on 2021-06-22
    • eslint from 7.28.0 to 7.29.0 on 2021-06-22
    • eslint-plugin-jsonc from 1.2.1 to 1.3.1 on 2021-06-22
    • phpstan from 0.12.88 to 0.12.90 on 2021-06-22
    • isort from 5.8.0 to 5.9.1 on 2021-06-22
    • clippy from 0.1.52 to 0.1.53 on 2021-06-22
    • snakefmt from 0.4.0 to 0.4.1 on 2021-06-22
    • cspell from 5.6.0 to 5.6.6 on 2021-06-22
    • sqlfluff from 0.5.6 to 0.6.0 on 2021-06-22
    • terraform-fmt from Terraform.v0.15.5 to Terraform.v1.0.0 on 2021-06-22
    • terragrunt from 0.29.8 to 0.30.7 on 2021-06-22
    • terrascan from 1.6.0 to 1.7.0 on 2021-06-22
    • tflint from 0.29.0 to 0.29.1 on 2021-06-22

[4.35.0] - 2021-06-12

  • Fix #304: Display error message when docker isn't found when running mega-linter-runner
  • Calculate sum of docker pulls for main page counter badge
  • Check RULESPATH for active_only_if_file_found check (#418, by Omeed Musavi)
  • Upgrade clj-kondo 2021.04.23-alpine
  • Upgrade to python:3.9.5-alpine
  • Partial fix #481: Allow applying fixes on push events (PR487 by Vít Kučera)
  • Fix build.sh on windows
  • Add trivy security check of all built MegaLinter docker images

  • Linter versions upgrades

    • terragrunt from 0.29.2 to 0.29.3 on 2021-05-16
    • shfmt from 3.2.4 to 3.3.0 on 2021-05-18
    • phpstan from 0.12.87 to 0.12.88 on 2021-05-18
    • cfn-lint from 0.49.1 to 0.49.2 on 2021-05-19
    • cpplint from 1.5.4 to 1.5.5 on 2021-05-21
    • scalafix from 0.9.27 to 0.9.28 on 2021-05-21
    • snakemake from 6.3.0 to 6.4.0 on 2021-05-21
    • terraform-fmt from Terraform.v0.15.3 to Terraform.v0.15.4 on 2021-05-21
    • terragrunt from 0.29.3 to 0.29.4 on 2021-05-21
    • sfdx-scanner-apex from 2.8.0 to 2.9.1 on 2021-05-22
    • sfdx-scanner-aura from 2.8.0 to 2.9.1 on 2021-05-22
    • sfdx-scanner-lwc from 2.8.0 to 2.9.1 on 2021-05-22
    • jscpd from 3.3.25 to 3.3.26 on 2021-05-24
    • eslint from 7.26.0 to 7.27.0 on 2021-05-24
    • clj-kondo from 2021.02.13 to 2021.04.23 on 2021-05-24
    • terragrunt from 0.29.4 to 0.29.5 on 2021-05-24
    • snakemake from 6.4.0 to 6.4.1 on 2021-05-28
    • terragrunt from 0.29.5 to 0.29.6 on 2021-05-28
    • terragrunt from 0.29.6 to 0.29.7 on 2021-05-29
    • cspell from 4.1.3 to 5.5.2 on 2021-05-30
    • checkstyle from 8.42 to 8.43 on 2021-05-30
    • scalafix from 0.9.28 to 0.9.29 on 2021-05-30
    • pylint from 2.8.2 to 2.8.3 on 2021-06-01
    • cfn-lint from 0.49.2 to 0.50.0 on 2021-06-04
    • terraform-fmt from Terraform.v0.15.4 to Terraform.v0.15.5 on 2021-06-04
    • terragrunt from 0.29.7 to 0.29.8 on 2021-06-04
    • eslint from 7.27.0 to 7.28.0 on 2021-06-05
    • prettier from 2.3.0 to 2.3.1 on 2021-06-07
    • protolint from 0.31.0 to 0.32.0 on 2021-06-07
    • cspell from 5.5.2 to 5.6.0 on 2021-06-07
    • sql-lint from 0.0.17 to 0.0.18 on 2021-06-07
    • tflint from 0.28.1 to 0.29.0 on 2021-06-07

[4.34.0] - 2021-04-30

  • Fix bug in MegaLinter plugins installation (related to #PR403)

  • Linter versions upgrades

[4.33.0] - 2021-04-30

  • Split Salesforce sfdx-scanner into pmd, eslint aura and eslint lwc

  • Linter versions upgrades

    • snakemake from 6.1.1 to 6.1.2 on 2021-04-20
    • stylelint from 13.12.0 to 13.13.0 on 2021-04-25
    • hadolint from 2.2.0 to 2.3.0 on 2021-04-25
    • eslint from 7.24.0 to 7.25.0 on 2021-04-25
    • pylint from 2.7.4 to 2.8.0 on 2021-04-25
    • snakemake from 6.1.2 to 6.2.1 on 2021-04-25
    • terrascan from 1.4.0 to 1.5.0 on 2021-04-25
    • checkstyle from 8.41.1 to 8.42 on 2021-04-25
    • pylint from 2.8.0 to 2.8.1 on 2021-04-25
    • tflint from 0.27.0 to 0.28.0 on 2021-04-25
    • pylint from 2.8.1 to 2.8.2 on 2021-04-27
    • cfn-lint from 0.48.3 to 0.49.0 on 2021-04-28
    • phpstan from 0.12.84 to 0.12.85 on 2021-04-28
    • terragrunt from 0.28.21 to 0.29.0 on 2021-04-28
    • snakemake from 6.2.1 to 6.3.0 on 2021-04-30
    • terrascan from 1.5.0 to 1.5.1 on 2021-04-30

[4.32.0] - 2021-04-20

  • Fix #376 : Link-title to license
  • Add support from prettier as JSON formatter (#421, by Omeed Musavi

  • Linter versions upgrades

    • phpstan from 0.12.82 to 0.12.83 on 2021-04-03
    • markdown-table-formatter from 1.0.4 to 1.1.0 on 2021-04-05
    • tflint from 0.25.0 to 0.26.0 on 2021-04-05
    • sqlfluff from 0.4.1 to 0.5.0 on 2021-04-06
    • cfn-lint from 0.48.1 to 0.48.2 on 2021-04-07
    • yamllint from 1.26.0 to 1.26.1 on 2021-04-07
    • snakemake from 6.1.0 to 6.1.1 on 2021-04-08
    • terragrunt from 0.28.16 to 0.28.19 on 2021-04-09
    • phpcs from 3.5.8 to 3.6.0 on 2021-04-09
    • eslint from 7.23.0 to 7.24.0 on 2021-04-10
    • sqlfluff from 0.5.0 to 0.5.1 on 2021-04-10
    • protolint from 0.30.1 to 0.31.0 on 2021-04-11
    • sqlfluff from 0.5.1 to 0.5.2 on 2021-04-11
    • sfdx-scanner from 2.7.0 to 2.8.0 on 2021-04-14
    • terragrunt from 0.28.19 to 0.28.21 on 2021-04-15
    • cfn-lint from 0.48.2 to 0.48.3 on 2021-04-17
    • flake8 from 3.9.0 to 3.9.1 on 2021-04-17
    • tflint from 0.26.0 to 0.27.0 on 2021-04-19
    • hadolint from 2.1.0 to 2.2.0 on 2021-04-19
    • phpstan from 0.12.83 to 0.12.84 on 2021-04-19
    • shellcheck from 0.7.1 to 0.7.2 on 2021-04-19

[4.31.0] - 2021-04-03

  • Keep license pre-formatted in docs
  • Use Python virtual-environment in dev-dependencies shell example
  • Fix #367 : Display editorconfig-checker version
  • Fix #379 : New configuration FAIL_IF_MISSING_LINTER_IN_FLAVOR

  • Linter versions upgrades

    • flake8 from 3.8.4 to 3.9.0 on 2021-03-15
    • ktlint from 0.40.0 to 0.41.0 on 2021-03-21
    • phpstan from 0.12.81 to 0.12.82 on 2021-03-21
    • isort from 5.7.0 to 5.8.0 on 2021-03-21
    • sfdx-scanner from 2.6.0 to 2.7.0 on 2021-03-21
    • sql-lint from 0.0.15 to 0.0.16 on 2021-03-21
    • swiftlint from 0.43.0 to 0.43.1 on 2021-03-21
    • editorconfig-checker from 0.0.0 to 2.3.4 on 2021-03-22
    • ktlint from 0.41.0 to 0.40.0 on 2021-03-22
    • cfn-lint from 0.47.2 to 0.48.1 on 2021-03-30
    • coffeelint from 4.1.3 to 4.1.4 on 2021-03-30
    • hadolint from 1.23.0 to 2.0.0 on 2021-03-30
    • golangci-lint from 1.38.0 to 1.39.0 on 2021-03-30
    • checkstyle from 8.41 to 8.41.1 on 2021-03-30
    • eslint from 7.22.0 to 7.23.0 on 2021-03-30
    • kubeval from 0.15.0 to 0.16.1 on 2021-03-30
    • perlcritic from 1.138 to 1.140 on 2021-03-30
    • pylint from 2.7.2 to 2.7.4 on 2021-03-30
    • clippy from 0.0.212 to 0.1.51 on 2021-03-30
    • scalafix from 0.9.26 to 0.9.27 on 2021-03-30
    • terragrunt from 0.28.9 to 0.28.16 on 2021-03-30
    • kubeval from 0.16.0 to 0.16.1 on 2021-03-30
    • pylint from 2.7.3 to 2.7.4 on 2021-03-30
    • editorconfig-checker from 2.3.4 to 2.3.5 on 2021-03-31
    • hadolint from 2.0.0 to 2.1.0 on 2021-04-02
    • snakemake from 6.0.5 to 6.1.0 on 2021-04-02

[4.30.0] - 2021-03-14

  • Fix #361 - Not respecting *_DISABLE_ERRORS: false
  • New variable FORMATTERS_DISABLE_ERRORS to force all formatters to be blocking if errors are found
  • Add *.svg in .jscpd (copy-paste detector) default ignore paths

  • Linter versions upgrades

[4.29.0] - 2021-03-12

  • Fix regex to list Salesforce errors
  • Fix Updated Files Reporter when MegaLinter isn't running on GitHub Action
  • Fix #359 - invalid literal with DISABLEERRORS_IF_LESS_THAN

  • Linter versions upgrades

    • clj-kondo from 2021.01.20 to 2021.02.13 on 2021-03-01
    • jscpd from 3.3.24 to 3.3.25 on 2021-03-06
    • hadolint from 1.22.1 to 1.23.0 on 2021-03-06
    • golangci-lint from 1.37.1 to 1.38.0 on 2021-03-06
    • markdownlint from 0.26.0 to 0.27.1 on 2021-03-06
    • snakemake from 6.0.0 to 6.0.2 on 2021-03-06
    • sqlfluff from 0.4.0 to 0.4.1 on 2021-03-06
    • swiftlint from 0.42.0 to 0.43.0 on 2021-03-06
    • terrascan from 1.3.3 to 1.4.0 on 2021-03-06
    • stylelint from 13.11.0 to 13.12.0 on 2021-03-06
    • tflint from 0.24.1 to 0.25.0 on 2021-03-06
    • shfmt from 3.2.2 to 3.2.4 on 2021-03-10
    • cfn-lint from 0.46.0 to 0.47.0 on 2021-03-10
    • git_diff from 2.30.1 to 2.30.2 on 2021-03-10
    • phpstan from 0.12.80 to 0.12.81 on 2021-03-10
    • protolint from 0.29.0 to 0.30.1 on 2021-03-10
    • snakefmt from 0.3.1 to 0.4.0 on 2021-03-10
    • snakemake from 6.0.2 to 6.0.3 on 2021-03-10
    • cfn-lint from 0.47.0 to 0.47.1 on 2021-03-12
    • powershell from 7.1.2 to 7.1.3 on 2021-03-12
    • snakemake from 6.0.3 to 6.0.5 on 2021-03-12
    • terragrunt from 0.28.6 to 0.28.9 on 2021-03-12

[4.28.0] - 2021-03-01

  • Feature: <LINTER_NAME>DISABLEERRORS_IF_LESS_THAN : set linter status to warning if maximum allowed errors isn't reached
  • Add colors in logs

  • Linter versions upgrades

    • pylint from 2.6.0 to 2.6.2 on 2021-02-16
    • golangci-lint from 1.36.0 to 1.37.0 on 2021-02-19
    • phpstan from 0.12.76 to 0.12.77 on 2021-02-19
    • sfdx-scanner from 2.5.1 to 2.6.0 on 2021-02-19
    • terragrunt from 0.28.2 to 0.28.6 on 2021-02-19
    • terrascan from 1.3.2 to 1.3.3 on 2021-02-19
    • stylelint from 13.10.0 to 13.11.0 on 2021-02-21
    • golangci-lint from 1.37.0 to 1.37.1 on 2021-02-21
    • phpstan from 0.12.77 to 0.12.78 on 2021-02-21
    • pylint from 2.6.2 to 2.7.0 on 2021-02-22
    • cfn-lint from 0.45.0 to 0.46.0 on 2021-02-24
    • pylint from 2.7.0 to 2.7.1 on 2021-02-24
    • eslint-plugin-jsonc from 0.9.0 to 1.0.0 on 2021-02-25
    • phpstan from 0.12.78 to 0.12.79 on 2021-02-25
    • protolint from 0.28.2 to 0.29.0 on 2021-02-25
    • jscpd from 3.3.23 to 3.3.24 on 2021-02-28
    • eslint from 7.20.0 to 7.21.0 on 2021-02-28
    • scalafix from 0.9.25 to 0.9.26 on 2021-02-28
    • snakemake from 5.32.2 to 6.0.0 on 2021-02-28
    • checkstyle from 8.40 to 8.41 on 2021-03-01
    • eslint-plugin-jsonc from 1.0.0 to 1.1.0 on 2021-03-01
    • phpstan from 0.12.79 to 0.12.80 on 2021-03-01
    • pylint from 2.7.1 to 2.7.2 on 2021-03-01
    • clj-kondo from 2021.01.20 to 2021.02.13 on 2021-03-01

[4.27.0] - 2021-02-16

  • Linters

    • Format YAML with prettier
  • Core

    • Lint docker image using Dockle
  • Fixes

    • Fix ansible-lint test cases for new version
    • Update --help expected return code for shfmt ash formatter and revive go linter
    • Add --write to update files fixed by eslint
    • Pimp MegaLinter sources by adding newLines when missing (manually and from build.py) + fix logger initialization error + call python3 by default (PR329 by Tom Klingenberg)
    • Increase max line length to 500 in yaml-lint default configuration
  • Linter versions upgrades

    • ansible-lint from 4.2.0 to 5.0.0 on 2021-02-09
    • bash-exec from 5.0.17 to 5.1.0 on 2021-02-09
    • cfn-lint from 0.44.6 to 0.44.7 on 2021-02-09
    • hadolint from 1.21.0 to 1.22.1 on 2021-02-09
    • git_diff from 2.26.2 to 2.30.1 on 2021-02-09
    • php from 7.3.26 to 7.4.15 on 2021-02-09
    • phpstan from 0.12.71 to 0.12.74 on 2021-02-09
    • protolint from 0.28.0 to 0.28.2 on 2021-02-09
    • lintr from 2.0.1.9000 to 0.0.0 on 2021-02-09
    • snakemake from 5.32.0 to 5.32.1 on 2021-02-09
    • terragrunt from 0.27.1 to 0.28.2 on 2021-02-09
    • ansible-lint from 5.0.0 to 0.0.0 on 2021-02-09
    • dotnet-format from 4.1.131201 to 5.0.211103 on 2021-02-12
    • stylelint from 13.9.0 to 13.10.0 on 2021-02-12
    • phpstan from 0.12.74 to 0.12.75 on 2021-02-12
    • powershell from 7.0.4 to 7.1.2 on 2021-02-12
    • snakemake from 5.32.1 to 5.32.2 on 2021-02-12
    • coffeelint from 4.1.2 to 4.1.3 on 2021-02-14
    • eslint from 7.19.0 to 7.20.0 on 2021-02-14
    • phpstan from 0.12.75 to 0.12.76 on 2021-02-14
    • black from 19.10 to 20.8 on 2021-02-15
    • snakefmt from 0.2.6 to 0.3.0 on 2021-02-15
    • sqlfluff from 0.3.6 to 0.4.0 on 2021-02-15
    • cfn-lint from 0.44.7 to 0.45.0 on 2021-02-16
    • snakefmt from 0.3.0 to 0.3.1 on 2021-02-16

[4.26.2] - 2021-01-29

  • Linter versions upgrades
    • shfmt from 3.2.1 to 3.2.2 on 2021-01-30
    • yamllint from 1.25.0 to 1.26.0 on 2021-01-30
    • hadolint from 1.20.0 to 1.21.0 on 2021-02-02
    • checkstyle from 8.39 to 8.40 on 2021-02-02
    • eslint from 7.18.0 to 7.19.0 on 2021-02-02
    • phpstan from 0.12.70 to 0.12.71 on 2021-02-02
    • tflint from 0.23.1 to 0.24.1 on 2021-02-02
    • cfn-lint from 0.44.5 to 0.44.6 on 2021-02-03
    • terrascan from 1.3.1 to 1.3.2 on 2021-02-04

[4.26.1] - 2021-01-29

  • Fixes

    • Prevent unexpected token error using mega-linter-runner on old versions of node
    • #293 Fix CI for PR from forked repositories
    • #295 Fix crash when .cspell.json isn't parseable (wrong JSON format)
    • #311 Add java in salesforce flavor descriptor because it's used by Apex PMD
  • Linter versions upgrades

    • phpstan from 0.12.68 to 0.12.69 on 2021-01-24
    • cfn-lint from 0.44.4 to 0.44.5 on 2021-01-25
    • golangci-lint from 1.35.2 to 1.36.0 on 2021-01-27
    • protolint from 0.27.0 to 0.28.0 on 2021-01-27
    • hadolint from 1.19.0 to 1.20.0 on 2021-01-28
    • phpstan from 0.12.69 to 0.12.70 on 2021-01-28
    • clj-kondo from 2020.09.09 to 2021.01.20 on 2021-01-28

[4.26.0] - 2021-01-24

  • Core architecture

    • Manage remote mega-linter.yml configuration files
    • New property EXTENDS, allowing to inherit from remote mega-linter.yml configuration files
    • Add docker-in-docker management (reuse running docker instance)
    • Allow to skip auto apply fixes with commit or PR if latest commit text contains skip fix
    • Provide new issue link to create a new flavor to improve performances
  • Linters

    • Add revive GO linter
    • Add SwiftLint for Swift language
    • New MegaLinter flavor swift
    • Get correct version for eslint-plugin-jsonc
  • Linter versions upgrades

[4.25.0] - 2021-01-22

  • Linters

  • Fixes

    • #269 eslint: .eslintrc.yml is considered as found whereas it's not located in workspace root
  • Linter versions upgrades

[4.24.1] - 2021-01-19

  • mega-linter-runner --install

    • Create .jscpd.json file if copy-paste detection is activated
    • Display ending message
  • Fixes

    • #266: shfmt error in python flavor, and reactivate BASH_SHFMT and DOCKERFILE_HADOLINT for own sources linting)
  • Linter versions upgrades

[4.24.0] - 2021-01-14

  • Linters

  • Linter versions upgrades

    • v8r from 0.4.0 to 0.5.0 on 2021-01-14
    • phpstan from 0.12.66 to 0.12.67 on 2021-01-14
    • psalm from 4.3.1 to Psalm.4.x-dev@ on 2021-01-14

[4.23.3] - 2021-01-14

  • Fix .cspell.json file updater

  • Linter versions upgrades

    • v8r from 0.4.0 to 0.5.0 on 2021-01-14

[4.23.2] - 2021-01-14

  • mega-linter-runner --install:
    • Fix .mega-linter.yml DISABLE property when nothing in it
    • Add default .cspell.json if spelling mistakes detector is activated

[4.23.1] - 2021-01-12

  • Core
    • Refactor part of Linter & reporters to manage correctly logs when linter cli_lint_mode is project or list_of_files
      • Generate ConsoleLinter and Text reports based from Linter.files_lint_results instead of at each loop
      • When TAP Reporter active, switch linters with cli_lint_mode == "list_of_files" to "files"
      • Fix linter output when cli_lint_mode == "list_of_files"
    • Decrease number of Dockerfile steps

[4.23.0] - 2021-01-12

  • Core

    • If the linter is a formatter, errors aren't considered as blocking errors by default
  • Linters

    • Add prettier to format Javascript and Typescript. standard remains default
    • Add remark-lint to check and fix Markdown files. markdownlint remains default
  • Linter versions upgrades

    • golangci-lint from 1.35.1 to 1.35.2 on 2021-01-11
    • cfn-lint from 0.44.2 to 0.44.3 on 2021-01-09
    • tflint from 0.23.0 to 0.23.1 on 2021-01-10
    • dotenv-linter from 2.2.1 to 3.0.0 on 2021-01-11
      • Update MegaLinter to call dotenv-linter v3 with fix and not --fix anymore
    • phpstan from 0.12.65 to 0.12.66 on 2021-01-11

[4.22.1] - 2021-01-07

  • Core

    • Improve warning status in logs
    • Remove timestamp at each log line
  • Enhance integration with GitLab CI

    • Update configuration generator
    • Update core to clean logs when in GitLab CI context

[4.22.0] - 2021-01-06

  • Core

    • Allow user to configure custom scripts in .mega-linter.yml to run before and after linting, with variables PRE_RUN and POST_RUN
    • Fix wrong linter status bug
    • Enhance configuration variables performances
    • Rename XXX_FILE_NAME into XXX_CONFIG_FILE
  • Linters

    • Add JSONC (json with comments) linting with eslint-plugin-jsonc

[4.21.0] - 2021-01-03

  • Linters

    • Add misspell spell checker
    • Allow to define cli_lint_errors_regex in descriptors to extract number of errors from linter output stdout
    • Call linters CLIs with list of files instead of once by file, to improve performances
      • eslint
      • markdownlint
      • pylint
      • flake8
      • isort
  • Core

    • Implement architecture for MegaLinter plugins
    • Count number of errors in linter logs with regexes (cli_lint_errors_count and cli_lint_errors_regex in descriptor files)
    • Cleanup unused legacy from Super-Linter
  • Reports

    • Better icons for Console, GitHub Comment and Text reporters: ✅ ❌
  • Documentation

    • Add Install button for VSCode IDE extensions when available
    • Add Install button for JetBrains IDEs extensions when available
    • Add a new page All linters listing all linters and references to MegaLinter in their documentation
    • Add json-schema documentation generation and references
  • CI

    • Use quick build and TEST_KEYWORDS in commit messages, to improve contributor experience
  • Fixes

    • Upgrade .tflint default config to work with new tflint version

[4.20.0] - 2020-12-28

  • Flavors

    • Add ci_light flavor for only CI config files (Dockerfile,Jenkinsfile,JSON,YAML,XML)
    • Add salesforce flavor for Salesforce projects (DX or Metadata)
    • If all required linters aren't in the current flavor, just skip them with a warning message
  • Core

    • Add Json Schema for descriptors (allows validation and auto-completion from IDEs)
    • Add Json Schema for .mega-linter.yml configuration files

[4.19.0] - 2020-12-27

  • Installation

    • Add a yeoman generator in mega-linter-runner to initialize configuration in a repository: npx mega-linter-runner --install
  • Linters

    • New linter v8r to validate json and yaml files with schemastore.org

[4.18.0] - 2020-12-23

  • Core

    • Don't suggest flavors when MegaLinter validates only the diff files (VALIDATE_ALL_CODE_BASE: false)
    • Fix ConsoleReporter active linters table content
    • Check if linter is able to fix before flagging it as a fixing linter during runtime
  • Flavors

    • New flavor: documentation
  • Reporters

    • Support GitHub Enterprise for GitHub Comment Reporter
    • Support GitHub Enterprise for GitHub Status Reporter
  • Doc

    • Add docker pulls badge in flavors documentation
    • Generate list of references to MegaLinter

[4.17.0] - 2020-12-18

  • Core
    • Allow to use remote linters configuration files with LINTER_RULES_PATH
    • Add .jekyll-cache in the list of ignored folders by default
    • Arrange display of Flavor suggestions (text and order) in reporter logs
  • Build
    • Dynamically generate (build.py) the list of flavors in github actions workflows
  • Doc
    • Reorganize online documentation menus
  • Linters
    • Add new linter git_diff to check for git conflicts markers
    • Fix rakudo installation
    • Fix phpstan installation

[4.16.0] - 2020-12-14

  • Flavored MegaLinters

    • Generate lightweight docker images to improve MegaLinter performances on some language based projects
    • During MegaLinter run, suggest user to use a flavor and write it in reporters
    • Update descriptor YML files to define flavours
    • Update build.py to create one Dockerfile by MegaLinter flavour & flavors documentation
    • New GHA workflows to build all flavoured MegaLinters when pushing in master
  • Fixes

    • Output reporter problems as warnings
    • Don't make MegaLinter fail in case GitHubStatusReporter fails
  • Doc

    • Rename "index" pages into more meaningful labels

[4.15.0] - 2020-12-13

  • Add Vue.js linting (eslint-plugin-vue added in dependencies)

  • Configuration parameters changes:

    • Change config setting logic: EXCLUDED_DIRECTORIES is now replacing original directory list instead of extending it
    • Add config setting: ADDITIONAL_EXCLUDED_DIRECTORIES extends EXCLUDED_DIRECTORIES directory list
    • Add config setting: &lt;LINTER_KEY&gt;_FILE_EXTENSIONS to override corresponding value from linter descriptor file
    • Add config setting: &lt;LINTER_KEY&gt;_FILE_NAMES_REGEX to override corresponding value from linter descriptor file
  • Descriptor yaml schema changes:

    • Rename files_names_not_ends_with to file_names_not_ends_with
    • Rename files_names to files_names_regex and change behavior to expect regular expressions in the list. they're applied using full match (the whole text should match the regular expression)
  • Fix error message from Email Reporter when SMTP password isn't set

  • Fix automerge action yml (skip if secrets.PAT isn't set)
  • Improve caching of compiled regular expressions
  • Override mkdocs theme to make analytics work

  • CI

    • Auto update linters and documentation: Create update PR only if linter versions has been updated
    • Build and deploy docker images only when it's relevant (not in case of just documentation update for example)

[4.14.2] - 2020-12-07

  • Quick fix Github Comment Reporter
  • Reorder linters for reports

[4.14.1] - 2020-12-07

  • Fixes
    • Fix python error when File.io doesn't respond, + harmonize reporter logs

[4.14.0] - 2020-12-07

  • Linters

    • Add Salesforce linter: sfdx-scanner
  • Core architecture

    • Allow to call extra commands to build help content

[4.13.0] - 2020-12-05

  • Major updates in online documentation generation

    • Reorganize TOC
    • Generate individual pages from README sections and update their internal links targets
    • Open external links in a new browser tab
  • New configuration parameters

    • Allow disabling printing alpaca image to console using PRINT_ALPACA config parameter
    • Support list of additional excluded directory basenames via EXCLUDED_DIRECTORIES configuration parameter
  • New reporters:

    • Email reporter, to send mega-linter reports by mail if smtp server is configured
    • File.io reporter, to access reports with a file.io hyperlink
  • Fixes

    • Fix markdown comments generator when build on Windows
    • Fix terrascan unit test case
    • Run some actions/steps only when PR is from same repository
    • Add comments in markdown generated by build.py
    • Fix boolean variables not taken in account in .mega-linter.yml config file
  • Performance

    • Change way to install linters in Dockerfile (replace FROM … COPY) by package or sh installation, to reduce the docker build steps from 93 to 87
      • shellcheck
      • editorconfig-checker
      • dotenv-linter
      • golangci-lint
      • kubeval

[4.12.0] - 2020-11-29

  • Performances
    • Update default workflow to get ride of has_updates action (replace by output has_updated_files from mega-linter github action)
    • Avoid duplicate runs in mega-linter.yml template and internal workflows, using skip-duplicate-actions
    • Give a proper name to each internal workflow
    • Fix issue about mkdirs failing

[4.11.0] - 2020-11-29

  • Manage parallel processing of linters to improve performances

[4.10.1] - 2020-11-28

  • Fallback to default behaviours instead of crashes when git not available

  • mega-linter-runner

    • Allow to send env parameters to mega-linter-runner cli
    • Add examples in documentation
    • Publish mega-linter-runner beta version when pushing in master branch

[4.10.0] - 2020-11-23

  • Add link to linters rules index in documentation
  • Remove ANSI color codes from log files
  • Add performances by linter in console log
  • New option SHOW_ELAPSED_TIME , allowing the number of seconds elapsed by linter in reports

  • NPM package MegaLinter runner

    • runs MegaLinter locally, using .mega-linter.yml configuration (requires docker installed on your computer)
    • test cases added in CI

[4.9.0] - 2020-11-23

  • Core

    • Allow configuration to be defined in a .mega-linter.yml file
  • Linters

    • Add Gherkin (Cucumber language) & gherkin-lint
    • Add RST linter : rst-lint
    • Add RST linter : rstcheck
    • Add RST formatter : rstfmt
    • Activate formatting for BASH_SHFMT
    • Activate formatting for SNAKEMAKE_SNAKEFMT
    • JsCpd: remove copy-paste HTML folder when no abuse copy-paste has been found
  • Logs

    • Store log files as artifacts during test cases
    • Add examples of success and failed linter logs in documentation
    • Remove /tmp/lint and /github/workspace from log files
  • Documentation

    • Add list of supported IDE in each linter documentation
    • Generate GitHub card on linter doc when available
    • Store link preview info during build

[4.8.0] - 2020-11-17

[4.7.1] - 2020-11-16

  • Activate auto-fix for Groovy

[4.7.0] - 2020-11-16

  • Update markdown-link-check default config
  • Add tip in documentation about .cspell.json generated by MegaLinter
  • Remove /tmp/lint from logs
  • Improve summary table for linters in project mode (all project linted in one call, not one file by one file)
  • Add Reporters in documentation, with screenshots
  • New MegaLinter variables to activate/deactivate/configure reporters

[4.6.0] - 2020-11-13

[4.5.0] - 2020-11-11

  • Add Visual Basic .NET language & dotnet-format
  • Refactor removal of arguments for formatters (from custom class to Linter generic class)
  • Perl: lint files with no extension containing Perl shebang
  • Add automerge for PR issues from linter versions updates
  • Fix ignored root files issue

[4.4.0] - 2020-11-05

  • Add Python iSort
  • Quick fix "PR Comment" reporter (orange light emoji)
  • Refresh fork

[4.3.2] - 2020-11-04

  • Add spell checker cspell
  • Add Github Action Workflow to automatically:

    • update linters dependencies
    • rebuild MegaLinter documentation
    • create a PR with updates
  • Apply fixes performed by linters:

    • User configuration (APPLY_FIXES vars)
    • Descriptors configuration: cli_lint_fix_arg_name set on linter in YML when it can format and/or auto-fix issues
    • Provide fixed files info in reports
    • Test cases for all fixable file types: sample_project_fixes
    • Generate README linters table with column "Fix"
    • Provide fix capability in linters docs
    • Update Workflows YMLs to create PR or commit to apply fixes
  • Core Archi:

    • All linters now have a name different than descriptor_id
    • replace calls from os.path.exists to os.path.isfile and os.path.isdir
  • Other:

    • fix Phive install
    • Upgrade linter versions & help

[4.0.0] - 2020-10-01

  • Initial version