我们有一个 CI 脚本,用于对仓库中所有 Python 文件进行样式检查,代码如下:
#!/usr/bin/env bash
find . -name \*.py -exec pep8 --ignore=E402 --max-line-length=120 {} +
if [ $? -ne 0 ]; then
>&2 echo "=== PEP8 errors need to be solved ==="
else
echo "=== PEP8 check ok ==="
fi
pytest
然而,有一些东西没有被检查进去,或者被.gitignore
忽略了。所以我想要取出git ls-files
的输出,并且只在那些文件上运行命令。我可以循环,但是我不想对开发者选择的shell做出假设。理想情况下,我希望通过git ls-files
的集合差异来过滤find
的输出。
git ls-files
的输出传递给xargs foo
命令。 - sideshowbarkerpep8
工具可以在命令行上接受目录名称,并支持--exclude
和--filename
选项来提供包含和排除的模式。在许多情况下,这已足以选择要检查的文件。 - Sven Marnach