Каковы всеобъемлющие контрольные суммы для Python?

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

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

Ответ 1

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

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

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

Ответ 2

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

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

emacs + python-mode + flymake + ropemacs.

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

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

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

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

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

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

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

зависимостей

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

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

непрерывное интегрирование

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

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