All streams
Search
Write a publication
Pull to refresh

Comments 6

@lexx0606 - стоило бы сначала посмотреть существующие анализаторы. Например мой dеpendency_extractor, или nanoapi c визуализатором. Можно тогда найти насколько подсказок что упущено:

  1. Есть такая штука в питоне, как Function Сomposition особенно если ее делать внутри класса (привет fastapi) или объявление класса внутри класса (привет модели django). В примере выше подобные функции будут помечены как методы класса. Хотя это не так.

  2. Пропущена обработка importlib. А это значит, что динамические импорты идут лесом. Библиотеки использующие importlib, вместо условно статических импортов, будут неправильно интерпретированы.

  3. Непонятно, что там с лямбдами, как атрибутами класса. Они будут превращены в методы?

  4. Тайпинг пропущен как таковой. Однако, если в тайпинге указать response: 'django.http.HttpResponse' вроде импорта и нет... а вроде зависимость есть... Зря, конечно, что такое возможно в Python, ну что есть - то есть.

В общем, успехов автору. Все же, ИМХО, такой анализатор писать, используя llm в соавторах, пока рано. Лучше самому начать разбираться в Python, ну и расширять кругозор существующих аналогов тоже не помешает.

С ForwardReference чуть сложнее и зависит от задачи. Если задача найти циклические импорты, то ForwardReference их не образует ни в каком виде. С другой стороны, явный импорт внутри метода или функции — тоже (и тогда раскраска должна это отдельно отмечать).

Спасибо.

Посмотрел, importlib.import_module и importlib.__import__ при генерации AST не создают ast.Import. Надо бы было проверить сразу и самому, но использование importlib.import_module и importlib.__import__ при этом не самая частая практика. В окружениях я такое сейчас нашел только в реально больших проектах. Поэтому на практике недопоказанные импорты я бы заметил не скоро. Так что это исправлю в ближайшее время.

С остальными вещи тоже со временем посмотрю и сделаю нужные правки.

А nanoapi это бесплатная штука?

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

Спасибо, работает. Только на 104 строке опечатка, должно быть `for classeses in self.class_funct_def:`. Но схема всё равно получается нечитаемой. Стрелочки слишком длинные, блоки маленькие.

Посмотрите в сторону plantuml. У него под капотом тот же graphviz, но сам рендер получается приятнее.

Sign up to leave a comment.

Articles