Software zum Durchsuchen Ihrer eigenen Quellcode-Bibliotheken?

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.

Ich benutze Total Commander (Sie könnten auch Double Commander verwenden, das kostenlos ist) und drücke ALT+ F7, um zu suchen. Natürlich bekomme ich viel mehr Funktionen als nur die Suche von TC und benutze nie den Windows Explorer.
Sie können auch Search Monkey ausprobieren, obwohl es für Linux umfassender ist als für Windows

Antworten (6)

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.

  • Indiziert Dateien nach sprachspezifischen Lexemen
  • Abfragen können in Mischung aus sprachgenerischen ("Bezeichner") oder sprachspezifischen Entitäten ("Picture-String" in COBOL) angegeben werden.
  • Abfragen überspringen Leerzeichen und Kommentare
  • Weniger Fehlalarme, viel schnellere Suche als grep
  • Die Anmeldefunktion ermöglicht das Aufzeichnen von Spielen
  • Klicken Sie auf Treffer, um den gefundenen Text in der Dateiquelle anzuzeigen
  • Kann so konfiguriert werden, dass der Editor für gefundene Dateien an gefundenen Speicherorten gestartet wird
  • Indexer läuft unter Windows; Ergebnisse können von mehreren Benutzern gemeinsam genutzt werden
  • Java-basierte GUI läuft unter Windows und Linux

Screenshot der Suche in der Linux-Codebasis

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, -rmacht 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 grepzu 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.

  • Frei
  • Microsoft Windows XP (SP3)/2003/Vista/2008/7/2012/8/8.1
  • Unterstützt reguläre Ausdrücke für Dateinamen und Abfragetext
  • Vorschau passender Zeilen aus Dateien im Suchfenster
  • Optionen zum Exportieren von Ergebnissen und Speichern von Suchkriterien

Bildschirmfoto

Screenshot des Agentendurchsuchungsfensters

Sie können CodeSearch ausprobieren, da es speziell für diesen Zweck entwickelt wurde. Features sind:

  • Plattformübergreifend
  • Open Source
  • Indiziert Ihre Quellcodedateien für eine schnellere Suche
  • Unterstützt reguläre Ausdrücke
  • Unterstützt die Suche nach Codesyntax
  • Hat ein Emacs-Paket, so dass Sie es in Ihrem Editor ausführen können

Hier sind einige nützliche Tools:

  • ack , ein Tool wie grep, optimiert für Programmierer,
  • rak ist ein Grep-Ersatz in reinem Ruby,
  • grin kann helfen, Verzeichnisse voller Quellcode (Python-basiert) zu durchsuchen,
  • Der Silver Searcher ist ein Werkzeug zum Suchen von Code (ein Klon von Ack, aber die Feature-Sets haben sich seitdem leicht voneinander entfernt).
Es könnte erwähnenswert sein, dass Grin die vollständige Python-Re unterstützt und standardmäßig .git, .svn usw. Verzeichnisse überspringt.

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.

  • suchen und/oder ersetzen
  • in allen Dateitypen
  • über mehrere Unterordner
  • Freeware für private Lizenz
  • kommerzielle Lizenz 25€
  • schnelle Suche
  • filepath, file & (mehrere) Zeilendeklarationen
  • Suchsitzung speichern
  • Starten Sie mehrere Suchsitzungen gleichzeitig

Geben Sie hier die Bildbeschreibung ein

Für ein kostenloses Äquivalent besuchen Sie unser findandreplace.sourceforge.net