mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-25 02:01:02 -05:00
feat: add depndency (#5456)
feat: configure ruff feat: update the orchestration scripts feat: update the test suite docs: update README feat: add test cases for ruff fix: CI error chore: del .github/linters/.ruff.toml fix: CI error fix: README update: LINTER_NAMES_ARRAY fix: Dockerfile fix: .github/linters/.jscpd.json fix: test files fix: del version_command
This commit is contained in:
parent
613d661448
commit
e71a37d49d
12 changed files with 29 additions and 2 deletions
1
.github/linters/.jscpd.json
vendored
1
.github/linters/.jscpd.json
vendored
|
@ -27,6 +27,7 @@
|
||||||
"**/test/linters/python_isort",
|
"**/test/linters/python_isort",
|
||||||
"**/test/linters/python_mypy",
|
"**/test/linters/python_mypy",
|
||||||
"**/test/linters/python_pylint",
|
"**/test/linters/python_pylint",
|
||||||
|
"**/test/linters/python_ruff",
|
||||||
"**/test/linters/r",
|
"**/test/linters/r",
|
||||||
"**/test/linters/ruby",
|
"**/test/linters/ruby",
|
||||||
"**/test/linters/rust_2015",
|
"**/test/linters/rust_2015",
|
||||||
|
|
|
@ -383,6 +383,7 @@ ENV PATH="${PATH}:/venvs/flake8/bin"
|
||||||
ENV PATH="${PATH}:/venvs/isort/bin"
|
ENV PATH="${PATH}:/venvs/isort/bin"
|
||||||
ENV PATH="${PATH}:/venvs/mypy/bin"
|
ENV PATH="${PATH}:/venvs/mypy/bin"
|
||||||
ENV PATH="${PATH}:/venvs/pylint/bin"
|
ENV PATH="${PATH}:/venvs/pylint/bin"
|
||||||
|
ENV PATH="${PATH}:/venvs/ruff/bin"
|
||||||
ENV PATH="${PATH}:/venvs/snakefmt/bin"
|
ENV PATH="${PATH}:/venvs/snakefmt/bin"
|
||||||
ENV PATH="${PATH}:/venvs/snakemake/bin"
|
ENV PATH="${PATH}:/venvs/snakemake/bin"
|
||||||
ENV PATH="${PATH}:/venvs/sqlfluff/bin"
|
ENV PATH="${PATH}:/venvs/sqlfluff/bin"
|
||||||
|
|
|
@ -85,7 +85,7 @@ Super-linter supports the following tools:
|
||||||
| **PHP** | [PHP built-in linter](https://www.php.net/manual/en/features.commandline.options.php) / [PHP CodeSniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) / [PHPStan](https://phpstan.org/) / [Psalm](https://psalm.dev/) |
|
| **PHP** | [PHP built-in linter](https://www.php.net/manual/en/features.commandline.options.php) / [PHP CodeSniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) / [PHPStan](https://phpstan.org/) / [Psalm](https://psalm.dev/) |
|
||||||
| **PowerShell** | [PSScriptAnalyzer](https://github.com/PowerShell/Psscriptanalyzer) |
|
| **PowerShell** | [PSScriptAnalyzer](https://github.com/PowerShell/Psscriptanalyzer) |
|
||||||
| **Protocol Buffers** | [protolint](https://github.com/yoheimuta/protolint) |
|
| **Protocol Buffers** | [protolint](https://github.com/yoheimuta/protolint) |
|
||||||
| **Python3** | [pylint](https://pylint.pycqa.org/) / [flake8](https://flake8.pycqa.org/en/latest/) / [black](https://github.com/psf/black) / [isort](https://pypi.org/project/isort/) |
|
| **Python3** | [pylint](https://pylint.pycqa.org/) / [flake8](https://flake8.pycqa.org/en/latest/) / [black](https://github.com/psf/black) / [isort](https://pypi.org/project/isort/) / [ruff](https://github.com/astral-sh/ruff) |
|
||||||
| **R** | [lintr](https://github.com/jimhester/lintr) |
|
| **R** | [lintr](https://github.com/jimhester/lintr) |
|
||||||
| **Raku** | [Raku](https://raku.org) |
|
| **Raku** | [Raku](https://raku.org) |
|
||||||
| **Renovate** | [renovate-config-validator](https://docs.renovatebot.com/config-validation/) |
|
| **Renovate** | [renovate-config-validator](https://docs.renovatebot.com/config-validation/) |
|
||||||
|
@ -232,6 +232,7 @@ You can configure super-linter using the following environment variables:
|
||||||
| **PYTHON_ISORT_CONFIG_FILE** | `.isort.cfg` | Filename for [isort configuration](https://pycqa.github.io/isort/docs/configuration/config_files.html) (ex: `.isort.cfg`, `pyproject.toml`) |
|
| **PYTHON_ISORT_CONFIG_FILE** | `.isort.cfg` | Filename for [isort configuration](https://pycqa.github.io/isort/docs/configuration/config_files.html) (ex: `.isort.cfg`, `pyproject.toml`) |
|
||||||
| **PYTHON_MYPY_CONFIG_FILE** | `.mypy.ini` | Filename for [mypy configuration](https://mypy.readthedocs.io/en/stable/config_file.html) (ex: `.mypy.ini`, `setup.config`) |
|
| **PYTHON_MYPY_CONFIG_FILE** | `.mypy.ini` | Filename for [mypy configuration](https://mypy.readthedocs.io/en/stable/config_file.html) (ex: `.mypy.ini`, `setup.config`) |
|
||||||
| **PYTHON_PYLINT_CONFIG_FILE** | `.python-lint` | Filename for [pylint configuration](https://pylint.pycqa.org/en/latest/user_guide/run.html?highlight=rcfile#command-line-options) (ex: `.python-lint`, `.pylintrc`) |
|
| **PYTHON_PYLINT_CONFIG_FILE** | `.python-lint` | Filename for [pylint configuration](https://pylint.pycqa.org/en/latest/user_guide/run.html?highlight=rcfile#command-line-options) (ex: `.python-lint`, `.pylintrc`) |
|
||||||
|
| **PYTHON_RUFF_CONFIG_FILE** | `.ruff.toml` | Filename for [ruff configuration](https://docs.astral.sh/ruff/configuration/) |
|
||||||
| **RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES** | not set | Comma-separated filenames for [renovate shareable config preset](https://docs.renovatebot.com/config-presets/) (ex: `default.json`) |
|
| **RENOVATE_SHAREABLE_CONFIG_PRESET_FILE_NAMES** | not set | Comma-separated filenames for [renovate shareable config preset](https://docs.renovatebot.com/config-presets/) (ex: `default.json`) |
|
||||||
| **RUBY_CONFIG_FILE** | `.ruby-lint.yml` | Filename for [rubocop configuration](https://docs.rubocop.org/rubocop/configuration.html) (ex: `.ruby-lint.yml`, `.rubocop.yml`) |
|
| **RUBY_CONFIG_FILE** | `.ruby-lint.yml` | Filename for [rubocop configuration](https://docs.rubocop.org/rubocop/configuration.html) (ex: `.ruby-lint.yml`, `.rubocop.yml`) |
|
||||||
| **SCALAFMT_CONFIG_FILE** | `.scalafmt.conf` | Filename for [scalafmt configuration](https://scalameta.org/scalafmt/docs/configuration.html) (ex: `.scalafmt.conf`) |
|
| **SCALAFMT_CONFIG_FILE** | `.scalafmt.conf` | Filename for [scalafmt configuration](https://scalameta.org/scalafmt/docs/configuration.html) (ex: `.scalafmt.conf`) |
|
||||||
|
@ -302,6 +303,7 @@ You can configure super-linter using the following environment variables:
|
||||||
| **VALIDATE_PYTHON_ISORT** | `true` | Flag to enable or disable the linting process of the Python language. (Utilizing: isort) |
|
| **VALIDATE_PYTHON_ISORT** | `true` | Flag to enable or disable the linting process of the Python language. (Utilizing: isort) |
|
||||||
| **VALIDATE_PYTHON_MYPY** | `true` | Flag to enable or disable the linting process of the Python language. (Utilizing: mypy) |
|
| **VALIDATE_PYTHON_MYPY** | `true` | Flag to enable or disable the linting process of the Python language. (Utilizing: mypy) |
|
||||||
| **VALIDATE_PYTHON_PYLINT** | `true` | Flag to enable or disable the linting process of the Python language. (Utilizing: pylint) |
|
| **VALIDATE_PYTHON_PYLINT** | `true` | Flag to enable or disable the linting process of the Python language. (Utilizing: pylint) |
|
||||||
|
| **VALIDATE_PYTHON_RUFF** | `true` | Flag to enable or disable the linting process of the Python language. (Utilizing: ruff) |
|
||||||
| **VALIDATE_R** | `true` | Flag to enable or disable the linting process of the R language. |
|
| **VALIDATE_R** | `true` | Flag to enable or disable the linting process of the R language. |
|
||||||
| **VALIDATE_RAKU** | `true` | Flag to enable or disable the linting process of the Raku language. |
|
| **VALIDATE_RAKU** | `true` | Flag to enable or disable the linting process of the Raku language. |
|
||||||
| **VALIDATE_RENOVATE** | `true` | Flag to enable or disable the linting process of the Renovate configuration files. |
|
| **VALIDATE_RENOVATE** | `true` | Flag to enable or disable the linting process of the Renovate configuration files. |
|
||||||
|
|
5
TEMPLATES/.ruff.toml
Normal file
5
TEMPLATES/.ruff.toml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Same as .flake8
|
||||||
|
line-length = 120
|
||||||
|
|
||||||
|
[lint]
|
||||||
|
ignore = ["E203"]
|
1
dependencies/python/ruff.txt
vendored
Normal file
1
dependencies/python/ruff.txt
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ruff==0.3.4
|
|
@ -437,6 +437,7 @@ BuildFileArrays() {
|
||||||
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-PYTHON_ISORT"
|
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-PYTHON_ISORT"
|
||||||
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-PYTHON_PYLINT"
|
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-PYTHON_PYLINT"
|
||||||
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-PYTHON_MYPY"
|
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-PYTHON_MYPY"
|
||||||
|
echo "${FILE}" >>"${FILE_ARRAYS_DIRECTORY_PATH}/file-array-PYTHON_RUFF"
|
||||||
elif [ "${FILE_TYPE}" == "raku" ] || [ "${FILE_TYPE}" == "rakumod" ] ||
|
elif [ "${FILE_TYPE}" == "raku" ] || [ "${FILE_TYPE}" == "rakumod" ] ||
|
||||||
[ "${FILE_TYPE}" == "rakutest" ] || [ "${FILE_TYPE}" == "pm6" ] ||
|
[ "${FILE_TYPE}" == "rakutest" ] || [ "${FILE_TYPE}" == "pm6" ] ||
|
||||||
[ "${FILE_TYPE}" == "pl6" ] || [ "${FILE_TYPE}" == "p6" ]; then
|
[ "${FILE_TYPE}" == "pl6" ] || [ "${FILE_TYPE}" == "p6" ]; then
|
||||||
|
|
|
@ -97,6 +97,7 @@ LINTER_COMMANDS_ARRAY_PYTHON_PYLINT=(pylint --rcfile "${PYTHON_PYLINT_LINTER_RUL
|
||||||
LINTER_COMMANDS_ARRAY_PYTHON_FLAKE8=(flake8 --config="${PYTHON_FLAKE8_LINTER_RULES}")
|
LINTER_COMMANDS_ARRAY_PYTHON_FLAKE8=(flake8 --config="${PYTHON_FLAKE8_LINTER_RULES}")
|
||||||
LINTER_COMMANDS_ARRAY_PYTHON_ISORT=(isort --check --diff --sp "${PYTHON_ISORT_LINTER_RULES}")
|
LINTER_COMMANDS_ARRAY_PYTHON_ISORT=(isort --check --diff --sp "${PYTHON_ISORT_LINTER_RULES}")
|
||||||
LINTER_COMMANDS_ARRAY_PYTHON_MYPY=(mypy --config-file "${PYTHON_MYPY_LINTER_RULES}" --install-types --non-interactive)
|
LINTER_COMMANDS_ARRAY_PYTHON_MYPY=(mypy --config-file "${PYTHON_MYPY_LINTER_RULES}" --install-types --non-interactive)
|
||||||
|
LINTER_COMMANDS_ARRAY_PYTHON_RUFF=(ruff check --config "${PYTHON_RUFF_LINTER_RULES}")
|
||||||
LINTER_COMMANDS_ARRAY_R=(R --slave -e "\"lints <- lintr::lint('{}');print(lints);errors <- purrr::keep(lints, ~ .\\\$type == 'error');quit(save = 'no', status = if (length(errors) > 0) 1 else 0)\"")
|
LINTER_COMMANDS_ARRAY_R=(R --slave -e "\"lints <- lintr::lint('{}');print(lints);errors <- purrr::keep(lints, ~ .\\\$type == 'error');quit(save = 'no', status = if (length(errors) > 0) 1 else 0)\"")
|
||||||
LINTER_COMMANDS_ARRAY_RAKU=(raku)
|
LINTER_COMMANDS_ARRAY_RAKU=(raku)
|
||||||
LINTER_COMMANDS_ARRAY_RENOVATE=(renovate-config-validator --strict)
|
LINTER_COMMANDS_ARRAY_RENOVATE=(renovate-config-validator --strict)
|
||||||
|
|
|
@ -223,6 +223,8 @@ PYTHON_MYPY_FILE_NAME="${PYTHON_MYPY_CONFIG_FILE:-.mypy.ini}"
|
||||||
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
||||||
PYTHON_PYLINT_FILE_NAME="${PYTHON_PYLINT_CONFIG_FILE:-.python-lint}"
|
PYTHON_PYLINT_FILE_NAME="${PYTHON_PYLINT_CONFIG_FILE:-.python-lint}"
|
||||||
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
||||||
|
PYTHON_RUFF_FILE_NAME="${PYTHON_RUFF_CONFIG_FILE:-.ruff.toml}"
|
||||||
|
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
||||||
R_FILE_NAME=".lintr"
|
R_FILE_NAME=".lintr"
|
||||||
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
# shellcheck disable=SC2034 # Variable is referenced indirectly
|
||||||
RUBY_FILE_NAME="${RUBY_CONFIG_FILE:-.ruby-lint.yml}"
|
RUBY_FILE_NAME="${RUBY_CONFIG_FILE:-.ruby-lint.yml}"
|
||||||
|
@ -293,7 +295,8 @@ LANGUAGE_ARRAY=('ANSIBLE' 'ARM' 'BASH' 'BASH_EXEC' 'CHECKOV' 'CLANG_FORMAT'
|
||||||
'KUBERNETES_KUBECONFORM' 'KOTLIN' 'LATEX' 'LUA' 'MARKDOWN'
|
'KUBERNETES_KUBECONFORM' 'KOTLIN' 'LATEX' 'LUA' 'MARKDOWN'
|
||||||
'NATURAL_LANGUAGE' 'OPENAPI' 'PERL' 'PHP_BUILTIN' 'PHP_PHPCS' 'PHP_PHPSTAN'
|
'NATURAL_LANGUAGE' 'OPENAPI' 'PERL' 'PHP_BUILTIN' 'PHP_PHPCS' 'PHP_PHPSTAN'
|
||||||
'PHP_PSALM' 'POWERSHELL' 'PROTOBUF' 'PYTHON_BLACK' 'PYTHON_PYLINT'
|
'PHP_PSALM' 'POWERSHELL' 'PROTOBUF' 'PYTHON_BLACK' 'PYTHON_PYLINT'
|
||||||
'PYTHON_FLAKE8' 'PYTHON_ISORT' 'PYTHON_MYPY' 'R' 'RAKU' 'RENOVATE' 'RUBY' 'RUST_2015'
|
'PYTHON_FLAKE8' 'PYTHON_ISORT' 'PYTHON_MYPY' 'PYTHON_RUFF'
|
||||||
|
'R' 'RAKU' 'RENOVATE' 'RUBY' 'RUST_2015'
|
||||||
'RUST_2018' 'RUST_2021' 'RUST_CLIPPY' 'SCALAFMT' 'SHELL_SHFMT'
|
'RUST_2018' 'RUST_2021' 'RUST_CLIPPY' 'SCALAFMT' 'SHELL_SHFMT'
|
||||||
'SNAKEMAKE_LINT' 'SNAKEMAKE_SNAKEFMT' 'STATES' 'SQL' 'SQLFLUFF' 'TEKTON'
|
'SNAKEMAKE_LINT' 'SNAKEMAKE_SNAKEFMT' 'STATES' 'SQL' 'SQLFLUFF' 'TEKTON'
|
||||||
'TERRAFORM_FMT' 'TERRAFORM_TFLINT' 'TERRAFORM_TERRASCAN' 'TERRAGRUNT' 'TSX'
|
'TERRAFORM_FMT' 'TERRAFORM_TFLINT' 'TERRAFORM_TERRASCAN' 'TERRAGRUNT' 'TSX'
|
||||||
|
|
|
@ -54,6 +54,7 @@ LINTER_NAMES_ARRAY['PYTHON_PYLINT']="pylint"
|
||||||
LINTER_NAMES_ARRAY['PYTHON_FLAKE8']="flake8"
|
LINTER_NAMES_ARRAY['PYTHON_FLAKE8']="flake8"
|
||||||
LINTER_NAMES_ARRAY['PYTHON_ISORT']="isort"
|
LINTER_NAMES_ARRAY['PYTHON_ISORT']="isort"
|
||||||
LINTER_NAMES_ARRAY['PYTHON_MYPY']="mypy"
|
LINTER_NAMES_ARRAY['PYTHON_MYPY']="mypy"
|
||||||
|
LINTER_NAMES_ARRAY['PYTHON_RUFF']="ruff"
|
||||||
LINTER_NAMES_ARRAY['R']="R"
|
LINTER_NAMES_ARRAY['R']="R"
|
||||||
LINTER_NAMES_ARRAY['RAKU']="raku"
|
LINTER_NAMES_ARRAY['RAKU']="raku"
|
||||||
LINTER_NAMES_ARRAY['RENOVATE']="renovate-config-validator"
|
LINTER_NAMES_ARRAY['RENOVATE']="renovate-config-validator"
|
||||||
|
|
|
@ -183,6 +183,7 @@ control "super-linter-installed-commands" do
|
||||||
{ linter_name: "raku", version_command: "raku --version | strings -n 8"},
|
{ linter_name: "raku", version_command: "raku --version | strings -n 8"},
|
||||||
{ linter_name: "renovate-config-validator", version_command: "renovate --version"},
|
{ linter_name: "renovate-config-validator", version_command: "renovate --version"},
|
||||||
{ linter_name: "rubocop"},
|
{ linter_name: "rubocop"},
|
||||||
|
{ linter_name: "ruff"},
|
||||||
{ linter_name: "rustfmt"},
|
{ linter_name: "rustfmt"},
|
||||||
{ linter_name: "scalafmt"},
|
{ linter_name: "scalafmt"},
|
||||||
{ linter_name: "shellcheck"},
|
{ linter_name: "shellcheck"},
|
||||||
|
@ -395,6 +396,7 @@ control "super-linter-installed-pypi-packages" do
|
||||||
"isort",
|
"isort",
|
||||||
"mypy",
|
"mypy",
|
||||||
"pylint",
|
"pylint",
|
||||||
|
"ruff",
|
||||||
"snakefmt",
|
"snakefmt",
|
||||||
"snakemake",
|
"snakemake",
|
||||||
"sqlfluff",
|
"sqlfluff",
|
||||||
|
@ -495,6 +497,7 @@ control "super-linter-validate-files" do
|
||||||
"/action/lib/.automation/.python-black",
|
"/action/lib/.automation/.python-black",
|
||||||
"/action/lib/.automation/.python-lint",
|
"/action/lib/.automation/.python-lint",
|
||||||
"/action/lib/.automation/.ruby-lint.yml",
|
"/action/lib/.automation/.ruby-lint.yml",
|
||||||
|
"/action/lib/.automation/.ruff.toml",
|
||||||
"/action/lib/.automation/.scalafmt.conf",
|
"/action/lib/.automation/.scalafmt.conf",
|
||||||
"/action/lib/.automation/.snakefmt.toml",
|
"/action/lib/.automation/.snakefmt.toml",
|
||||||
"/action/lib/.automation/.sql-config.json",
|
"/action/lib/.automation/.sql-config.json",
|
||||||
|
|
4
test/linters/python_ruff/python_bad_1.py
Normal file
4
test/linters/python_ruff/python_bad_1.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
a=1;b=2
|
||||||
|
c=a+b
|
||||||
|
BROKEN_VAR=BROKEN_VAR
|
||||||
|
print(c)
|
4
test/linters/python_ruff/python_good_1.py
Normal file
4
test/linters/python_ruff/python_good_1.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
a = 1
|
||||||
|
b = 2
|
||||||
|
c = a + b
|
||||||
|
print(c)
|
Loading…
Reference in a new issue