Каковы исчерпывающие контролеры пуха для Python?

Я слышал, что есть несколько инструментов, которые позволяют вам проверять код на наличие распространенных ошибок Python, таких как pylint и pyflakes. Я ищу тот, который является всеобъемлющим, правильным и простым для интеграции в сборку (желательно setup.py или buildbot, если есть веские причины).

Какой из них вы рекомендуете и почему?

2 ответа

Существует несколько программ типа lint для Python:

  • pyflakes - анализирует, отлично подходит для поиска NameErrors, устаревший импорт
  • Пилинт - разборы, очень всеобъемлющие (с чрезмерно-компульсивной стороны).
  • pep8 - разборы, проверка стиля.
  • flake8 - парсер, объединяет pep8 и pyflakes, с дополнительной поддержкой сложности, расширяемый.
  • pychecker - выполняет (будьте осторожны)

Все помогли мне найти небольшие проблемы и имеют свои плюсы и минусы. Здесь также много дискуссий.

Этот вопрос слишком широкий, поэтому я просто перечислю свою цепочку инструментов FWIW.

редактирование

Emacs + Python-режим + Flymake + Ropemacs.

flymake запускает процесс, когда вы редактируете файл, процесс может быть любым. У меня есть flymake, настроенный на запуск пифлексов и pep8. Таким образом, я получаю в файле указания на нарушения pep8, синтаксические ошибки, неиспользуемый импорт, переменные, объявленные, но не использованные и т. Д.

Веревка удобна для прыжков по объявлениям и немного автоматической комплектации. Он также покажет вам документы и подписи функций и т.д...

Я уверен, что есть похожие вещи для Vim. И хотя моему коллеге не удалось запустить его, мне сказали, что wingide может использовать pyflakes и pep8.

тестирование

Нос + различные плагины. В моем emacs я привязываю F7(компиляция) для запуска переноса, таким образом я получаю буфер, в котором я могу перейти к ошибкам, а затем перейти к этой строке в исходном коде.

контроль версий

Я использую Mercurial.

зависимости

buildout или virtualenv или оба. В зависимости от проекта. Используйте то, что лучше для вашего проекта. Я мирился с buildout, потому что сейчас разрабатываю для appengine, и я предпочитаю рецепты в buildout для структуры приложения appengine, а не подход appengine monkey, но это только я.

Если бы я не разрабатывал для appengine, я бы, вероятно, придерживался virtualenv.

непрерывная интеграция

Дженкинс самый простой, который я когда-либо устанавливал. в основном он выполняет тот же набор тестов, который я использую в моей команде компиляции, но также генерирует отчет о покрытии.

Я думаю, что быть в курсе того, что есть, и быть способным трансформировать все это в соответствии с вашими потребностями проекта, над которым вы работаете, лучше, чем искать решение "лучшего в своем роде", главным образом потому, что лучшего в своем классе решения просто не существует.,

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