UNPKG

mega-linter-runner

Version:
192 lines (152 loc) • 120 kB
<!-- markdownlint-disable MD013 MD033 MD041 --> <!-- header-logo-start --> <div align="center"> <a href="https://megalinter.io" target="blank" title="Visit MegaLinter Web Site"> <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/images/mega-linter-logo.png" alt="MegaLinter" height="300px"> </a> </div> <!-- header-logo-end --> # MegaLinter Runner [![Version](https://img.shields.io/npm/v/mega-linter-runner.svg)](https://npmjs.org/package/mega-linter-runner) [![Downloads/week](https://img.shields.io/npm/dw/mega-linter-runner.svg)](https://npmjs.org/package/mega-linter-runner) [![Downloads/total](https://img.shields.io/npm/dt/mega-linter-runner.svg)](https://npmjs.org/package/mega-linter-runner) [![GitHub stars](https://img.shields.io/github/stars/oxsecurity/megalinter?maxAge=2592000)](https://GitHub.com/oxsecurity/megalinter/stargazers/) <!-- readme-header-start --> [![Docker Pulls](https://img.shields.io/badge/docker%20pulls-5.5M-blue)](https://megalinter.io/flavors/) [![MegaLinter](https://github.com/oxsecurity/megalinter/workflows/MegaLinter/badge.svg?branch=main)](https://megalinter.io) [![codecov](https://codecov.io/gh/oxsecurity/megalinter/branch/master/graph/badge.svg)](https://codecov.io/gh/oxsecurity/megalinter) [![Secured with Trivy](https://img.shields.io/badge/Trivy-secured-green?logo=docker)](https://github.com/aquasecurity/trivy) [![GitHub Sponsors](https://img.shields.io/github/sponsors/nvuillam)](https://github.com/sponsors/nvuillam) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Check+MegaLinter+to+say+goodbye+to+dirty+code+in+your+projects+%3A%29+100%25+free+and+open+source+for+all+uses&url=https://megalinter.io/&via=NicolasVuillamy&hashtags=linters,code,quality,ci,python,java,golang,c,dotnet,kotlin,rust,scala,salesforce,terraform) <!-- welcome-phrase-start --> **MegaLinter** analyzes [**37 languages**](#languages), [**15 formats**](#formats), [**16 tooling formats**](#tooling-formats) , [**copy-pastes**](#other) and [**spell**](#other) in your repository sources, generate [**reports in several formats**](#reports), and can even [**apply formatting and auto-fixes**](#apply-fixes) with **auto-generated commit or PR**, to ensure all your projects are clean, whatever IDE/toolbox are used by their developers ! <!-- welcome-phrase-end --> <!-- online-doc-start --> See [**MegaLinter Online Documentation Web Site**](https://megalinter.io/) <!-- online-doc-end --> <!-- readme-header-end --> This package allows to run [MegaLinter](https://megalinter.io/) locally before running it in your CD/CI workflow, or simply to locally apply reformatting and fixes without having to install up to date linters for your files ![Screenshot](https://github.com/oxsecurity/megalinter/blob/main/docs/assets/images/ConsoleReporter.jpg?raw=true>) ## Installation ### Pre-requisites You need to have [NodeJS](https://nodejs.org/en/) and [Docker](https://www.docker.com/) installed on your computer to run MegaLinter locally with MegaLinter Runner ### Global installation ```shell npm install mega-linter-runner -g ``` ### Local installation ```shell npm install mega-linter-runner --save-dev ``` ### No installation You can run mega-linter-runner without installation by using `npx` Example: ```shell npx mega-linter-runner -r beta -e "'ENABLE=MARKDOWN,YAML'" -e 'SHOW_ELAPSED_TIME=true' ``` ### Pre-commit hook You can run mega-linter-runner as a [pre-commit](https://pre-commit.com/) hook Sample `.pre-commit-config.yaml`: ```yaml repos: - repo: https://github.com/oxsecurity/megalinter rev: v6.8.0 # Git tag specifying the hook, not mega-linter-runner, version hooks: - id: megalinter-incremental # Faster, less thorough stages: - commit - id: megalinter-full # Slower, more thorough stages: - push ``` See [`.pre-commit-hooks.yaml`](https://github.com/oxsecurity/megalinter/blob/main/.pre-commit-hooks.yaml) for more details. ## Usage ```shell mega-linter-runner [OPTIONS] [FILES] ``` The options are only related to mega-linter-runner. For MegaLinter options, please use a `.mega-linter.yml` [configuration file](#configuration) | Option | Description | Default | |------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------| | `-p` <br/> `--path` | Directory containing the files to lint | current directory | | `-f` <br/> `--flavor` | Set this parameter to use a [MegaLinter flavor](https://megalinter.io/flavors/) | `all` | | `-d` <br/> `--image` | You can override the used docker image, including if it's on another docker registry | <!-- --> | | `-e` <br/> `--env` | Environment variables for MegaLinter, following format **'ENV_VAR_NAME=VALUE'** for a single value or **"'ENV_VAR_NAME=VALUE1,VALUE2'"** for a list of values<br/>Warning: Quotes are mandatory | <!-- --> | | `--fix` | Automatically apply formatting and fixes in your files | <!-- --> | | `-r` <br/> `--release` | Allows to override MegaLinter version used | `v5` | | `-h` <br/> `--help` | Show mega-linter-runner help | <!-- --> | | `-v` <br/> `--version` | Show mega-linter-runner version | <!-- --> | | `-i` <br/> `--install` | Generate MegaLinter configuration files | <!-- --> | | `--container-name` | Specify MegaLinter container name | <!-- --> | | `--remove-container` | Remove MegaLinter Docker container when done | <!-- --> | _You can also use `npx mega-linter-runner` if you do not want to install the package_ ### Examples ```shell mega-linter-runner ``` ```shell mega-linter-runner -p myFolder --fix ``` ```shell mega-linter-runner -r beta -e "'ENABLE=MARKDOWN,YAML'" -e 'SHOW_ELAPSED_TIME=true' ``` ```shell mega-linter-runner --flavor python --release beta --filesonly path/to/my/file1.py another/path/to/a/file.js and/another/file.py ``` ## Configuration You can generate a ready-to-use [.mega-linter.yml configuration file](https://megalinter.io/configuration/) by running `npx mega-linter-runner --install` at the root of your repository ![Runner Install](https://github.com/oxsecurity/megalinter/blob/main/docs/assets/images/mega-linter-runner-generator.gif?raw=true) <!-- linters-section-start --> ## Linters <!-- linters-table-start --> ### Languages | <!-- --> | Language | Linter | Additional | |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------:|---------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/bash.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**BASH**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash.md) | [**bash-exec**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_bash_exec.md)<br/>[_BASH_EXEC_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_bash_exec.md) | | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/bash.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**BASH**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash.md) | [**shellcheck**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_shellcheck.md)<br/>[_BASH_SHELLCHECK_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_shellcheck.md) | [![GitHub stars](https://img.shields.io/github/stars/koalaman/shellcheck?cacheSeconds=3600)](https://github.com/koalaman/shellcheck) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/bash.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**BASH**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash.md) | [**shfmt**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_shfmt.md)<br/>[_BASH_SHFMT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/bash_shfmt.md) | [![GitHub stars](https://img.shields.io/github/stars/mvdan/sh?cacheSeconds=3600)](https://github.com/mvdan/sh) ![formatter](https://shields.io/badge/-format-yellow) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/c.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c.md) | [**cppcheck**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_cppcheck.md)<br/>[_C_CPPCHECK_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_cppcheck.md) | | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/c.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c.md) | [**cpplint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_cpplint.md)<br/>[_C_CPPLINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_cpplint.md) | [![GitHub stars](https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600)](https://github.com/cpplint/cpplint) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/c.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c.md) | [**clang-format**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_clang_format.md)<br/>[_C_CLANG_FORMAT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/c_clang_format.md) | [![GitHub stars](https://img.shields.io/github/stars/llvm/llvm-project?cacheSeconds=3600)](https://github.com/llvm/llvm-project) ![autofix](https://shields.io/badge/-autofix-green) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/clojure.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**CLOJURE**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure.md) | [**clj-kondo**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure_clj_kondo.md)<br/>[_CLOJURE_CLJ_KONDO_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure_clj_kondo.md) | [![GitHub stars](https://img.shields.io/github/stars/borkdude/clj-kondo?cacheSeconds=3600)](https://github.com/borkdude/clj-kondo) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/clojure.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**CLOJURE**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure.md) | [**cljstyle**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure_cljstyle.md)<br/>[_CLOJURE_CLJSTYLE_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/clojure_cljstyle.md) | [![GitHub stars](https://img.shields.io/github/stars/greglook/cljstyle?cacheSeconds=3600)](https://github.com/greglook/cljstyle) ![autofix](https://shields.io/badge/-autofix-green) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/coffee.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**COFFEE**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/coffee.md) | [**coffeelint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/coffee_coffeelint.md)<br/>[_COFFEE_COFFEELINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/coffee_coffeelint.md) | [![GitHub stars](https://img.shields.io/github/stars/clutchski/coffeelint?cacheSeconds=3600)](https://github.com/clutchski/coffeelint) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/cpp.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C++** (CPP)](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp.md) | [**cppcheck**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_cppcheck.md)<br/>[_CPP_CPPCHECK_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_cppcheck.md) | | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/cpp.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C++** (CPP)](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp.md) | [**cpplint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_cpplint.md)<br/>[_CPP_CPPLINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_cpplint.md) | [![GitHub stars](https://img.shields.io/github/stars/cpplint/cpplint?cacheSeconds=3600)](https://github.com/cpplint/cpplint) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/cpp.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C++** (CPP)](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp.md) | [**clang-format**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_clang_format.md)<br/>[_CPP_CLANG_FORMAT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/cpp_clang_format.md) | [![GitHub stars](https://img.shields.io/github/stars/llvm/llvm-project?cacheSeconds=3600)](https://github.com/llvm/llvm-project) ![autofix](https://shields.io/badge/-autofix-green) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/csharp.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C#** (CSHARP)](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp.md) | [**dotnet-format**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_dotnet_format.md)<br/>[_CSHARP_DOTNET_FORMAT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_dotnet_format.md) | [![GitHub stars](https://img.shields.io/github/stars/dotnet/sdk?cacheSeconds=3600)](https://github.com/dotnet/sdk) ![formatter](https://shields.io/badge/-format-yellow) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/csharp.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C#** (CSHARP)](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp.md) | [**csharpier**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_csharpier.md)<br/>[_CSHARP_CSHARPIER_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_csharpier.md) | [![GitHub stars](https://img.shields.io/github/stars/belav/csharpier?cacheSeconds=3600)](https://github.com/belav/csharpier) ![formatter](https://shields.io/badge/-format-yellow) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/csharp.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**C#** (CSHARP)](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp.md) | [**roslynator**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_roslynator.md)<br/>[_CSHARP_ROSLYNATOR_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/csharp_roslynator.md) | [![GitHub stars](https://img.shields.io/github/stars/dotnet/Roslynator?cacheSeconds=3600)](https://github.com/dotnet/Roslynator) ![formatter](https://shields.io/badge/-format-yellow) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/dart.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**DART**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dart.md) | [**dartanalyzer**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dart_dartanalyzer.md)<br/>[_DART_DARTANALYZER_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/dart_dartanalyzer.md) | [![GitHub stars](https://img.shields.io/github/stars/dart-lang/sdk?cacheSeconds=3600)](https://github.com/dart-lang/sdk) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/go.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**GO**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go.md) | [**golangci-lint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go_golangci_lint.md)<br/>[_GO_GOLANGCI_LINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go_golangci_lint.md) | [![GitHub stars](https://img.shields.io/github/stars/golangci/golangci-lint?cacheSeconds=3600)](https://github.com/golangci/golangci-lint) ![autofix](https://shields.io/badge/-autofix-green) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/go.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**GO**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go.md) | [**revive**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go_revive.md)<br/>[_GO_REVIVE_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/go_revive.md) | [![GitHub stars](https://img.shields.io/github/stars/mgechev/revive?cacheSeconds=3600)](https://github.com/mgechev/revive) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/groovy.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**GROOVY**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/groovy.md) | [**npm-groovy-lint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/groovy_npm_groovy_lint.md)<br/>[_GROOVY_NPM_GROOVY_LINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/groovy_npm_groovy_lint.md) | [![GitHub stars](https://img.shields.io/github/stars/nvuillam/npm-groovy-lint?cacheSeconds=3600)](https://github.com/nvuillam/npm-groovy-lint) ![autofix](https://shields.io/badge/-autofix-green) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/java.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**JAVA**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java.md) | [**checkstyle**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java_checkstyle.md)<br/>[_JAVA_CHECKSTYLE_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java_checkstyle.md) | [![GitHub stars](https://img.shields.io/github/stars/checkstyle/checkstyle?cacheSeconds=3600)](https://github.com/checkstyle/checkstyle) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/java.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**JAVA**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java.md) | [**pmd**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java_pmd.md)<br/>[_JAVA_PMD_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/java_pmd.md) | [![GitHub stars](https://img.shields.io/github/stars/pmd/pmd?cacheSeconds=3600)](https://github.com/pmd/pmd) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/javascript.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**JAVASCRIPT**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript.md) | [**eslint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_eslint.md)<br/>[_JAVASCRIPT_ES_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_eslint.md) | [![GitHub stars](https://img.shields.io/github/stars/eslint/eslint?cacheSeconds=3600)](https://github.com/eslint/eslint) ![autofix](https://shields.io/badge/-autofix-green) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/javascript.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**JAVASCRIPT**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript.md) | [**standard**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_standard.md)<br/>[_JAVASCRIPT_STANDARD_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_standard.md) | [![GitHub stars](https://img.shields.io/github/stars/standard/standard?cacheSeconds=3600)](https://github.com/standard/standard) ![autofix](https://shields.io/badge/-autofix-green) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/javascript.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**JAVASCRIPT**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript.md) | [**prettier**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_prettier.md)<br/>[_JAVASCRIPT_PRETTIER_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/javascript_prettier.md) | [![GitHub stars](https://img.shields.io/github/stars/prettier/prettier?cacheSeconds=3600)](https://github.com/prettier/prettier) ![formatter](https://shields.io/badge/-format-yellow) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/jsx.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**JSX**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/jsx.md) | [**eslint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/jsx_eslint.md)<br/>[_JSX_ESLINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/jsx_eslint.md) | [![GitHub stars](https://img.shields.io/github/stars/yannickcr/eslint-plugin-react?cacheSeconds=3600)](https://github.com/yannickcr/eslint-plugin-react) ![autofix](https://shields.io/badge/-autofix-green) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/kotlin.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**KOTLIN**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin.md) | [**ktlint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin_ktlint.md)<br/>[_KOTLIN_KTLINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin_ktlint.md) | [![GitHub stars](https://img.shields.io/github/stars/pinterest/ktlint?cacheSeconds=3600)](https://github.com/pinterest/ktlint) ![autofix](https://shields.io/badge/-autofix-green) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/kotlin.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**KOTLIN**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin.md) | [**detekt**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin_detekt.md)<br/>[_KOTLIN_DETEKT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/kotlin_detekt.md) | [![GitHub stars](https://img.shields.io/github/stars/detekt/detekt?cacheSeconds=3600)](https://github.com/detekt/detekt) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/lua.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**LUA**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua.md) | [**luacheck**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_luacheck.md)<br/>[_LUA_LUACHECK_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_luacheck.md) | [![GitHub stars](https://img.shields.io/github/stars/luarocks/luacheck?cacheSeconds=3600)](https://github.com/luarocks/luacheck) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/lua.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**LUA**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua.md) | [**selene**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_selene.md)<br/>[_LUA_SELENE_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_selene.md) | [![GitHub stars](https://img.shields.io/github/stars/Kampfkarren/selene?cacheSeconds=3600)](https://github.com/Kampfkarren/selene) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/lua.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**LUA**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua.md) | [**stylua**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_stylua.md)<br/>[_LUA_STYLUA_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/lua_stylua.md) | [![GitHub stars](https://img.shields.io/github/stars/JohnnyMorganz/StyLua?cacheSeconds=3600)](https://github.com/JohnnyMorganz/StyLua) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/default.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**MAKEFILE**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/makefile.md) | [**checkmake**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/makefile_checkmake.md)<br/>[_MAKEFILE_CHECKMAKE_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/makefile_checkmake.md) | ![disabled](https://shields.io/badge/-disabled-orange) [![GitHub stars](https://img.shields.io/github/stars/mrtazz/checkmake?cacheSeconds=3600)](https://github.com/mrtazz/checkmake) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/perl.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PERL**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/perl.md) | [**perlcritic**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/perl_perlcritic.md)<br/>[_PERL_PERLCRITIC_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/perl_perlcritic.md) | [![GitHub stars](https://img.shields.io/github/stars/Perl-Critic/Perl-Critic?cacheSeconds=3600)](https://github.com/Perl-Critic/Perl-Critic) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PHP**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md) | [**phpcs**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phpcs.md)<br/>[_PHP_PHPCS_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phpcs.md) | [![GitHub stars](https://img.shields.io/github/stars/PHPCSStandards/PHP_CodeSniffer?cacheSeconds=3600)](https://github.com/PHPCSStandards/PHP_CodeSniffer) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PHP**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md) | [**phpstan**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phpstan.md)<br/>[_PHP_PHPSTAN_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phpstan.md) | [![GitHub stars](https://img.shields.io/github/stars/phpstan/phpstan?cacheSeconds=3600)](https://github.com/phpstan/phpstan) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PHP**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md) | [**psalm**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_psalm.md)<br/>[_PHP_PSALM_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_psalm.md) | [![GitHub stars](https://img.shields.io/github/stars/vimeo/psalm?cacheSeconds=3600)](https://github.com/vimeo/psalm) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PHP**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md) | [**phplint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phplint.md)<br/>[_PHP_PHPLINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_phplint.md) | [![GitHub stars](https://img.shields.io/github/stars/overtrue/phplint?cacheSeconds=3600)](https://github.com/overtrue/phplint) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/php.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PHP**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php.md) | [**php-cs-fixer**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_php_cs_fixer.md)<br/>[_PHP_PHPCSFIXER_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/php_php_cs_fixer.md) | [![GitHub stars](https://img.shields.io/github/stars/PHP-CS-Fixer/PHP-CS-Fixer?cacheSeconds=3600)](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/powershell.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**POWERSHELL**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell.md) | [**powershell**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell_powershell.md)<br/>[_POWERSHELL_POWERSHELL_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell_powershell.md) | [![GitHub stars](https://img.shields.io/github/stars/PowerShell/PSScriptAnalyzer?cacheSeconds=3600)](https://github.com/PowerShell/PSScriptAnalyzer) ![autofix](https://shields.io/badge/-autofix-green) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/powershell.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**POWERSHELL**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell.md) | [**powershell_formatter**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell_powershell_formatter.md)<br/>[_POWERSHELL_POWERSHELL_FORMATTER_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/powershell_powershell_formatter.md) | [![GitHub stars](https://img.shields.io/github/stars/PowerShell/PSScriptAnalyzer?cacheSeconds=3600)](https://github.com/PowerShell/PSScriptAnalyzer) ![formatter](https://shields.io/badge/-format-yellow) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**pylint**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_pylint.md)<br/>[_PYTHON_PYLINT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_pylint.md) | [![GitHub stars](https://img.shields.io/github/stars/pylint-dev/pylint?cacheSeconds=3600)](https://github.com/pylint-dev/pylint) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**black**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_black.md)<br/>[_PYTHON_BLACK_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_black.md) | [![GitHub stars](https://img.shields.io/github/stars/psf/black?cacheSeconds=3600)](https://github.com/psf/black) ![formatter](https://shields.io/badge/-format-yellow) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**flake8**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_flake8.md)<br/>[_PYTHON_FLAKE8_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_flake8.md) | [![GitHub stars](https://img.shields.io/github/stars/PyCQA/flake8?cacheSeconds=3600)](https://github.com/PyCQA/flake8) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**isort**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_isort.md)<br/>[_PYTHON_ISORT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_isort.md) | [![GitHub stars](https://img.shields.io/github/stars/PyCQA/isort?cacheSeconds=3600)](https://github.com/PyCQA/isort) ![formatter](https://shields.io/badge/-format-yellow) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**bandit**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_bandit.md)<br/>[_PYTHON_BANDIT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_bandit.md) | [![GitHub stars](https://img.shields.io/github/stars/PyCQA/bandit?cacheSeconds=3600)](https://github.com/PyCQA/bandit) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**mypy**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_mypy.md)<br/>[_PYTHON_MYPY_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_mypy.md) | [![GitHub stars](https://img.shields.io/github/stars/python/mypy?cacheSeconds=3600)](https://github.com/python/mypy) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**pyright**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_pyright.md)<br/>[_PYTHON_PYRIGHT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_pyright.md) | [![GitHub stars](https://img.shields.io/github/stars/microsoft/pyright?cacheSeconds=3600)](https://github.com/microsoft/pyright) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**ruff**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_ruff.md)<br/>[_PYTHON_RUFF_](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_ruff.md) | [![GitHub stars](https://img.shields.io/github/stars/astral-sh/ruff?cacheSeconds=3600)](https://github.com/astral-sh/ruff) ![autofix](https://shields.io/badge/-autofix-green) ![sarif](https://shields.io/badge/-SARIF-orange) | | <img src="https://github.com/oxsecurity/megalinter/raw/main/docs/assets/icons/python.ico" alt="" height="32px" class="megalinter-icon"></a> <!-- linter-icon --> | [**PYTHON**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python.md) | [**ruff-format**](https://github.com/oxsecurity/megalinter/tree/main/docs/descriptors/python_ruff_format.md)<br/>[_PYTHON_RUFF_FORMAT_](https://github.com/oxsecurity/megalinter/tree/main/docs/descri