Автор оригинала: Mike Driscoll.
Есть несколько инструментов анализа кода для Python. Самый известный – пилинт. Тогда есть печекер, и теперь мы движемся к Pyflakes. Проект Pyflakes является частью чего-то известного как проект Divmod. Pyflakes на самом деле не выполняет код, который он проверяет, в отличие от Pychecker. Конечно, Pylint также не выполняет код. Несмотря на это, мы посмотрим на него быстро и посмотрим, как работает Pyflakes, и если это лучше, чем конкуренция.
Начиная
Как вы, возможно, догадались, Pyflakes не является частью распределения Python. Вам нужно будет скачать его из Pypi или из проекта Страница launchpad Отказ После того, как вы его установите, вы можете запустить его против своего собственного кода. Или вы можете следовать и посмотреть, как он работает с нашим тестовым скриптом.
Бегущие пифльки
Мы будем использовать супер простой и довольно глупый пример сценария. На самом деле, это тот же, который мы использовали для пилинта и статей Pychecker. Вот снова для вашего просмотра удовольствия:
Как было отмечено в других статьях, этот тупой код имеет 4 вопроса, 3 из которых остановит программирование от работы. Давайте посмотрим, какие пифльки могут найти! Попробуйте запустить следующую команду, и вы увидите следующий вывод:
C: \ Users \ mdriscoll \ Desktop> Pyflakes Crummy_Code.py
crummy_code.py:1: «SYS» импортирован, но неиспользованный
crummy_code.py:15: undefined Name 'Platform'
В то время как Pyflakes были очень быстро на возвращении этого вывода, он не нашел все ошибки. Главный вызов метода веса проходит слишком много аргументов, а сам метод GeteWease определяется неправильно, так как у него нет аргумента «Self». Ну, вы можете на самом деле можно назвать первым аргументом, что вы хотите, но по соглашению оно обычно называют «я». Если вы исправили свой код в соответствии с какими вами пифльзами, ваш код все еще не будет работать.
Упаковка
Сайт Pyflakes утверждает, что Pyflakes быстрее, чем Pychecker и Pylint. Я не проверил это, но любой, кто хочет сделать это довольно легко, просто бегая его против некоторых больших файлов. Может быть, захватить файл BeautifulSoup или запустите его (а остальные) против чего-то сложного, как писайде или SQLAlchemy, и посмотреть, как они сравнивают. Я лично разочарован, что не поймал все проблемы, которые я искал. Я думаю, что для моих целей я буду придерживаться пилинта. Это может быть удобным инструментом для быстрого и грязного теста или просто заставить вас чувствовать себя лучше после особенно плохого результата от сканирования пилинта.
Дальше чтение
- Моя статья о Pychecker
- Чиновник Pychecker Сайт (аналогичный проект к Pyflakes)
- Дуг Хельман Обзор Анализаторов статического кода Python из журнала Python