Как отложить на печать ошибку до каждого выполнения - PullRequest
0 голосов
/ 31 мая 2019

В настоящее время я перебираю каждый .py файл в каталоге /.Для каждой итерации я вызываю pycodestyle и выхожу, как только вижу ошибку.

  1. Но я хочу видеть все сообщения об ошибках для каждого файла, даже если какой-либо файл имел ошибку до << Это помогает разработчику увидеть, какие строки он / она должен изменить, чтобыпройти тест (linting). </p>

  2. Если файл не распечатывает ошибку, не печатать ошибку.<< Это будет полезно для моего конвейера Jenkins. </p>

    for file in $(find /-type d -name test -prune -o -type f -name '*.py' -print); do
        filename=$(basename $file)
        if [[ $filename != "__init__.py" ]] ; then
            echo "$file"
            pycodestyle "${file}" || exit 1 <<< This causes an error.
                       << If it passes the linting, it doesn't exit. 
        fi
    done
    

Мое решение:

Каким-то образом мне нужна булева локальная переменная, чтобы показать, печатает ли она ошибку.В конце я могу проверить переменную и возвращает выход или нет.Но я не знаю, как это реализовать ... Спасибо!

1 Ответ

2 голосов
/ 31 мая 2019

Вместо выхода установите переменную, которую вы тестируете в конце, чтобы выйти с правильным состоянием.

status=0
for file in $(find /-type d -name test -prune -o -type f -name '*.py' ! -name '__init__.py' -print); do
    echo "$file"
    pycodestyle "${file}" || status=1
done
exit "$status"

Кроме того, вы можете отфильтровать __init__.py в команде find, поэтому вам не нужен if (я показал вам то же самое в Исключить определенный каталог в то время (команда find) - BASH ).

Кроме того, см. Почему циклическая обработка выходных данных find является плохой практикой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...