21

Die Codebasis, an der ich arbeite, ist riesig, und grepping dauert etwa 20 Minuten. Ich bin auf der Suche nach einer guten webbasierten Quellcode-Suchmaschine. So etwas wie eine Intranet-Version von koders.com.Was ist eine gute Quellcode-Suchmaschine?

Das einzige, was ich gefunden habe, ist Krugle Enterprise Edition, die nicht ihre Preise postet ... und wenn Sie fragen müssen, können Sie es sich nicht leisten.

Ich würde wirklich eine einfache alte Suchmaschine bevorzugen, ohne viele andere Schnickschnack.

Die Quelle ist meist ASP.NET/C# und Javascript.

+0

Können Sie erklären, was genau das Ziel ist, z. Deine eigene Sourceforge für Code, oder brauchst du einen erweiterten Viewer? Wird primär/grep verwendet? Und was erwartest du zu "finden". Ich habe kurz auf Programmierer geschaut und kann mir (wirklich) keinen Anwendungsfall für ein Unternehmen vorstellen, daher die Frage. – Till

+0

Und wo speichern Sie Ihre Codebasis? Wenn jeder eine ausgecheckte lokale Kopie hat (wie es in modernen VCSs passieren sollte), sollte es ziemlich schnell gehen. Wenn Sie mit NFS arbeiten, können Sie die Codebasis nur so schnell durchsuchen, wie Sie das Ganze über Ihr LAN übertragen können. –

+0

@David: ... wenn Sie darauf bestehen, den Text jeder Datei während der Suche zu lesen. Wenn Sie die Dateien zuerst indizieren, müssen Sie den Text nicht scannen und er kann viel schneller sein. Siehe meine Antwort. –

Antwort

2

Lxr funktioniert gut auf großen Codebasen, wie mit der linux kernel bewiesen. Ich denke, es ist nur für C (Sie haben die verwendeten Sprachen nicht angegeben).

1

Wenn Sie so viel Quellcode haben, müssen Sie möglicherweise ein wenig Zeit in die Einrichtung einer Suchmaschine investieren, um sie zu indizieren. Ich würde Lucene empfehlen - es ist kostenlos, es ist schnell, es ist ziemlich einfach, einen leistungsfähigen Index für jeden Inhalt für jeden mit Programmiererfahrung einzurichten.

http://lucene.apache.org/

+0

Ich habe auf eine schöne Schrumpffolie gehofft. Aber wenn wir keinen finden können, könnten wir am Ende eine Suchmaschine um Lucene oder ähnliches aufbauen. – toohool

+0

Ja - Ich nehme an, dass Sie wirklich viel Code haben - wir beschäftigen uns mit ~ 1 Million Zeilen und finden, dass es in guten modernen IDEs (Intelli-J zum Beispiel) auf einem leistungsfähigen Desktop angemessen gehandhabt werden kann in Module zerlegt. – Peter

-1

Vielleicht sollten Sie einige Zeit und/oder Geld in einem Editor oder IDE investieren, die Symbol-Tagging unterstützt. Sie müssen nur einen Durchlauf durch den gesamten Quellbaum durchführen, um ihn zu markieren, und danach verwendet der Editor eine Indexsuche oder eine Map-Suche, um die Symboldefinition oder Referenzen zu finden.

Einige Beispiele für Editoren oder IDEs, die das Tagging unterstützen, sind Eclipse, Visual Studio, SlickEdit. Einige IDEs können das Feature Symbol Browser oder etwas Ähnliches aufrufen.

+0

Würde dieser Ansatz mit nicht kompiliertem Code wie ASPX- oder Javascript-Dateien funktionieren?Wären Codekommentare durchsuchbar? Wir brauchen wirklich eine Volltextsuche. – toohool

+0

Wow, immer noch downvotes nach 4,3 Jahren. Wenn ich heute diese Antwort schreiben würde, würde ich den Ton ändern. Wenn ich es jetzt neu lese, klingt die ursprüngliche Antwort ein wenig predigerisch. – shoover

+0

Heute verwende ich Sublime Text, der Syntax-Highlighter für jede Sprache, die ich im letzten Jahr verwendet habe (Java, Groovy, Clojure, Javascript, CSS, Haskell, R), plus eine gesunde Gemeinschaft von Benutzern und Plugin-Entwicklern. Es kann auch ASP markieren, und jemand hat hilfreich eine Optimierung für [ASPX] zur Verfügung gestellt (http://myfreakinname.blogspot.com/2013/06/adding-aspx-to-sublime-text-2s-syntax.html). Die Volltextsuche (ja, auch Kommentare) ist super schnell und Sie können mehrere Projekte innerhalb des Editors durchsuchen. Ich habe keine Verbindung mit ST; Ich bin nur ein glücklicher zahlender Kunde. – shoover

6

20 Minuten ist unverschämt! Ich arbeite mit einer Millionen + Zeilen Quellcode-Basis in diesen Tagen und Grepping dauert höchstens ein paar Sekunden (ich benutze ack). Unsere Home-Verzeichnisse werden auf einem Datei-Server gespeichert und über NFS gemountet, und um dies zu beschleunigen, tun wir das, während wir beim Datei-Server angemeldet sind. Ich bin mir nicht sicher, wie lange es NFS dauert, aber es ist sicherlich länger.

Wir führen auch Quellcodeverwaltungsvorgänge aus, während Sie am Dateiserver angemeldet sind, aus den gleichen Leistungsgründen.

+0

ack ist großartig. Und Sie könnten wahrscheinlich in weniger als einer Stunde ein rudimentäres Web-Frontend zusammenstellen. – Thomas

1

Da Sie sagen 'grepping', stelle ich mir vor, Sie sind nicht interessiert an Befehlszeilenlösungen.

Ein Tool wie ctags indiziert und sucht C# - und JavaScript-Codebasen (neben vielen anderen).

Was ist sehr ordentlich über Ctags ist, dass es mit Vim entweder mit dem Taglist-Plugin kombiniert werden kann, um Quellcode-Browsing oder mit Vim Omnicomplete Code Completion zu ermöglichen.

3

Unter Linux verwende ich die GNU ID Utils Diese haben ähnliche Funktionen wie grep, arbeiten aber von einem Index, so dass sie unglaublich schnell sind. Sie führen mkid aus, um einen Index zu erstellen, und dann eines der anderen Hilfsprogramme wie "gid", das die ID Tools-Version von grep ist, die über den Index hinweg verwendet wird. Ich habe einen Cron-Job, der mkid gelegentlich ausführt.

Die ID-Tools als auch unter Windows arbeiten, entweder mit Cygwin oder als standard windows program

8

empfehle ich OpenGrok. Es gibt einige andere Motoren, here ist eine schnelle Überprüfung von ihnen.

1

Ich habe cs2project für eine Weile verwendet, es ist eine Open-Source-C# -Code-Suchmaschine auf Lucene.NET basiert. Leider wird es nicht mehr entwickelt.

0

Siehe unsere SD Source Code Search Engine. Sprache bewusst und behandelt viele Sprachen (C, C++, C#, Java, ObjectivC, PHP, VB.net, VB6, Ada, Fortran, COBOL, ...). Dauert 2,8 Sekunden, um über den Linux Kernal (7,3 Millionen Zeilen, 18000 + Dateien) zu suchen.

Da es sprachbewusst ist, kann es Sprachelemente ignorieren, die für Ihre Suche irrelevant sind (z. B. Kommentare, Formatierung und Leerzeichen ignorieren, wenn Sie nur an einem Bezeichner oder einem Ausdruck interessiert sind). Es kann innerhalb von Bezeichnern, Strings und Kommentaren suchen. Wenn Sie dies wirklich tun möchten, bietet es eine vollständige Suchoption für regulären Ausdruck.

Es wurde für Systeme von 10 Millionen Codezeilen verwendet, und in einem Fall kennen wir ein System mit über einer Million Dateien.

0

Ich hatte ein ähnliches Problem. Ich arbeite für eine Software-Firma, wo das Projekt C#, C++, ASP.net, db-Skripte und sogar vb6 Quellcode beinhaltet (ja, es ist ein Kopfschmerz kompilieren mehrere VB6-Projekte, wenn es kein Konzept der Lösung wie in späteren Version von Visual Studio. ..)

Ich habe Visual Studio 2010 verwendet, musste aber einen Texteditor von Drittanbietern verwenden, um in db-Skripten und vb6-Quellcode zu suchen.

Ich habe etwas Forschung und fand KodeEx (http://kodexex.com) und war glücklich mit it. Es ist ein Index-basiertes Quellcode-Suchwerkzeug. Du musst nichts bauen (wie andere Leute Lucene vorgeschlagen haben. Lucene ist übrigens ein nettes Open-Source-Projekt =)). Installieren Sie es einfach und lassen Sie es Ihre Projekte indizieren. Danach gibt es normalerweise das Ergebnis innerhalb weniger Sekunden zurück.