Travis-CI: не сбой сборки из-за предупреждений линтера
У меня есть старый проект Python, который я пытаюсь постепенно очистить с помощью flake8 (чтобы предупредить о проблемах PEP8). Я использую Travis для непрерывной интеграции и хочу, чтобы моя сборка не прошла, если какой-либо модульный тест не пройден Тем не менее, я не хочу, чтобы моя сборка потерпела неудачу просто потому, что flake8 выдал предупреждение (например, о чем-то незначительном, таком как конечный пробел).
Как настроить Travis для вывода предупреждений flake8 (чтобы я мог разрешить их, когда у меня есть время), не вызывая при этом ошибку при сборке?
Мой.travis.yml ниже:
language: python
python:
- "3.6"
install:
- pip install -r requirements.txt
- pip install flake8
script:
- python -m unittest discover -v
- flake8 .
Пример предупреждения flake8:
./meta-db/file_system.py:103:80: E501 line too long (108 > 79 characters)
./meta-db/file_system.py:106:68: W291 trailing whitespace
2 ответа
Добавление флага --exit-zero к flake8 позволяет отображать предупреждения / ошибки lint без сбоев сборки Travis.
script:
- python -m unittest discover -v
- flake8 . --exit-zero # Exit with status code "0" even if there are errors.
Вы можете сделать так, чтобы flake8 проверял только самые последние коммиты, так что вы проверяете, соответствуют ли последние изменения, а не весь проект. Если вы уверены, например,
script:
- python -m unittest discover -v
- git diff -U0 $TRAVIS_COMMIT_RANGE | flake8 --diff
- flake8 . --exit-zero
Как только эта последняя команда прекратит печатать ошибки, вы можете обрезать --exit-zero