При участии в организациях с открытым исходным кодом, можно заметить необходимость соблюдать стандарты кодирования и конвенции, чтобы ваш запрос на вытягивание пересмотрела и, возможно, объединилась. То же самое и с зрелыми компаниями, и много стартапов тоже: им все любят следовать стандартам кодирования выбранного языка программирования. Этот процесс – это то, что называют Linting Анкет Когда организации заполняют свои коды, все счастливы, потому что соблюдаются стандарты кодирования. Но можем ли мы иметь такую же настройку в наших частных счетах? Могут ли работать так, как эти организации в наших репозиториях? Ответ – да, мы можем, и я покажу вам, если вы останетесь.
В конце этого урока мы будем:
- понять, что такое личинка
- Настройка и интеграция Travisci в наши репозитории
- Используйте Travis CI для кодов Python с использованием Flake8 и Pylint
Что такое лининг
Линтинг называется процессом анализа исходного кода, чтобы пометить ошибки программирования и стилистические ошибки. Лихолонка, когда сделано правильно, может обнаружить расхождение форматирования, ошибки в вашей программе и гарантировать, что вы придерживаетесь стандартов кодирования и соглашений. Linters (инструмент для линии) гарантирует, что вы следите за лучшими практиками, делает ваш код читаемым и простым в обслуживании и, возможно, сэкономить время. Организации используют инструменты CI для автоматизации своей линии, а также гарантируют, что будущие участники этой кодовой базы следуют правилам LINT.
Каждый язык использует свой собственный набор строк, поэтому я бы просто перечислил три Линтера с тремя языками программирования ниже:
Python: Pylint, Flake8, Bandit
Golang: Go-Critic, Go-Vet, Golangci-Lint (это содержит все линщики на языке Go)
JavaScript: Eslint, Jslint.
В центре внимания этого урока мы сосредоточимся на кодах питона.
Настройте Travisci и интегрируйте Travisci в ваши репозитории
В предыдущем разделе мы говорили об организациях, использующих инструменты CI для автоматизации их личинга. Но что такое CI?
Непрерывная интеграция – это практика разработки программного обеспечения, в которой разработчики регулярно объединяют свои изменения кода в центральный репозиторий, после чего выполняются автоматические сборки и тесты. Непрерывная интеграция чаще всего относится к стадии сборки или интеграции процесса выпуска программного обеспечения и влечет за собой как компонент автоматизации (например, CI или сервис сборки), так и культурный компонент (например, обучение часто интегрированию). Трэвис CI (да ладно, это в названии) – один из тех инструментов, используемых организациями для автоматизации их тестирования на Lint. Многие организации с открытым исходным кодом используют Travis для их автоматизации, и мы имитируем их при автоматизации нашего чека на Lint.
У Travis CI есть все необходимые шаги для настройки в своей документации, поэтому будет излишним напечатать его здесь. Проверьте их документацию Здесь Анкет Как только вы закончите с этим, Трэвис настроен и связан с вашей учетной записью. Чтобы интегрировать Travis с вашими репозиториями, вам нужно добавить .travis.yml Файл в свой каталог на уровне проекта, чтобы вызвать сборку Travis CI.
Коды питона с линином с Трэвисом С.И.
Теперь мы упомянули о Линтерах в Python ранее, поэтому мы выбрали два и использовали: Flake8 и Pylint. Мы проверим следующий код с пакетами.
import json class Dog: def __init__(self, name, age): """Initialize name and age attributes.""" self.dog_name = name self.dog_age = age self.name = "Rambo" self.age = 12 def sit(self): print(f"{self.dog_name} is now sitting") def roll_over(self): print(f"{self.dog_age} rolled over!") my_dog = Dog("Maxwell", 6)
Сохраните приведенный выше код в новом файле с именем app.py
Тогда мы создаем Требования.txt
Файл с содержимым ниже
pytest-pylint==0.16.1 pytest-flake8==1.0.5
Мы выбираем эти пакеты, потому что Travis CI нужно будет запустить тест, а какой лучший пакет для использования этого пакета Pytest. Pytest используется для проведения тестов и будет расширен в последующих статьях.
Примечание : Следующие сеансы должны быть проведены индивидуально. Сначала используйте пакет Flake8, посмотрите результаты, и после того, как вы его исправляете, верните свой код в формат выше и протестируйте с помощью Pylint. Это сделано, чтобы вы видите различия между обоими пакетами и выбираете тот, который любите больше всего.
Flake8
Flake8 – это инструмент для руководства по стилю. Это означает основную цель Flake8, чтобы убедиться, что вы правильно создаете свои коды. Это «обертка, которая проверяет PEP8, пиффейки и круговую сложность». Чтобы настроить его в Трэвисе, создайте файл Travis Yaml, как вам сказали выше, и добавьте в него следующий код.
language: python python: "3.8" install: - pip install -r requirements.txt scripts: - pytest --flake8
Язык: Это говорит Трэвису использовать питон в качестве языка программирования для этой сборки.
Python: Здесь вы выбираете версию, с которой вы хотите протестировать свой код, он поддерживает всю версию Python от 2.7, чтобы представить Но мы тестируем наши коды с помощью Python версии 3.8.
Установка: мы устанавливаем пакеты, которые мы уже определили в нашем
Требования.txt
файл. Мы хотим установить пакеты в среде Travis, чтобы можно было получить доступ.Сценарии: Здесь мы выполняем
pytest - -flake8
Пакет мы установили. Этот пакет Pytest, а Flake8 катится в одном. Это означает, что он будет проверять все.py
Файлы в коде против Flake8.
Пилент
Pylint немного отличается от Flake8, это на самом деле полная доза: он проверяет руководство по стилю, программные ошибки и следует за лучшими практиками. Некоторые даже говорят, что Pylint слишком строг в своих правилах (ну, это правда, и вы это увидите) Итак, некоторые люди используют черный
Вместо пилинта. Мы бы сделали ту же настройку, что и выше Отредактируйте файл .travis.yml
выше, чтобы использовать Pylint,
language: python python: "3.8" install: - pip install -r requirements.txt scripts: - pytest --pylint
Это следует за тем же объяснением, что и в вышеперечисленном, и на этот раз мы выполняем Pylint, чтобы проверить вместо Flake8.
Полученные результаты
Когда мы совершаем приведенный выше код в репозиторий, Трэвис создает среду, необходимую для проверки кода на Flake8 или Pylint. Если вы используете пакет Flake8, вы должны получить следующую ошибку:
Если вы используете пакет Pylint, вы должны получить следующую ошибку:
Теперь у Pylint есть раздражающий C103: Постоянное имя "my_dog" не соответствует стилю именования AUPPER_CASE (неверное имен)
правило Я не люблю Поэтому мы решим игнорировать эту конкретную ошибку, и мы делаем это …
Таким образом, окончательный код для этого проходит как Flake8, так и Pylint, как ниже:
"""This module is an attempt to practise class in python.""" class Dog: """A simple attempt to model a dog.""" def __init__(self, name, age): """Initialize name and age attributes.""" self.dog_name = name self.dog_age = age self.name = "Rambo" self.age = 12 def sit(self): """Simulate a dog sitting in response to a command.""" print(f"{self.dog_name} is now sitting") def roll_over(self): """Simulate a dog sitting in response to a command.""" print(f"{self.dog_age} rolled over!") my_dog = Dog("Maxwell", 6)
Теперь, если мы перенесем наши коды в репозиторий GIT, тесты успешно проходят. Если вы проверите электронное письмо, связанное с вашей учетной записью GIT, вы должны увидеть поздравительное сообщение, в котором говорилось, что вы исправили сборку.
Вывод
Мы видели, что такое личинка, как добавить Travis CI в нашу среду GIT, и использовали Linters в Python для проверки нашего кода по правилам Python. Вы должны знать, что вы также можете использовать Travis для проверки, делает ли ваш код то, что он должен делать. Это называется разработкой, основанной на тестировании, и мы много расскажем об этом в нашей предстоящей серии Pytest.
До тех пор, наслаждайтесь мощностью автоматизации!
Оригинал: “https://dev.to/edeediong/using-travisci-to-write-better-python-codes-27kg”