Каковы исчерпывающие контролеры пуха для 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.
непрерывная интеграция
Дженкинс самый простой, который я когда-либо устанавливал. в основном он выполняет тот же набор тестов, который я использую в моей команде компиляции, но также генерирует отчет о покрытии.
Я думаю, что быть в курсе того, что есть, и быть способным трансформировать все это в соответствии с вашими потребностями проекта, над которым вы работаете, лучше, чем искать решение "лучшего в своем роде", главным образом потому, что лучшего в своем классе решения просто не существует.,