6

我正在尝试将检查我的代码使用集成pyflakes到构建过程中。我在我的 中定义了以下目标Makefile

pyflakes:
    find $(APPLICATION_DIRECTORY) -iname "*.py" -exec pyflakes "{}" \;

问题是每次都find返回0,即使有代码问题(pyflakes返回不0)并make成功。理想情况下,我想对每个源文件运行检查,并make在至少有一个-exec失败时停止。有没有办法做到这一点?

4

3 回答 3

5

我认为没有办法find返回退出代码-exec
应该工作的是管道xargs

find $(APPLICATION_DIRECTORY) -iname "*.py" |xargs -I file pyflakes file 
于 2012-08-06T22:14:21.593 回答
3

您可以将 find 的输出通过管道传输到您自己的处理循环并在 pyflakes 返回非 0 的退出状态时退出。

find . -iname '*.jpg' | \
while read line ; do
    pyflakes "$line"
    res=$?
    if [ $res -ne 0 ] ; then
        exit $res
    fi
done
于 2012-08-06T22:17:34.460 回答
1

让它结束查找过程

pyflakes:
    find $(APPLICATION_DIRECTORY) -iname "*.py" -exec bash -c 'pyflakes {}; if [[ $$? != 0 ]]; then kill -INT $$PPID;fi' \;

这是 makefile 中的内容,它不是脚本文件,如果您想知道语法的话。

于 2012-08-07T00:20:35.337 回答