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

Другие вопросы по тегам