Каковы всеобъемлющие контрольные суммы для 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 не существует.