Я пишу/модифицирую код в нескольких форматах файлов, таких как Python, MySQL, Perl, HTML, CSS, PHP, JavaScript, AutoHotkey и т. д.
Я часто ищу в своей личной библиотеке исходного кода примеры синтаксиса или сложной логики для повторного использования в новом коде. Иногда я ищу загадочные строки, такие как =~
, потому что я ищу конкретное регулярное выражение в одной из моих программ Perl.
Иногда я ищу существующий код с помощью Copernic , но, к сожалению, он может искать только слова и автоматически игнорирует любой программный синтаксис. В нем также отсутствует цветовая кодировка синтаксиса языка программирования.
Мой вопрос: как вы ищете в своих собственных библиотеках исходного кода? Какой софт для этого подходит? Коперник несовершенен, но все же лучший инструмент, который я когда-либо нашел для этой цели.
Grep и решения, подобные grep, хороши, но меня больше всего интересуют программы с пользовательским интерфейсом, доступные в Windows.
Механизм поиска исходного кода (SCSE) Semantic Designs использует сканеры для конкретных языков, чтобы разбить каждый исходный файл на составляющие его лексемы, индексирует все, а затем обеспечивает поиск на основе графического интерфейса по кодовой базе с точки зрения языковых элементов.
Преимущество этого заключается в игнорировании (зависящих от языка) пробелов и комментариев при поиске, за исключением случаев, когда вы хотите их включить, а также возможности поиска чисел и строк с точки зрения их фактических значений независимым от языка способом, а не конкретным текстовым вариантом. и т. д. Индексация позволяет выполнять поиск по миллионам строк и десяткам тысяч файлов практически мгновенно.
Напротив, решение, подобное grep, использующее чрезвычайно быстрый FSA, будет открывать и читать каждый файл в каком-либо корневом каталоге. Заставить grep игнорировать все файлы, которые не являются текстовыми, может быть сложно, если есть много расширений или нет расширений. Открытие десятков тысяч файлов и их чтение с помощью grep занимает много времени (десятки секунд). Вы получаете много ложных срабатываний, потому что он сканирует программный код, а также комментарии. Вы не можете легко игнорировать пробелы (разрывы строк или комментарии) в регулярном выражении, поэтому их сложно писать.
Короче говоря, SCSE выполняет поиск быстрее, чем grep, используя более простые в написании запросы с меньшим количеством ложноположительных результатов.
Полное раскрытие: я директор Semantic Designs.
Я использую грэп . Поскольку я храню весь свой код по одному и тому же пути в своей файловой системе, я открываю свою оболочку Linux (но это будет работать и через cygwin в Windows) и cd в каталог.
Grep — очень сложный инструмент текстового поиска, который может искать все виды текста и не имеет ограничений на то, что вы хотите искать.
Вас =~
будут искать так:
grep -r "=~" .
В то время как .
ссылки на текущий каталог -r
делают поиск рекурсивным. Итак, если ваши программы сгруппированы по языку, вы можете перейти в каталог perl и искать только там.
У grep есть недостатки, во-первых, это скорость. У него нет индекса, поэтому каждый поиск выполняется последовательно по всему вашему коду, пока что-то не будет найдено. В основном у меня есть приблизительное представление о том, где будет конкретный код, который я ищу, поэтому я ищу только соответствующие каталоги.
Еще один минус — сложность. Чтобы стать хорошим с этим подходом, вам нужно будет провести с ними некоторое время.
grep становится все более и более полезным, чем больше команд linux/unix вы знаете. Вы могли бы, например find
, найти все файлы, которые вы хотите (например, все файлы perl), а затем использовать grep
, чтобы узнать, есть ли там что-то. Мне (как разработчику Java) иногда нужно искать файл класса внутри банки, но вокруг лежат тысячи банок, и я не знаю, где он находится. Итак, у меня есть командная строка, которая находит банки, перечисляет их содержимое и выводит только те, в которых есть требуемый файл. Я мог бы использовать ту же технику для поиска по содержимому файлов и т. д.
Итак, для этой конкретной проблемы: grep. Но в целом я рекомендую всю цепочку инструментов, которая идет с вашим unix.
Обычно я использую для этого агента Ранзака .
Скриншот
Вы можете попробовать CodeSearch, поскольку он создан специально для этой цели. Особенности включают в себя:
Вот несколько полезных инструментов:
Я научился в значительной степени полагаться на быстрый поиск и замену Ссылка
Сначала я очень скептически отнесся к этому, потому что пользовательский интерфейс выглядит очень старым (2003 год, работа с Windows 10), но после нескольких раз использования я понял, что программа была ответом на все мои проблемы и может быть использована для всех видов целей.
Мог говорит восстановить Монику
ALT
+F7
для поиска. Конечно, я получаю намного больше возможностей, чем просто поиск из TC, и никогда не пользуюсь проводником Windows.Мог говорит восстановить Монику