Flake8 linter仅通过推送文件上的Bitbucket管道进行检查

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

我正在尝试在bitbucket管道中设置Flake8 linter,它可以工作,但我只想对推送的文件运行linter。当前,它在整个项目上运行。

项目中有很多模块没有经过优化,并且暂时没有计划这样做。

下面给出的是bitbucket-pipelines.yml。

image: python:3.7.3

pipelines:
  default:
    - step:
        caches:
          - pip
        name: Check flake8
        script: # Modify the commands below to build your repository.
          - pip install flake8
          - flake8 --max-line-length=180 --ignore=E203,W503

enter image description here

例如,我只推送了[[core / util.py,并且只需要对该文件运行lint。我可以指定以下特定文件以继续运行。

- flake8 core/util.py --max-line-length=180 --ignore=E203,W503
    甚至有可能使其动态化以接收所有推送的文件吗?
  1. 当然,可以推送多个文件,甚至可以配置吗?
python git bitbucket bitbucket-pipelines flake8
1个回答
0
投票
感谢@phd

以下命令将返回当前提交的文件列表。

git show --name-only --pretty=format:

而且完整的命令是:

flake8 $(git show --name-only --pretty=format:) --max-line-length=180 --ignore=E203,W503

编辑:

根据@Anthony的说法,确实正确,上述命令仅在一次恰好一次提交时才有效。

我找不到任何解决方案来检查所有提交,因此仅检查了最后三个提交。

不是适当的解决方案

,但根据我的组织工作流程,它会起作用。

[Warning:对于像合并到master分支这样的合并,这肯定是不可靠的,因为将要合并很多提交,并且只会检查最后三个提交。

flake8 $(git log --name-only --pretty=oneline --full-index HEAD^^^..HEAD | grep -vE '^[0-9a-f]{40} ' | sort | uniq) --exclude=*.yml,*.yaml,*.js,*.css,*.json,*.xml,*.md --max-line-length=180 --ignore=E203,W503
© www.soinside.com 2019 - 2024. All rights reserved.