提交时预提交 Pylint“退出代码:32”,`run --all-files` 上没有问题

问题描述 投票:0回答:1

当我运行

pre-commit run --all-files
时一切顺利,当我尝试提交时,
pylint
抛出错误:
Exit code: 32
,后跟使用选项列表。唯一更改的文件是
.py
文件:

git status
On branch include-gitlab-arg
Your branch is up to date with 'origin/include-gitlab-arg'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    renamed:    code/project1/src/Main.py -> code/project1/src/GitLab/GitLab_runner_token_getter.py
    renamed:    code/project1/src/get_gitlab_runner_token.py -> code/project1/src/GitLab/get_gitlab_runner_token.py
    modified:   code/project1/src/__main__.py
    modified:   code/project1/src/control_website.py
    deleted:    code/project1/src/get_website_controller.py
    modified:   code/project1/src/helper.py

错误输出:

git commit -m "some change."
命令会产生以下
pre-commit
错误:

pylint...................................................................Failed
- hook id: pylint
- exit code: 32

usage: pylint [options]

optional arguments:
  -h, --help
    show this
    help
    message and
    exit

Commands:
  Options which are actually commands. Options in this group are mutually exclusive.

  --rcfile RCFILE

pre-commit run --all-files
通过。
.pre-commit-config.yaml
包含:

# This file specifies which checks are performed by the pre-commit service.
# The pre-commit service prevents people from pushing code to git that is not
# up to standards. # The reason mirrors are used instead of the actual
# repositories for e.g. black and flake8, is because those repositories also
# need to contain a pre-commit hook file, which they often don't by default.
# So to resolve that, a mirror is created that includes such a file.

default_language_version:
    python: python3.8.  # or python3


repos:
# Test if the python code is formatted according to the Black standard.
 - repo: https://github.com/Quantco/pre-commit-mirrors-black
   rev: 22.6.0
   hooks:
     - id: black-conda
       args:
         - --safe
         - --target-version=py36

# Test if the python code is formatted according to the flake8 standard.
 - repo: https://github.com/Quantco/pre-commit-mirrors-flake8
   rev: 5.0.4
   hooks:
    - id: flake8-conda
      args: ["--ignore=E501,W503,W504,E722,E203"]

# Test if the import statements are sorted correctly.
 - repo: https://github.com/PyCQA/isort
   rev: 5.10.1
   hooks:
    - id: isort
      args: ["--profile", "black", --line-length=79]

## Test if the variable typing is correct. (Variable typing is when you say:
## def is_larger(nr: int) -> bool: instead of def is_larger(nr). It makes
## it explicit what type of input and output a function has.
## - repo: https://github.com/python/mypy
# - repo: https://github.com/pre-commit/mirrors-mypy
#### - repo: https://github.com/a-t-0/mypy
#   rev: v0.982
#   hooks:
#    - id: mypy

## Tests if there are spelling errors in the code.
# - repo: https://github.com/codespell-project/codespell
#   rev: v2.2.1
#   hooks:
#    - id: codespell

# Performs static code analysis to check for programming errors.
 - repo: local
   hooks:
     - id: pylint
       name: pylint
       entry: pylint
       language: system
       types: [python]
       args:
         [
           "-rn", # Only display messages
           "-sn", # Don't display the score
           "--ignore-long-lines", # Ignores long lines.
         ]

# Runs additional tests that are created by the pre-commit software itself.
 - repo: https://github.com/pre-commit/pre-commit-hooks
   rev: v4.3.0
   hooks:
    # Check user did not add large files.
    - id: check-added-large-files
    # Check if `.py` files are written in valid Python syntax.
    - id: check-ast
    # Require literal syntax when initializing empty or zero Python builtin types.
    - id: check-builtin-literals
    # Checks if there are filenames that would conflict if case is changed.
    - id: check-case-conflict
    # Checks if the Python functions have docstrings.
    - id: check-docstring-first
    # Checks if any `.sh` files have a shebang like #!/bin/bash
    - id: check-executables-have-shebangs
    # Verifies json format of any `.json` files in repo.
    - id: check-json
    # Checks if there are any existing merge conflicts caused by the commit.
    - id: check-merge-conflict
    # Checks for symlinks which do not point to anything.
    - id: check-symlinks
    # Checks if xml files are formatted correctly.
    - id: check-xml
    # Checks if .yml files are valid.
    - id: check-yaml
    # Checks if debugger imports are performed.
    - id: debug-statements
    # Detects symlinks changed to regular files with content path symlink was pointing to.
    - id: destroyed-symlinks
    # Checks if you don't accidentally push a private key.
    - id: detect-private-key
    # Replaces double quoted strings with single quoted strings.
    # This is not compatible with Python Black.
    #- id: double-quote-string-fixer
    # Makes sure files end in a newline and only a newline.
    - id: end-of-file-fixer
    # Removes UTF-8 byte order marker.
    - id: fix-byte-order-marker
    # Add <# -*- coding: utf-8 -*-> to the top of python files.
    #- id: fix-encoding-pragma
    # Checks if there are different line endings, like \n and crlf.
    - id: mixed-line-ending
    # Asserts `.py` files in folder `/test/` (by default:) end in `_test.py`.
    - id: name-tests-test
      # Override default to check if `.py` files in `/test/` START with `test_`.
      args: ['--django']
    # Ensures JSON files are properly formatted.
    - id: pretty-format-json
      args: ['--autofix']
    # Sorts entries in requirements.txt and removes incorrect pkg-resources entries.
    - id: requirements-txt-fixer
    # Sorts simple YAML files which consist only of top-level keys.
    - id: sort-simple-yaml
    # Removes trailing whitespaces at end of lines of .. files.
    - id: trailing-whitespace





 - repo: https://github.com/PyCQA/autoflake
   rev: v1.7.0
   hooks:
    - id: autoflake
      args: ["--in-place", "--remove-unused-variables", "--remove-all-unused-imports", "--recursive"]
      name: AutoFlake
      description: "Format with AutoFlake"
      stages: [commit]

 - repo: https://github.com/PyCQA/bandit
   rev: 1.7.4
   hooks:
   - id: bandit
     name: Bandit
     stages: [commit]

# Enforces formatting style in Markdown (.md) files.
 - repo: https://github.com/executablebooks/mdformat
   rev: 0.7.16
   hooks:
   - id: mdformat
     additional_dependencies:
     - mdformat-toc
     - mdformat-gfm
     - mdformat-black

 - repo: https://github.com/MarcoGorelli/absolufy-imports
   rev: v0.3.1
   hooks:
   - id: absolufy-imports
     files: '^src/.+\.py$'
     args: ['--never', '--application-directories', 'src']

 - repo: https://github.com/myint/docformatter
   rev: v1.5.0
   hooks:
   - id: docformatter

 - repo: https://github.com/pre-commit/pygrep-hooks
   rev: v1.9.0
   hooks:
   - id: python-use-type-annotations
   - id: python-check-blanket-noqa
   - id: python-check-blanket-type-ignore

# Updates the syntax of `.py` files to the specified python version.
# It is not compatible with: pre-commit hook: fix-encoding-pragma
 - repo: https://github.com/asottile/pyupgrade
   rev: v3.0.0
   hooks:
     - id: pyupgrade
       args: [--py38-plus]


 - repo: https://github.com/markdownlint/markdownlint
   rev: v0.11.0
   hooks:
     - id: markdownlint

pyproject.toml

# This is used to configure the black, isort and mypy such that the packages don't conflict.
# This file is read by the pre-commit program.
[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
    \.git
  | \.mypy_cache
  | build
  | dist
)/
'''


[tool.coverage.run]
# Due to a strange bug with xml output of coverage.py not writing the full-path
# of the sources, the full root directory is presented as a source alongside
# the main package. As a result any importable Python file/package needs to be
# included in the omit
source = [
    "foo",
    ".",
]
# Excludes the following directories from the coverage report
omit = [
    "tests/*",
    "setup.py",
]


[tool.isort]
profile = "black"


[tool.mypy]
ignore_missing_imports = true


[tool.pylint.basic]
bad-names=[]
[tool.pylint.messages_control]
# Example: Disable error on needing a module-level docstring
disable=[
    "import-error",
    "invalid-name",
    "fixme",
]


[tool.pytest.ini_options]
# Runs coverage.py through use of the pytest-cov plugin
# An xml report is generated and results are output to the terminal
# TODO: Disable this line to disable CLI coverage reports when running tests.
#addopts = "--cov --cov-report xml:cov.xml --cov-report term"
# Sets the minimum allowed pytest version
minversion = 5.0
# Sets the path where test files are located (Speeds up Test Discovery)
testpaths = ["tests"]

setup.py

"""This file is to allow this repository to be published as a pip module, such
that people can install it with: `pip install networkx-to-lava-nc`.

You can ignore it.
"""
import setuptools

with open("README.md", encoding="utf-8") as fh:
    long_description = fh.read()

setuptools.setup(
    name="networkx-to-lava-nc-snn",
    version="0.0.1",
    author="a-t-0",
    author_email="[email protected]",
    description="Converts networkx graphs representing spiking neural networks"
    + " (SNN)s of LIF neruons, into runnable Lava SNNs.",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/a-t-0/networkx-to-lava-nc",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: AGPL3",
        "Operating System :: OS Independent",
    ],
)

问题

如何解决 pylint 使用错误以确保提交通过

pre-commit

yaml pylint pre-commit pre-commit.com
1个回答
1
投票

该问题是由

"--ignore-long-lines", # Ignores long lines.
中的
.pre-commit-config.yaml
引起的。我认为它与黑色和
pyproject.toml
的线长设置冲突,分别设置为
79

© www.soinside.com 2019 - 2024. All rights reserved.