2009-05-07 7 views
4

Ich mache Wartung einiger Zweige des C++ Projekts mittlerer Größe (~ 15k Dateien für jeden Zweig). Sehr oft muss ich alle Projektdateien nach gegebener Zeichenfolge oder Regex durchsuchen. Momentan verwende ich den Total Commander, der alle Funktionen hat, die ich möchte (Groß-/Kleinschreibung, Regexes, Dateinamenmasken), aber dieses Tool scannt alle Dateien jedes Mal, es dauert also etwas zu viel Zeit.Textsuchwerkzeug für großen Quellcode mit aktueller Vorindexierung?

Kennen Sie ein Textsuchwerkzeug, mit dem der gesamte Quellbaum vorab indiziert werden kann und eine schnelle Mustererkennung möglich ist? Die Rückgabe aller übereinstimmenden Dateien ist ein Muss, eine Vorschau der gefundenen Musterumgebung wäre schön. Natürlich müssen Indizes sofort aktualisiert werden, wenn sich etwas ändert.

Visual Studio-Suche ist nicht genug, es scannt nur Quelldateien (nicht Metadaten oder benutzerdefinierte Ressourcen).

Gibt es ein solches Werkzeug? Ich benutze Windows XP.

EDIT: Ich habe sehr brauchbar Werkzeug gefunden, meine eigene Antwort

Antwort

0

Eine einfache Art und Weise sehen, das Problem zu umgehen, ist auf einem RAM-Disk alle die Quellcode zu setzen. Wenn Sie die Datei-IO auf diese Weise beschleunigen, werden Sie einen großen Leistungssprung sehen, ohne die Werkzeugkette anderweitig zu ändern.

+0

Wird nicht unbedingt helfen.Alle modernen Betriebssysteme haben Zugriff auf die Caches, so dass sie nach der ersten Suche bereits im RAM sind. – sleske

+0

~ 500 MB Quellen pro Zweig - zu groß, um ein paar Zweige in RAM-Disk (WinXP 32bit) zu behalten, zu groß, um bei Bedarf zu kopieren. – tomash

2

cscope ist in der Lage, c-Dateien und in gewissem Umfang auch C++ zu indizieren. Ich persönlich benutze das KDE-Frontend-KScope, das nutzerfreundlicher ist als das von cscope.

abgesehen davon, dass Sie vielleicht einen Blick auf OpenGrok

+0

Windows-Lösung wird benötigt, Frage bearbeitet. Außerdem müssen alle Dateien durchsucht werden (auch binär-ähnlich), nicht nur Quellcode-Dateien. – tomash

0

Bitte haben http://aaron.oirt.rutgers.edu/myapp/docs/W1300.testAndDemo sehen und den Link zu dem Codebaum Suche Demo „Demo suchen“ folgen.
Dies wird genau das tun, was Sie fragen für und es ist eine Standard-Demo-Komponente von WHIFF. Sie werden haben, um die Plugins von Pygments hinzuzufügen, um interessante Zeichenfolgen aus Ihre Binärdateien herauszuziehen (oder lesen Sie einfach die ganze Datei als 'Text') - out-of-the-box der Indexer ignoriert Dateien. t erkennen. Es gibt einen einfachen Hack, um es "essen alles" zu machen - lassen Sie mich wissen, wenn Sie mehr Informationen wollen.

Die Installations- und Befehlszeilenschnittstellen für die Suche sind unter unter http://aaron.oirt.rutgers.edu/myapp/docs/W1300_1000.search beschrieben.

+0

Leider ist Web-Anwendung nicht das, wonach ich suche. – tomash

+0

Eigentlich ist das Webinterface nur eine Fassade. Es gibt auch Befehlszeilenschnittstellen. –

0

Sie könnten Google Desktop-Suche versuchen, oder wie wäre es mit Lucene oder clucene (Lucene nach C++ portiert) als ein universelles Indexierungswerkzeug.

+0

Unterstützt Google Desktop Search die Indizierung auf das ausgewählte Verzeichnis, ermöglicht mehrere Datenbanken, Regex-Suche und so weiter? – tomash

0

Ich weiß, dass Sie keine Webapp unbedingt wollen, aber versuchen Sie Open Grok.

0

Der Windows-Indexdienst scheint alle Ihre Kriterien zu erfüllen.

1

Ich weiß es nicht sicher (ich habe keine Erfahrung), aber ich würde Eclipse CDT versuchen. Es indiziert alle Ihre Quellen für das schnelle Nachschlagen von Symbolen, ähnlich wie Eclipse JDT (Java-Tools).