我flake8与一堆插件一起使用(,,flake8-docstrings)。我已将它们全部预安装到.flake8-isortflake8-blackvenv
我的仓库要检查pre-commit:
pyproject.toml(配置black和isort)setup.cfg(配置flake8和pydocstyle)\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 (the package)\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 (the package)\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 venv\nRun Code Online (Sandbox Code Playgroud)\n我想为这两个包调用flake8via 。pre-commit
这是我目前的做法:
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 (the package)\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 (the package)\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 venv\n …Run Code Online (Sandbox Code Playgroud) 我的团队在我们的存储库中使用预提交来运行各种代码检查和格式化程序。我的大多数队友都使用它,但有些人通过使用git commit --no-verify. 无论如何,是否可以在 CI/CD 中运行某些内容以确保所有预提交挂钩都通过(我们正在使用 GitHub 操作)。如果至少有一个钩子失败,则抛出一个错误。
如果husky hook 没有运行,我们需要执行命令chmod +x .husky/*。但我每次去新的分支机构都需要运行。chmod +x .husky/*否则,它会显示此错误:
提示:“.husky/pre-commit”挂钩被忽略,因为它未设置为可执行文件。
谁能告诉我如何解决这个问题?
我用的是哈士奇7.0.1
当使用多个检查或格式化 python 文件的工具时,有没有办法一次性设置行长度?
目前我有:
.flake8文件:
max-line-length = 120
Run Code Online (Sandbox Code Playgroud)
.isort.cfg文件:
line-length = 120
Run Code Online (Sandbox Code Playgroud)
.black文件:
line-length = 120
Run Code Online (Sandbox Code Playgroud)
.pylintrc文件:
max-line-length = 120
Run Code Online (Sandbox Code Playgroud) 在我的 python 项目中,我有 pre-commit-config.YAML,我想在其中创建我的自定义文件。
如果 python lint 错误大于特定数字,则此文件的目的是使 git commit 失败。以下命令将用于计算行数
pylint api/ | wc -l
Run Code Online (Sandbox Code Playgroud)
有人可以建议一些方法。我是 MAC 和 Python 生态系统的新手?
编辑 sh 文件看起来像这样。
#!/bin/sh
a=$(pylint source/ | wc -l)
b=20
errorsCount="$(echo "${a}" | tr -d '[:space:]')"
if [ $errorsCount -gt $b ]
then
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
我试过
repos:
- repo: local
hooks:
- id: custom-script-file
name: custom-script-file
entry: hooks/pre-commit.sh
language: script
types: [python]
pass_filenames: false
Run Code Online (Sandbox Code Playgroud)
但它不会奏效。
我正在尝试从 PyCharm 中的“提交”按钮启动我的预提交挂钩(v.2020.2)。我使用 conda venv (使用 创建conda create -n py38 python=3.8)在其中安装了模块pip install。
我的.pre-commit-config.yaml读物是:
repos:
- repo: local
hooks:
- id: black
name: black
language: system
entry: black --check
types: [python]
- id: isort
name: isort
language: system
entry: isort --check-only
types: [python]
Run Code Online (Sandbox Code Playgroud)
我在这里使用localrepo 是因为我会将我的代码推送到未连接到互联网的 Intranet 存储库。
pre-commit run --all-files在我的本地计算机上从命令行运行运行良好。但是当我尝试从 PyCharm 提交时(
),它会引发以下错误:
Traceback (most recent call last):
File "c:\bib\envs\py38\lib\runpy.py", line 193, in _run_module_as_main
return _run_code(code, main_globals, None, File "c:\bib\envs\py38\lib\runpy.py", line 86, …Run Code Online (Sandbox Code Playgroud) 我尝试运行此命令,但它总是显示此错误,无论如何我都无法修复它。请帮帮我!
(venv)<...>预提交安装
[错误] 胆怯地拒绝安装带有core.hooksPath套件的挂钩。
暗示:git config --unset-all core.hooksPath
有没有办法在客户端使用svn客户端设置预提交挂钩,例如通过eclipse或命令行svn客户端?
在 VSCode 中使用以下命令成功安装预提交:
python3 -m pip install pre-commit --user
Run Code Online (Sandbox Code Playgroud)
但是当我尝试进行预提交安装时,我收到错误消息:
zsh: command not found: pre-commit
Run Code Online (Sandbox Code Playgroud) 将https://pre-commit.com与依赖于 Python venv 中安装的包的 VSCode 挂钩使用时。在预提交上可以指定使用“系统”作为环境。这在具有所需 venv 活动的终端上非常有效。
然而,使用集成的源代码控制似乎可以访问全局 interpeter,因此所需的包不可用。
这里有解决方法吗?至于现在我在预提交配置中指定入口点“path/to/bin/python -m package”。但是我确实认为集成的源代码控制也应该至少尊重选定的互操作者。
有什么想法吗?