Подтвердить что ты не робот

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

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

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

Как я могу построить такой отчет?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

  • необработанные метрики (включая SLOC, строки комментариев, пустые строки и т.д.)
  • Показатели Halstead (все из них)
  • Индекс работоспособности (тот, который используется в Visual Studio)

Ответ 3

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

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

Ответ 4

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

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

Увидеть как это работает: http://pycana.sourceforge.net/

Выход:

alt text

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

Для проверки цикломатической сложности, конечно же, есть пакет 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

Его также можно использовать через pylint-mccabe или pytest-mccabe и т.д.