Ich schreibe/ändere Code in mehreren Dateiformaten wie Python, MySQL, Perl, HTML, CSS, PHP, JavaScript, AutoHotkey usw.
Ich durchsuche oft meine persönliche Quellcode-Bibliothek nach Beispielen für Syntax oder komplexe Logik zur Wiederverwendung in neuem Code. Manchmal suche ich nach kryptischen Zeichenketten wie =~
, weil ich in einem meiner Perl-Programme nach einem bestimmten regulären Ausdruck suche.
Manchmal suche ich vorhandenen Code mit Copernic , aber leider kann es nur nach Wörtern suchen und ignoriert automatisch jede Programmiersyntax. Es fehlt auch die Farbcodierung der Programmiersprachen-Syntax.
Meine Frage ist: Wie durchsuchen Sie Ihre eigenen Quellcode-Bibliotheken? Welche Software ist dafür gut? Copernic ist unvollkommen, aber immer noch das beste Werkzeug, das ich für diesen Zweck gefunden habe.
Grep und grep-ähnliche Lösungen sind nett, aber ich interessiere mich am meisten für Programme mit einer Benutzeroberfläche, die in Windows verfügbar sind.
Die Source Code Search Engine (SCSE) von Semantic Designs verwendet sprachspezifische Scanner, um jede Quelldatei in ihre einzelnen Lexeme zu zerlegen, alles zu indizieren und bietet dann eine GUI-basierte Suche über die Codebasis in Bezug auf Sprachelemente.
Dies hat den Vorteil, dass (sprachspezifische) Leerzeichen und Kommentare bei der Suche ignoriert werden, es sei denn, Sie möchten sie einbeziehen, und Zahlen und Zeichenfolgen sprachunabhängig anhand ihrer tatsächlichen Werte und nicht anhand einer bestimmten Textvariante suchen können , usw. Die Indizierung ermöglicht die Suche in Millionen von Zeilen und Zehntausenden von Dateien fast sofort.
Im Gegensatz dazu wird eine grep-ähnliche Lösung, die einen extrem schnellen FSA verwendet, jede Datei in einem Stammverzeichnis öffnen und lesen. Es kann schwierig sein, grep dazu zu bringen, alle Dateien zu ignorieren, die kein Text sind, wenn es viele Erweiterungen oder keine Erweiterungen gibt. Das Öffnen von Zehntausenden von Dateien und das Lesen mit grep dauert lange (zig Sekunden). Sie erhalten viele Fehlalarme, da sowohl Programmcode als auch Kommentare gescannt werden. Sie können Leerzeichen (Zeilenumbrüche oder Kommentare) in einem regulären Ausdruck nicht einfach ignorieren, daher sind sie schwer zu schreiben.
Kurz gesagt, SCSE sucht schneller als grep und verwendet einfacher zu schreibende Abfragen mit weniger falsch positiven Ergebnissen.
Vollständige Offenlegung: Ich bin der Direktor von Semantic Designs
Ich verwende grep . Da ich meinen gesamten Code unter demselben Pfad in meinem Dateisystem speichere, öffne ich meine Linux-Shell (aber das funktioniert auch über Cygwin unter Windows) und cd in das Verzeichnis.
Grep ist ein sehr ausgeklügeltes Textsuchwerkzeug, das nach allen Arten von Text suchen kann und dem keine Grenzen gesetzt sind, wonach Sie suchen möchten.
Ihr =~
würde wie folgt gesucht werden:
grep -r "=~" .
Wohingegen das .
auf das aktuelle Verzeichnis verweist, -r
macht die Suche rekursiv. Wenn Sie also Ihre Programme nach Sprache gruppiert haben, können Sie in Ihr Perl-Verzeichnis cd und nur dort suchen.
grep hat Nachteile, der erste wäre die Geschwindigkeit. Es hat keinen Index, also geht jede Suche nacheinander über Ihren gesamten Code, bis etwas gefunden wird. Meistens habe ich eine ungefähre Vorstellung davon, wo der spezifische Code, nach dem ich suche, sein würde, also suche ich nur nach den entsprechenden Verzeichnissen.
Ein weiterer Nachteil ist die Komplexität. Um mit diesem Ansatz gut zu werden, müssen Sie einige Zeit mit ihnen verbringen.
grep wird immer nützlicher, je mehr Linux/Unix-Befehle Sie kennen. Sie könnten zum Beispiel verwenden find
, um alle gewünschten Dateien zu finden (wie alle Perl-Dateien) und dann verwenden , um grep
zu wissen, ob sich dort etwas befindet. Ich (als Java-Entwickler) muss manchmal nach einer Klassendatei in einem JAR suchen, habe aber Millionen von JAR-Dateien herumliegen und weiß nicht, wo sie sich befinden. Also habe ich zufällig eine Befehlszeile, die Gläser findet, ihren Inhalt auflistet und nur diejenigen ausgibt, die die erforderliche Datei enthalten. Ich könnte die gleiche Technik verwenden, um auch den Inhalt der Dateien usw. zu durchsuchen.
Also für dieses spezielle Problem: grep. Aber im Allgemeinen empfehle ich die gesamte Toolchain, die mit Ihrem Unix geliefert wird.
Ich neige dazu, Agent Ransack dafür zu verwenden.
Bildschirmfoto
Sie können CodeSearch ausprobieren, da es speziell für diesen Zweck entwickelt wurde. Features sind:
Hier sind einige nützliche Tools:
Ich habe gelernt, mich stark auf inforapid Search & Replace Link zu verlassen
Zuerst war ich sehr skeptisch, weil die Benutzeroberfläche sehr alt aussieht (2003, funktionierte mit Windows 10), aber nachdem ich es ein paar Mal benutzt hatte, wurde mir klar, dass das Programm die Antwort auf alle meine Probleme war und für alle Arten von Anwendungen verwendet werden kann Zwecke.
Mawg sagt, Monica wieder einzusetzen
ALT
+F7
, um zu suchen. Natürlich bekomme ich viel mehr Funktionen als nur die Suche von TC und benutze nie den Windows Explorer.Mawg sagt, Monica wieder einzusetzen