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

StackOverflow https://stackoverflow.com/questions/100298

Вопрос

У меня есть большой репозиторий исходного кода, разделенный на несколько проектов.Я хотел бы подготовить отчет о состоянии исходного кода, определив проблемные области, которые необходимо решить.

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

Как мне составить такой отчет?

Это было полезно?

Решение

Для измерения цикломатической сложности есть хороший инструмент: Traceback.org.На странице также дается хороший обзор того, как интерпретировать результаты.

+1 за пилинт.Он отлично подходит для проверки соблюдения стандартов кодирования (будь то ПЭП8 или вариант вашей организации), что в конечном итоге может помочь уменьшить цикломатическую сложность.

Другие советы

Для цикломатической сложности вы можете использовать radon: https://github.com/rubik/radon

(Использовать pip чтобы установить его: pip install radon)

Кроме того, он также имеет следующие функции:

  • необработанные показатели (к ним относятся SLOC, строки комментариев, пустые строки и т. д.)
  • Метрики Холстеда (все)
  • Индекс ремонтопригодности (тот, который используется в Visual Studio)

Для статического анализа есть пилинт и пайчекер.Лично я использую pylint, поскольку он кажется более полным, чем pychecker.

Для цикломатической сложности вы можете попробовать эта программа на Perl, или это статья который представляет программу Python, делающую то же самое

Pycana прекрасно работает, когда вам нужно разобраться в новом проекте!

ПиКАна (Analyzer Python Code) - это причудливое имя для простого анализатора кода для Python, который создает диаграмму класса после выполнения вашего кода.

Посмотри, как это работает:http://pycana.sourceforge.net/

выход:

альтернативный текст http://pycana.sourceforge.net/relations.png

Благодаря Пыдев, ты можешь интегрировать пилинт в Затмение IDE очень легко и получать отчет о коде каждый раз, когда вы сохраняете измененный файл.

Использовать чешуйка8, который обеспечивает анализ pep8, pyflakes и цикломатической сложности в одном инструменте.

Есть инструмент под названиемКлонДиггер это поможет вам найти похожие фрагменты кода.

Для проверки цикломатической сложности, конечно, есть mccabe упаковка.

Монтаж:

$ pip install --upgrade mccabe

Использование:

$ python -m mccabe --min=6 path/to/myfile.py

Обратите внимание на порог 6 выше.Пер этот ответ, оценки >5, вероятно, следует упростить.

Пример вывода с --min=3:

68:1: 'Fetcher.fetch' 3
48:1: 'Fetcher._read_dom_tag' 3
103:1: 'main' 3

При желании его также можно использовать через пилинт-маккейб или pytest-маккейб, и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top