我正在尝试在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
例如,我只推送了[[core / util.py,并且只需要对该文件运行lint。我可以指定以下特定文件以继续运行。
- flake8 core/util.py --max-line-length=180 --ignore=E203,W503
甚至有可能使其动态化以接收所有推送的文件吗?
- 当然,可以推送多个文件,甚至可以配置吗?
以下命令将返回当前提交的文件列表。
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