Инструменты для поиска в исходном коде проектов python/следующих (больших)

Конкретный пример: знакомство с исходным кодом проекта django (core, contrib, utils и т.д.). Пример полезного инструмента: ctags - он позволяет вам "перейти" к файлу +, где определена функция/метод. Хотите узнать о других инструментах, которые используют разработчики (например: есть ли инструмент, предоставляющий функцию x(), перечисляет функции, вызывающие x() и вызываемые x()?). Спасибо.

Изменить: добавлен ответ с совокупностью инструментов, упомянутых до сих пор в других ответах

Ответ 1

Ниже приводится совокупность инструментов, упомянутых в других ответах...

Cscope

http://cscope.sourceforge.net/

запись в wikipedia: http://en.wikipedia.org/wiki/Cscope

cscope - это консольный режим или текстовый графический интерфейс... Он часто используется в очень больших проектах для поиска исходного кода, функций, деклараций, определений и регулярных выражений с учетом текстовой строки.

pycscope

http://pypi.python.org/pypi/pycscope/

генерирует индекс cscope исходных деревьев Python

ctags и exuberant ctags

http://ctags.sourceforge.net/

http://ctags.sourceforge.net/ctags.html

запись в wikipedia: http://en.wikipedia.org/wiki/Ctags

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

Eclipse:

http://www.eclipse.org/

запись в wikipedia: http://en.wikipedia.org/wiki/Eclipse_%28software%29

Eclipse - это многоязычная платформа для разработки программного обеспечения, содержащая IDE и подключаемую систему для ее расширения. Он написан в основном на Java и может быть использован для разработки приложений на Java и с помощью различных подключаемых модулей на других языках, включая C, С++, COBOL, Python, Perl, PHP и другие.

PyDev

http://pydev.sourceforge.net/

"Pydev - это плагин, который позволяет пользователям использовать Eclipse для разработки Python и Jython, что делает Eclipse первоклассной Python IDE"

Комодо Править

http://www.activestate.com/komodo_edit/

запись в wikipedia: http://en.wikipedia.org/wiki/ActiveState_Komodo

Komodo Edit - бесплатный текстовый редактор для языков динамического программирования, введенный в январе 2007 года. С выпуском версии 4.3 Komodo Edit построен поверх проекта Open Komodo.

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

Инструмент графа (визуализации) Prashanth

http://blog.prashanthellina.com/2007/11/14/generating-call-graphs-for-understanding-and-refactoring-python-code/

Просто подумал, что я поделюсь ссылкой на интересное небольшое удовольствие script, которое я нашел много лет назад, которое рисует график вызовов функций. Он работает только для простых случаев, поэтому "как есть" это более интересно, чем полезно.

Веревка /ropemacs

http://rope.sourceforge.net/ropemacs.html

Ropemacs - это плагин для выполнения рефакторинга python в emacs. Он использует rope библиотеку и pymacs.

http://www.enigmacurry.com/2008/05/09/emacs-as-a-powerful-python-ide/

Wing IDE

http://www.wingware.com/

Wing IDE имеет goto-определение, находит использование, исходный браузер, рефакторинг и другие функции интеллектуального анализа кода, которые должны помочь. Еще один хороший способ понять незнакомый код Python - установить точку останова, запустить ее в отладчике, а затем перейти вверх и вниз по стеку. В Wing Professional вы также можете использовать Debug Probe, чтобы взаимодействовать и тестировать вещи в состоянии выполнения отладки (это оболочка Python, которая работает в контексте текущего фрейма стека отладки).

Ответ 2

Вы можете попробовать cscope! Википедия говорит, что

cscope часто используется для поиска содержимого внутри файлов C или С++, но его можно использовать для поиска содержимого на других языках, таких как Java, Python, PHP и Perl. [править]

И вы также можете выкопать этот проект.

Ответ 3

Я думаю, Komodo Edit и PyDev позволяет вам перейти на функции функции python.

Ответ 4

Многие (или даже большинство, я должен сказать) IDE помогают вам в этом, позволяя вам перейти к определениям переменных и функций, часто просто нажав Ctrl + щелчок или показать вам обзоры классов, где вы можете увидеть все методы и атрибуты a класс включает в себя унаследованные и позволяющие вам перейти к их определению и т.д. и т.д. и т.д. Я не могу рекомендовать такой инструмент достаточно высоко, он очень экономит время на разработку.

Я лично использую WingIDE, который превосходный и имеет все эти функции, но вы также должны проверить KomodoEdit и Eclipse + PyDev. Там, возможно, больше, чего я не знаю, и вполне возможно, что у vim и emacs есть какие-то плагины для этого.

Ответ 5

есть инструмент, который задает функцию x(), перечисляет функции, которые вызывают x() и которые вызывается x()?

Просто подумал, что я поделюсь ссылкой на интересное небольшое удовольствие script, которое я нашел давно, что рисует график вызовов функций. Он работает только для простых случаев, поэтому "как есть" это более интересно, чем полезно.

Для нормальной разработки Python я использую GNU Emacs с помощью rope/ropemacs (найдено видео, показывающее функции), а иногда Eclipse с PyDev.

Ответ 6

Это субъективно, поэтому я думаю, что он, вероятно, должен быть вики-сообществом. Тем не менее, самое лучшее, что вы, вероятно, можете сделать, чтобы сделать просмотр больших проектов, - это ознакомиться с горячими клавишами, представленными в вашей любимой среде IDE. Использование клавиатуры для просмотра большого исходного кода намного проще, чем ручная прокрутка текста, выделение текста и перетаскивание через IDE с помощью мыши.

Ответ 7

Документируйте это, когда идете. Оставьте тропы, улучшите структуру и сохраните заметки. К тому моменту, когда вы найдете способ ввода кода, вы получите хорошую карту.

Ответ 8

Мне нравится Eclipse и PyDev плагин. Эта комбинация была очень полезной для меня.

Ответ 9

Вы должны заметить, что cscope нацелен только на ОС UNIX, Linux.