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

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

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

Как я могу пойти о создании такого отчета?

Ответы на вопрос(8)

Пикана работает как шарм, когда вам нужно понять новый проект!

PyCAna (Python Code Analyzer) is a fancy name for a simple code analyzer for python that creates a class diagram after executing your code.

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

выход:

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

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

Решение Вопроса

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

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

 18 янв. 2016 г., 21:58
traceback.org неработающая ссылка

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

Монтаж:

$ pip install --upgrade mccabe

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

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

Обратите внимание на порог 6 выше. вэтот ответ, оценки & gt; 5, вероятно, должны быть упрощены.

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

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

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

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

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

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

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

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

raw metrics (these include SLOC, comment lines, blank lines, &c.) Halstead metrics (all of them) Maintainability Index (the one used in Visual Studio)
 08 апр. 2015 г., 11:37
@qarma Если я понимаю документы, я не думаю, что вы можете использовать командную строку. Вы должны использовать Python API.
 10 февр. 2016 г., 17:34
Имеет командную строку
 01 апр. 2015 г., 13:41
Какой переключатель для получения метрик Холстеда?

Существует инструмент под названием CloneDigger это поможет вам найти похожие фрагменты кода.

 09 окт. 2016 г., 00:18
Он не работает с Python 3 и никогда не был в хорошем состоянии.

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

Ваш ответ на вопрос