Как контролировать качество кода питона / джанго / сельдерея
Я веду большой проект на Python, использующий Django(модель), сельдерей, Python. Прямо сейчас я просто обнаружил, что качество кода вышло из-под контроля. Проблемы:
- В коде, представленном git, есть какая-то базовая ошибка программиста (она должна была быть проверена тестом)
- Север отправляет код в одну ветку. (Мы используем git flow, его нужно сливать очень часто)
Для решения проблемы 1 я думаю использовать Pylint, но наш проект большой, и у него очень много зависимостей (Django,Celery).
Может ли Pylint работать хорошо? У меня просто есть попытка Pylint, кажется, он сообщит о некоторой вводящей в заблуждение ошибке, как django.objects
не существует. Итак, какова ваша лучшая практика для контроля качества вашего проекта?
Для проблемы 2, я понятия не имею, как ее улучшить?
2 ответа
Я не знаком с другими программами проверки кода Python, но могу рассказать вам о своем опыте использования Pylint с небольшим проектом Django.
Это дает много ложных ошибок. Похоже, что существует компромисс между избыточными ложными ошибками и отсутствием допустимых ошибок в этих категориях. Я использую его в коде, который был протестирован и запущен, поэтому на данный момент я настроил его на игнорирование большинства этих категорий.
Это моя настройка.pylintrc на данный момент
Добавьте материал в путь, если вы хотите, чтобы он проверял, работает ли импорт
[MASTER]
init-hook='import sys; sys.path.append("...your directories...")
Мое либеральное игнорирование сообщений об ошибках, которые часто дают ложные срабатывания.
[MESSAGES CONTROL]
# E1002: use of super on old style class
# E1101: __ has no __ member
# E1103: maybe no member
# F0401: couldn't import
# R0924: badly implemented container (false pos on forms.Form subclassers)
# W0232: class has no __init__ (when inheriting)
# W0613: unused-argument (functions that are supposed to always take request/obj)
disable=E1002,E1101,E1103,F0401,R0903,R0924,W0232,W0613
Добавьте несколько автоматических элементов, чтобы избежать некоторых общих E1101, если вы хотите включить эту проверку
[TYPECHECK]
generated-members=REQUEST,acl_users,aq_parent,objects,_meta,id,pk
Надеюсь, что это помогает, насколько Django + Pylint идет.
Если вы открыты для использования решения SaaS, не стесняйтесь проверить QuantifiedCode ( https://www.quantifiedcode.com/).
Это онлайн-инструмент для автоматического, непрерывного анализа кода и аналитики, абсолютно бесплатный для проектов с открытым исходным кодом. Он имеет интеграцию с Github и предоставляет широкий спектр настраиваемых проверок кода (как общих, так и библиотечных проверок, например, для Django), а также метрики для вашего проекта (раскрытие: я технический директор).
Наш код проверки также с открытым исходным кодом и может быть найден на Github:
https://github.com/quantifiedcode/checkmate
Есть аналогичные инструменты, которые вы должны также проверить, например, Landscape (www.landscape.io), CodeClimate (www.codeclimate.com), Codacy(www.codacy.com) или SonarSource (www.sonarsource.com - self hosted решение). Большинство из них предоставляют бесплатный уровень для проектов с открытым исходным кодом.