Как вы можете найти неиспользуемые функции в коде Python?

Таким образом, у вас есть какой-то старый код, лежащий в довольно внушительном проекте. Как вы можете найти и удалить мертвые функции?

Я видел эти две ссылки: найдите неиспользуемый код и Инструмент, чтобы найти неиспользуемые функции в проекте php , но они кажутся специфичными для C # и PHP соответственно.

Есть ли инструмент Python, который поможет вам найти функции, которые не упоминаются нигде в исходном коде (несмотря на отражение / и т. Д.)?

  • Python: избегать предупреждений pylint о слишком многих аргументах
  • Python: оптимизация кода с использованием SQLite3 + Mutagen
  • 5 Solutions collect form web for “Как вы можете найти неиспользуемые функции в коде Python?”

    В python вы можете найти неиспользуемый код, используя динамические или статические анализаторы кода. Два примера для динамических анализаторов – это охват и фигура . У них есть недостаток, что вы должны запускать все возможные ветви своего кода, чтобы найти неиспользуемые части, но они также имеют то преимущество, что вы получаете очень надежные результаты.

    Кроме того, вы можете использовать статические анализаторы кода, которые просто смотрят на ваш код, но фактически не запускают его. Это имеет то преимущество, что они работают намного быстрее, но из-за динамической природы python результаты не на 100% точны, и вы можете их дважды проверить. Два инструмента, которые приходят на ум здесь, – это пеплеты и стервятник . Они дополняют друг друга: Pyflakes находит неиспользованные импортные и неиспользуемые локальные переменные, в то время как стервятник находит неиспользуемые функции, методы, классы, переменные и атрибуты.

    Все инструменты доступны в Индексе пакетов Python http://pypi.python.org/pypi .

    pylint может делать то, что вы хотите.

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

    Из-за довольно жесткого способа представления кода python было бы сложно собрать список функций, основанных на регулярном выражении, который ищет def function_name(..) ?

    И затем найдите каждое имя и суммируйте, сколько раз он показывает в коде. Это, естественно, не учитывало бы комментарии, но пока вы смотрите на функции с менее чем двумя или тремя экземплярами …

    Это немного спартанский, но это звучит как хорошая задача сон-выходных =)

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

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

    Python - лучший язык программирования в мире.