Рубрики
Без рубрики

Какие инструменты статического анализа Python мне следует использовать?

При программировании в Python есть много инструментов статического анализа Python. Однако не … с меткой CodeQuality, Python, Performance.

При программировании в Python есть много инструментов статического анализа Python. Однако не все из них стоят вашего времени. В этом обзоре мы рассмотрим самые популярные варианты и объясним, какие из них использовать.

1: Пилент

Один инструмент выделяется из остальных – Pylint Не просто имеет лучший ассортимент функций, но он также постоянно поддерживается, что делает его обязательным инструментом для разработчиков Python. Он существует в течение 13 лет, и за это время он включал такие функции, как стандарты кодирования, обнаружение ошибок и рефакторинг путем обнаружения дублированного кода.

Из коробки Pylint легко настроить, требуя минимального объема конфигурации, но он полностью настраивается, если вы хотите, чтобы он был, – редактируя файл, вы можете выбрать, какие ошибки и соглашения наиболее актуальны для вас. Запуск Pylint на некотором коде приведет к чему -то подобному:

$ pylint cards.py
************* Module python_cards.cards
W:  4, 0: Found indentation with tabs instead of spaces (mixed-indentation) 
C:  1, 0: Missing module docstring (missing-docstring)
C:  3, 0: Missing class docstring (missing-docstring)
C:  3, 0: Old-style class defined. (old-style-class)
R:  3, 0: Too few public methods (0/2) (too-few-public-methods)
W:  9,20: Redefining built-in 'list' (redefined-builtin)

Большинство сообщений здесь будут самоочевидными, но первая буква в каждой строке будет отображаться на соглашение, рефактор, предупреждение или ошибку-и в отношении стиля кодирования, Pylint следует за PEP8 Руководство по стилю Анкет Pylint Ships с Pyreverse , который используется для создания диаграмм UML для вашего кода.

Можно автоматизировать пилинт с Апикот , Хадсон или же Дженкинс , и это также интегрируется с несколькими редакторами. Если ваша функция недоступна, вы также можете написать небольшие плагины для добавления личных функций. С поддержкой, чтобы Pylint была очень широкой, нам трудно найти причину, чтобы не использовать этот звездный инструмент для статического анализа Python.

2: питфэксы

Другой инструмент, который может помочь при статическом анализе Python, – это Pyflakes Анкет Его подход сосредоточен на попытках не излучать ложные срабатывания, что приносит свой собственный набор преимуществ и недостатков.

Например, он только исследует синтаксисное дерево каждого файла по отдельности. В сочетании с ограниченным набором отчетных ошибок это делает его быстрее, чем пилинт, но также означает, что он более ограничен с точки зрения того, что он может проверить. Это имеет смысл, однако, если смотреть на контекст создания инструмента, когда он впервые разрабатывался, автор работал в среде, где у всех разработчиков был «многолетний опыт без единого стажера. ” Он также работает за то, что сказал, что качество кода было «очень высоким», что означает, что его инструмент должен только для того, чтобы поймать незначительные проблемы.

В то время как Pyflakes не выполняет никаких стилистических проверок, есть еще один инструмент, который сочетает в себе Pyflakes с проверкой стиля против PEP8, называемого Flake8 . Кроме того, он также добавляет мощные способности конфигурации для каждого проекта.

3: Mypy

Немного отличается от более ранних двух вариантов, Mypy Проверка статического типа для Python. Его основное требование состоит в том, что ваш код аннотируется с использованием синтаксиса аннотации функции Python 3 (нотация PEP 484), чтобы он вводил проверку вашего кода и нашел общие ошибки.

Стоит проверить примеры здесь.

def fib(n: int) -> Iterator[int]:
    a, b = 0, 1
    while a < n:
        yield a
       a, b = b, a+b

Его цель состоит в том, чтобы объединить преимущества динамического типирования и статического типирования, и, хотя Mypy намного моложе Pyflakes и Pylint, она уже поддерживает значительное подмножество особенностей Python.

Проверка типа Mypy проводится во время компиляции-объявления типа действуют как проверенная машина, и статическая набора текста облегчает ваш код для понимания и легче изменять без введения ошибок. Важно отметить, что Mypy в настоящее время поддерживает синтаксис Python 3 и Python 2.7. Вы можете найти Документация здесь Анкет

Какой из них мне использовать?

Здесь нет убедительного ответа, так как все инструменты имеют более сильные и более слабые очки. В настоящее время Pylint является нашим инструментом, но у Pyflakes и Mypy есть интересные функции, которые могут оказаться полезными для некоторых пользователей.

Некоторые другие инструменты также стоит упомянуть, например, Pysonar2 (тип выводов и индексера), Autopep8 (который автоматически исправляет PEP8). Кроме того, не забудьте проверить Список рассылки качества кода , который в настоящее время охватывает PEP8, Pyflakes, McCabe, Flake8 и Pylint.

Если вы ищете простой и экономичный способ интеграции Pylint, вам обязательно следует проверить некоторые платформы, выполняющие Автоматизированные обзоры кода Анкет Эти платформы предоставят не только встраиваемые проверки Pylint, а также многие другие инструменты для большего количества языков (JavaScript, PHP,…), а не только Python.

Оригинал: “https://dev.to/codacy/which-python-static-analysis-tools-should-i-use-3838”