Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen...

26

Transcript of Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen...

Page 1: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Google Code Search AlternativenRuhr-Universität Bochum

Master-Praktikum Netz- und Datensicherheit

Wintersemester 2012

Oliver Domke

[email protected]

19. März 2013

1

Page 2: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Inhaltsverzeichnis

1 Einleitung 3

2 Google Code Search & alternative Anbieter 4

2.1 Google-Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.1.1 Google Code Search . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.1.2 Google Project Hosting . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2 Code-Suchmaschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.1 Krugle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.2 Ohloh Code (ehemals Koders) . . . . . . . . . . . . . . . . . . . . . . 82.2.3 Merobase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.4 MetaGer Code Search . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.5 Searchcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3 Code-Repositorys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.1 Snipt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.2 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.3 Antepedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Testergebnisse & Diskussion 15

3.1 Codebasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2 Suchoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.3 Formate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4 Tre�erquote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.5 Bedienbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4 Zusammenfassung & Empfehlung 22

2

Page 3: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

1 Einleitung

Der US-amerikanische Internetdienstleistungsanbieter Google Inc. verö�entlichte im Ok-tober 2006 im Rahmen seiner Projektsammlung Google Labs1 ein Tool, das e�zienteCodesuchen im Internet ermöglichte. Google Code Search2 (in Deutschland Google Co-

desuche), welches nach einer geschlossenen Betaphase im Dezember 2006 auch von je-dem Benutzer eingesetzt werden konnte, war ein Nachschlagewerkzeug für ö�entlich zu-gängliche Quellcodes im Internet. Der Service richtete sich im wesentlichen an Entwicklerund Programmierer, die den Dienst einsetzen sollten, um beispielhafte Codeausschnitte,die Verwendungsmöglichkeiten von APIs, Funktionsde�nitionen und ähnliches e�zient zurecherchieren.[1, 2]

Die Anwendung sammelte dazu Daten aus frei verfügbaren OpenSource-Codes, darunterauch aus Archiven und Repositorys; zudem konnte jeder Benutzer eigenen Quellcode überein Formular für eine Aufnahme in die Datenbank einreichen. Googles Codesuche war einsehr mächtiges Werkzeug; es ermöglichte neben optionalen Filtern für bestimmte Dateity-pen, Lizenzarten und Programmiersprachen auch die Suche mit Hilfe regulärer Ausdrücke -was damals durchaus ein Alleinstellungsmerkmal für Online-Codesuchen darstellte.[A01, 4]

Dem überwiegend positiven Feedback zum Trotz gab Google am 14. Oktober 2011 be-kannt, dass man die Arbeiten an Code Search im Zusammenhang mit der Schlieÿung vonGoogle Labs einstellen werde, um sich auf aussichts- und ertragreichere Projekte konzen-trieren zu können. Seit dem 15. Januar 2012 steht das Projekt nun nicht mehr o�ziell zurVerfügung, ein Groÿteil der Technik �oss jedoch in andere Produkte ein, wie in diesemFall Google Project Hosting.[5] Aktuell ist jedoch das auf dem letzten Entwicklungsstandbe�ndliche Interface von Google Code Search immer noch online aufrufbar, beschränkt sichjedoch auf die Suche in Projekten, die bei Google Project Hosting hinterlegt sind.[A01] InFolge dieser inhaltlichen Einschränkung stellt sich die Frage nach Alternativen. Im Rahmendieses Praktikums wurden daher alternative Anbieter von Werkzeugen zur Code-Rechercheermittelt und mit Blick auf ihre Features, Nutzbarkeit und Qualität untersucht.

Im nächten Kapitel folgt eine Vorstellung von Google Code Search und einiger alterna-tiver Anbieter. Die Funktionalität und Qualität der Dienste werden in Kapitel 3 näheruntersucht. Eine abschlieÿende Zusammenfassung und Empfehlung folgt in Kapitel 4.

1Google Labs war eine Sammlung von Produkten im Entwicklungsstatus zu Demonstrations- und Test-zwecken. Das Angebot wurde am 17. Oktober 2011 eingestellt.

2Nicht zu verwechseln mit Google Code (heute auch Google Developers), einer Sammlung von Entwick-lungssoftware für diverse Google-Produkte.[3]

3

Page 4: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

2 Google Code Search & alternative Anbieter

Es existiert eine Vielzahl von Webseiten, welche eine Möglichkeit zur Code-Recherche an-bieten - einige besitzen auf den ersten Blick eine ähnliche Funktionalität wie Google CodeSearch. Eine Auswahl dieser Anbieter wurde in diesem Praktikum auf ihre Nutzbarkeit,Handhabbarkeit, sowie ihre Features und Tre�erqualität untersucht3. In diesem Kapitelwerden die einzelnen Dienste, sowie ihre jeweiligen Funktionen und Arbeitsweisen, vorge-stellt.

2.1 Google-Dienste

2.1.1 Google Code Search

Webseite: http://code.google.com/codesearch Status: Entwicklung eingestelltNutzbarkeit: frei zugänglichCodebasis: seit Einstellung ausschlieÿlich Google CodeSprachen: über 70 unterstützt, weitere Sprachen suchbarBesonderheiten: umfangreiche Filtermöglichkeiten, Suche mit regulären Ausdrücken

Trotz dem o�ziellen Ende ist das ehemalige Labs-Projekt Google Code Search weiterhinonline verfügbar und soll als Referenz für den Vergleich mit den anderen Anbietern die-nen. Sämtliche Arbeiten an dem Dienst wurden eingestellt; das Interface und die dahinterstehende Technik be�nden sich somit auf dem Stand von Januar 2012.[5] Die Codesu-che war als Unterstützung von Programmierern und zum Lernen gedacht und ermöglichtedie Recherche von Muster-Codes, Anwendungsbeispielen und Funktionsde�nitionen. Seineumfangreiche Datenbank erzeugte Code Search durch das Crawlen von ö�entlich zugängli-chem Quellcode im Internet. Mit einbezogen wurden dabei neben gängigen Code-Hosting-Webseiten auch Archive (darunter .zip oder .tar.gz) und Repositorys (wie etwa CVSoder SVN). Darüber hinaus hatten die Benutzer die Möglichkeit, eigene Quellcodes überein entsprechendes Formular für die Aufnahme in die Datenbank einzureichen.[4, 6]

Abbildung 1: Google Code Search Suchmaske

3Es wurden nur solche Anbieter betrachtet, die sich nicht auf eine bestimmte Programmiersprachespezialisiert haben. Die Auswahl wurde im Vorfeld des Praktikums auf einige aussichtsreiche Kandidatenbeschränkt.

4

Page 5: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Das Alleinstellungsmerkmal zum Startzeitpunkt von Google Code Search war die Opti-on zur Verwendung regulärer Ausdrücke als Suchanfrage (RegEx-Suche). Dadurch ist esmöglich, neben statischen Strings auch nach Mengen von Zeichen bzw. Zeichenketten zusuchen, welche bestimmte Regeln erfüllen.[7] Diese Eigenschaft machte Code Search zueinem sehr mächtigen Werkzeug zur Code-Recherche. Der Dienst unterstützt o�ziell über70 Programmiersprachen; mit Hilfe regulärer Ausdrücke ist es jedoch möglich, uneinge-schränkt nach jedem beliebigen Format zu suchen, selbst wenn dieses Google Code Searchselbst nicht bekannt sein sollte. Um die Suche noch e�zienter zu gestalten, können diverseFilter eingesetzt werden, welche die Suchergebnisse noch weiter eingrenzen, zum Beispielhinsichtlich der Sprache, des Dateinamens oder der verwendeten (und zuvor automatischermittelten) Softwarelizenz; eine Filterung nach Software für bestimmte Google-Produktewie das Android -Betriebssystem oder den Chrome-Browser wurde ebenfalls realisiert.[6]

Abbildung 2: Google Code Search Suchergebnisse

Die Suchergebnisse werden schlicht und übersichtlich präsentiert. Duplikate in den Tre�ernwerden automatisch erkannt und ausgeblendet, um die Ergebnisse kompakter zu halten.Jeder Tre�er kann angewählt werden, um zu einer Übersicht zu gelangen, die den kom-pletten Code sowie die vollständige Verzeichnisstruktur des Projekts samt dazugehörigenQuelltexten enthält. Eine automatische Syntaxhervorhebung bei kompatiblen Program-miersprachen erhöht die Lesbarkeit der Quelltexte. Die in die Ergebnisdarstellung inte-grierte Suchmaske ermöglicht eine tiefergehende Suche in ausgewählten Projekten. AufWunsch gelangt man zudem über einen Backlink schnell zur Herkunft des Codes. Die ak-tuell online verfügbare Codesuche beschränkt sich jedoch seit der Einstellung des Servicesauf Quellcodes aus Projekten, die bei Google Project Hosting vorliegen.

2.1.2 Google Project Hosting

Webseite: http://code.google.com/ Status: aktivNutzbarkeit: frei zugänglichCodebasis: eigeneSprachen: gängige, darunter HTML, Java(Script), C++, PHP u.a.Besonderheiten: -

Nach der Einstellung des Code Search-Angebots wurde ein Groÿteil der Funktionialität inden Service Google Project Hosting übertragen. Dieser Dienst sammelt nicht eigenständigDaten, sondern bietet OpenSource-Entwicklern eine Umgebung für kollaboratives Arbeitenan Software-Projekten. Zur Unterstützung der Entwicklungsarbeiten stehen unter anderemeine Wiki-Software und Versionierungsservices verschiedener Anbieter zur Verfügung. Diehinterlegten Daten aller Projekte sind für jeden Benutzer frei zugänglich.

5

Page 6: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Abbildung 3: Google Project Hosting

Die Suchfunktion der Seite, welche auch die Projekt-Hoster Eclipse Labs und Apache Ex-

tras einschlieÿt, erlaubt dank zahlreicher Filter ein schnelles Au�nden von Projekten zumgewünschten Thema. Eine e�ziente Suche nach Mustercode gestaltet sich mit diesem Inter-face jedoch recht schwierig, da lediglich die Dokumentationstexte der Projekte durchsuchtwerden. Eine �richtige� Code-Recherche ist tatsächlich nur mit dem etwas versteckten, perDirektlink [A01] aufrufbaren, und in Kapitel 2.1.1 beschriebenen Code Search-Interfacemöglich.

2.2 Code-Suchmaschinen

2.2.1 Krugle

Webseite: http://opensearch.krugle.org/ Status: aktivNutzbarkeit: frei zugänglich (Community-Funktion erfordern Registrierung)Codebasis: Sourceforge, Google Code, CodePlex, Apache, JavaDocs, Wikipedia u.a.Sprachen: alle gängigen, darunter Java, XML, C, PHP u.a.Besonderheiten: Codeausschnitte als Suchanfrage verwendbar

Krugle ist eine Mitte 2006 verö�entlichte Suchmaschine für OpenSource-Code, die ähn-lich Google Code Search eigenständig Repositorys wie Sourceforge, Google Project Hostingoder Microsofts CodePlex, aber auch Datenbanken wie das Sun Developer Network undOnline-Lexika wie Wikipedia nach wiederverwendbaren Quelltexten durchsucht und indi-ziert. Dabei werden auch Dateien in Archiven, wie etwa .zip und .tar, berücksichtigt.Verschiedene Filter ermöglichen eine e�ziente Suche nach Mustercode, beispielsweise ge-trennt nach Programmiersprachen. Eine Suche mittels regulärer Ausdrücke ist nicht mög-lich, dafür kann man neben Stichworten auch Codeausschnitte als �Suchbegri�� verwenden;Krugle sucht dann nach Projekten, in denen die angegebenen Segmente oder Funktions-aufrufe bzw. Funktions- oder Klassende�nitionen vorkommen.

Die Suchergebnisse werden übersichtlich (und bei Erkennung der Sprache inklusive Syntax-Highlighting) dargestellt und können im Anschluss weiter ge�ltert oder näher durchsuchtwerden. Sofern verfügbar können auch die gesamte Dateistruktur sowie dazugehörige Do-kumentationen abgerufen und ausgewählte Projekte einfach heruntergeladen werden. Umdie Herkunft nachvollziehen zu können, wird stets die Quell-URL und die eingetrageneLizenz mit angegeben. Das Web-Interface ist jedoch lediglich eine Online-Demo der ei-genständigen Krugle-Anwendung, die in erster Linie als Unternehmenslösung gedacht ist.

6

Page 7: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Abbildung 4: Krugle Suchergebnisse

In der kostenlosen, aber inhaltich eingeschränkten Basis-Version und der kostenp�ichti-gen Enterprise-Fassung sind weitere Funktionen zur Inhaltsverwaltung oder kollaborativenProjektarbeit verfügbar; mit Hilfe von Lesezeichen, Versionierungssoftware und der Opti-on zum Anlegen von Codesammlungen wird so ein einfaches Code-Sharing möglich. Eineweitere Funktion, die registrierten Nutzern der Anwendung vorbehalten ist, ist das Kom-mentieren von Quellcodes und Projekten. Diese Kommentare werden auf Wunsch (auch imWeb-Interface) bei der Sucheanfrage berücksichtigt.

Abbildung 5: Krugle Detailansicht

Insgesamt ist die online verfügbare Suchmaschine zwar nur ein Teil der eigentlichen Krugle-Software, für sich genommen ist es aber ein sehr nützliches Werkzeug zur Code-Recherche,das in Bezug auf seinen Umfang und der Funktionalität Google Code Search sehr ähnlichist.

7

Page 8: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

2.2.2 Ohloh Code (ehemals Koders)

Webseite: http://code.ohloh.net/ Status: aktivNutzbarkeit: frei zugänglich (Community-Funktion erfordern Registrierung)Codebasis: eigene, dazu Sourceforge, Google Code, GitHub u.a.Sprachen: über 40 unterstützt, darunter alle gängigen wie HTML, C oder JavaScriptBesonderheiten: umfangreiche Filtermöglichkeiten

Ohloh Code ist das Ergebnis der Zusammenarbeit von Ohloh (ein Portal zur Katalogi-sierung von OpenSource-Softwareprojekten) und der Code-Suchmaschine Koders. Durchdie Einbindung in die Services von Ohloh hat die Suchmaschine Zugri� auf weitaus mehrQuelltext-Datensätze als zuvor4 und integriert dazu auch Community-Funktionen wie dasKommentieren und Editieren von Informationen. Ohloh Code gewinnt seine Daten durchdas Crawlen gängiger Code-Repositorys (darunter Sourceforge, Google Project Hosting undGitHub) und Versionsverwaltungssysteme (wie SVN oder CVS). Datensätze können zudemauch, wie früher bei Google Code Search, direkt von den Benutzern über ein Formular ein-gereicht werden.

Abbildung 6: Ohloh Code Suchergebnisse

Bei der Suche oder zur Sortierung der Suchergebnisse können zahlreiche Filter eingesetztwerden. So ist es möglich, die Ergebnisse unter anderem nach Deklarationsarten, Funkti-onsnamen, Objektde�nitionen, Programmiersprachen, Klassenbeschreibungen und vielemmehr zu trennen. Eine Suche mit Hilfe regulärer Ausdrücke ist aktuell jedoch nicht mög-lich. Die Darstellung der gefundenen Quellcodes ist - ähnlich der Optik von Google Code

Search und Krugle - sehr übersichtlich gestaltet. So wird zum Beispiel die Syntax der ent-sprechenden Sprache hervorgehoben, sofern diese erkannt wird. Insgesamt werden derzeitrund 40 verschiedene Programmiersprachen unterstützt.

4Nach Angaben der Betreiber umfasst die Datenbank aktuell etwa 15,5 Milliarden Zeilen Code und istdamit mindestens so umfangreich wie die konkurrierender Anbieter.[A05]

8

Page 9: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Abbildung 7: Ohloh Code Detailansicht

2.2.3 Merobase

Webseite: http://www.merobase.com/ Status: aktivNutzbarkeit: frei zugänglichCodebasis: gängige, darunter Sourceforge, Apache, Java.net u.a.Sprachen: Java, C/C++/C# und WSDLBesonderheiten: umfangreiche, einzigartige Suchoptionen

Die seit Anfang 2007 vom Lehrstuhl für Softwaretechnik der Universität Mannheim an-gebotene Suchmaschine Merobase crawlt wie ihre Mitbewerber gängige Repositorys (wiebeispielsweise Sourceforge, Apache oder Java.net) und weitere ö�entlich im Internet zu-gängliche Quelltexte. Bei der Suche bieten sich dem Nutzer diverse Filtermöglichkeiten an,so können die Ergebnisse unter anderem nach Sprachen, Host, verwendeter Lizenz oderArt des Programms (z.B. Anwendung, Servlet oder sogar Testroutinen5) sortiert werden.Die Datenbank hat bereits rund 9 Millionen Einträge gelistet, jedoch unterliegt Merobase

- zumindest im Hinblick auf die suchbaren Programmiersprachen - einer deutlichen Ein-schränkung: O�ziell unterstützt werden nur Java, C/C++/C# und Webservices (WSDL).

Abbildung 8: Merobase

5Als Testroutine wird ein Programm bezeichnet, welches die zu testende Anwendung mit unterschiedli-chen, vorab de�nierten Testfällen bzw. -parametern aufruft und sie auf mögliche Fehler in der Implemen-tierung untersucht.

9

Page 10: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Die starke Fokussierung auf einige ausgewählte Programmiersprachen gleicht Merobase je-doch mit einzigartigen Suchoptionen aus. Der Dienst ermöglicht nicht nur eine Suche nachMustercodes anhand von Stichworten, Strings, Methodenname oder ähnlichem; Software-komponenten können auch anhand ihrer Schnittstellen gefunden werden. Bei einer funktio-nalen Suche nach isEqual(int, int):boolean würde beispielsweise nach Code gesuchtwerden, der eine Funktion mit dem Namen �isEqual� ist bzw. enthält, zwei int-Werte alsEingabeparameter aufnimmt und einen Boolean-Wert zurückgibt. Eine objektorientierteSuche ist nach dem gleichen Verfahren möglich. Darüber hinaus ermöglicht Merobase auchdie Suche nach JAR-Bibliotheken, JavaDocs und Webservices (letztere können auch direktausgeführt werden). Alle Suchergebnisse sind stets mit einem Backlink, Kommentaren unddiversen Metriken versehen.

2.2.4 MetaGer Code Search

Webseite: http://code.metager.de/ Status: aktivNutzbarkeit: frei zugänglichCodebasis: eigeneSprachen: alle gängigenBesonderheiten: Datenbank umfasst viele populäre OpenSource-Projekte

MetaGer Code Search ist ein Ableger der deutschen Metasuchmaschine MetaGer und hatsich auf eine Suche innerhalb OpenSource-Quelltexte spezialisiert. Betrieben wird die Such-maschine von der Leibniz Universität Hannover. Anders als die bisher vorgestellten An-bieter crawlt MetaGer Code Search jedoch das Internet nicht nach ö�entlich zugänglichenQuellcodes, sondern stellt eine umfassende und (im Untersuchungszeitraum) regelmäÿigaktualisierte Datenbank mit einer Auswahl mehr oder weniger bekannter OpenSource-Projekte zur Verfügung, welche mit Hilfe des schlicht gehaltenen Interface durchsucht wer-den kann. In der Liste der Projekte be�nden sich unter anderem aircrack-ng, der Linux -Kernel, diverse Mozilla-Produkte und viele mehr.

Abbildung 9: MetaGer Code Search

Durchsucht werden kann die Datenbank anhand von Stichworten und einigen wenigen Fil-tern, die sich auf Dateipfade oder De�nitionen beziehen. Insgesamt steht zwar eine durchausbeachtliche Menge populärer Softwareprojekte zur Verfügung, dennoch ist der Suchraumdurch das fehlende Internet-Crawling stark eingegrenzt, so dass sich kaum allgemeine Code-beispiele �nden lassen. Für Benutzer, die eine allgemeine Code-Recherche anstreben unddie nicht speziell an Quelltexten zu einem bestimmten OpenSource-Produkt interessiertsind, erscheint MetaGer Code Search eher ungeeignet.

10

Page 11: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

2.2.5 Searchcode

Webseite: http://searchco.de/ Status: aktivNutzbarkeit: frei zugänglichCodebasis: Sourceforge, Google Code, CodePlex, GitHub, Bitbucket, Fedora u.a.Sprachen: über 100 unterstützt, weitere Sprachen suchbarBesonderheiten: Suche mit regulären Ausdrücken möglich

Ein in gewisser Weise besonderes Projekt ist Searchcode. Diese Suchmaschine wurde voneiner einzelnen Person, Ben Boyter, entwickelt und steht im grundlegenden Funktionsum-fang Google Code Search in fast nichts nach.[8] Searchcode indiziert selbstständig Einträgeaus mehreren Code-Repositorys, darunter nach eigenen Angaben Sourceforge, Google Co-de, CodePlex, GitHub, Bitbucket und Fedora; die Datenbank umfasst nach aktuellem Standüber sechs Milliarden Zeilen OpenSource-Quelltext und Code-Ausschnitte, dazu kommennoch unzählige Dokumentationstexte. Dank verschiedener Filteroptionen kann unter an-derem getrennt nach Quellcode und Dokumentation, aber auch nach unterschiedlichenDateiendungen oder Programmiersprachen gesucht werden.

Abbildung 10: Searchcode Suchergebnisse

Wie bei Google Code Search ist auch eine Suche mittels regulärer Ausdrücke möglich.Derzeit werden hierbei jedoch nur Prä�x-Suchen unterstützt, Ausdrücke in In�x-Notationsind nicht zugelassen.[9] Searchcode kennt knapp 100 Programmiersprachen (und somitrund doppelt so viele wie die meisten Mitbewerber); weitere �unbekannte� Sprachen kön-nen durch reguläre Ausdrücke gefunden werden.[10] Syntaxhervorhebungen werden beiden gängigen Sprachen unterstützt, zudem liefert Searchcode umfangreiche Metriken zuden gefundenen Datensätzen an.

Abbildung 11: Searchcode Detailansicht

11

Page 12: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

2.3 Code-Repositorys

2.3.1 Snipt

Webseite: http://snipt.net/ Status: aktivNutzbarkeit: frei zugänglichCodebasis: eigeneSprachen: alle gängigen, darunter HTML, Java(Script), C++, PHP u.a.Besonderheiten: Testfälle und Webformate vorhanden

Code-Repositorys dienen zwar häu�g als Quellen der Suchmaschinen für Code-Recherchen,sind in der Regel aber selbst nicht für eine Suche nach Mustercode geeignet, da die Ergeb-nisse gröÿtenteils auf Kommentare und Dokumentationen zu Softwareprojekten verweisen.Snipt ist ein Repository, das auf Wikis und Dokumentationstexte verzichtet und nur Co-deausschnitte in seine ö�entlich zugängliche Datenbank aufnimmt, welche vom Benutzerdurchsucht werden kann. Zwar ist diese Datenbank mangels eigenständigem Crawling ver-hältnismäÿig klein (im Untersuchungszeitraum waren etwa 50.000 Einträge vorhanden),dennoch �nden sich darunter viele nützliche Beispiele und vorgefertigte Testfälle in allengängigen Programmiersprachen und für viele unterschiedliche Webformate wie etwa An-wendungsbeispiele für WordPress.

Abbildung 12: Snipt

Für umfangreiche Recherchearbeiten bietet sich Snipt mangels vielfältiger Suchoptionenjedoch nicht an. Die über Stichworte gefundenen Ergebnisse lassen sich zwar nach Spracheoder Anwendungsfall �ltern, mehr Optionen sind darüber hinaus aber nicht möglich. Be-nutzer, die auf der Suche nach vereinzelten Beispielen oder Anwendungsfällen sind, könnenhier jedoch fündig werden.

2.3.2 GitHub

Webseite: http://github.com/ Status: aktivNutzbarkeit: frei zugänglich (Community-Funktion erfordern Registrierung)Codebasis: eigeneSprachen: alle gängigen, darunter HTML, Java(Script), C++, PHP u.a.Besonderheiten: -

Bei GitHub handelt es sich um ein Repository für Softwareprojekte, welches auch alsGrundlage für einige der bereits vorgestellten Suchmaschinen dient. Unter dem Claim �So-cial Coding� verbindet es kollaboratives Arbeiten und eine Versionierung auf Basis vonGit mit Komponenten sozialer Netzwerke (zum Beispiele Kommentare oder eine �Folgen�-Funktion). Für OpenSource-Projekte ist der Dienst kostenlos, es wird darüber hinaus

12

Page 13: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

aber auch ein kostenp�ichtiger Zugang angeboten, der das Erstellen privater Verzeichnisseumfasst. GitHub ist einer der populärsten Anbieter für Projekt-Hosting; viele bekannteProjekte wie PHP, jQuery oder reddit nutzen diese Plattform für die Verwaltung ihrerQuelltexte.[11]

Abbildung 13: GitHub

Das Suchfenster der Startseite durchsucht die gesamten Projekte und somit insbesondereauch die Dokumentationstexte. Für reine Code-Recherchen im Stil von Google Code Searchbietet sich jedoch die erweiterte Suche unter https://github.com/search/advanced an,denn hier kann eine Codesuche explizit ausgewählt werden. In diesem Fall liefert der Dienstausschlieÿlich in der Datenbank gefundene Quellcodes, welche wiederum automatisch nachvielen verschiedenen Programmiersprachen ge�ltert werden können. Weitere Suchoptionenstehen aber bei diesem eigentlich auf Projekt-Hosting spezialisierten Dienst nicht zur Ver-fügung.

Anmerkung: Es existieren unzählige weitere Projekt-Hoster im Internet, die eine ähnli-

che Funktionalität wie GitHub aufweisen (zum Teil auch in Bezug auf Codesuche), zum

Beispiel Smipple, ByteMyCode oder Snippets. Stellvertretend wurde einer der gröÿten und

populärsten Dienste für die Untersuchung zu seiner Eignung als Code-Recherche-Tool her-

angezogen.

2.3.3 Antepedia

Webseite: http://www.antepedia.com/ Status: aktivNutzbarkeit: frei zugänglichCodebasis: Sourceforge, Google Code, GitHub, Eclipse, Apache u.a.Sprachen: alle gängigen, darunter HTML, Java(Script), C++, PHP u.a.Besonderheiten: Suche nach Sicherheitslücken möglich

Der letzte betrachtete Dienst eignet sich nur indirekt zur Code-Recherche, soll aber auf-grund seiner verhältnismäÿig groÿen Datenbank an OpenSource-Projekten nicht unerwähntbleiben. Antepedia durchsucht das Internet nach ö�entlich zugänglichen Softwareprojektenund nimmt sie in den eigenen Suchindex auf. Der Anbieter sammelt dazu Projektdatenaus unterschiedlichen Quellen; zu den gröÿten durchsuchten Hostern gehören Google Co-

de, Sourceforge, GitHub, Eclipse und Apache. Antepedia aggregiert die zu Stichwörterngefundenen Ergebnisse aller Projekt-Hoster und listet die aufbearbeiteten Informationenübersichtlich auf.

13

Page 14: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Abbildung 14: Antepedia

Nach einer Weiterleitung zum ursprünglichen Hosting-Service lassen sich dann auch dieQuellcodes zum gewünschten Projekt abrufen - eine Ausgabe von Mustercodes direkt aufder Antepedia-Webseite ist leider noch nicht möglich; derzeit liefert der Service lediglichBacklinks. Die Datenbank, die jedoch eine beachtliche (und durch Crawling stetig wach-sende) Anzahl an OpenSource-Projekten listet, kann dennoch bei der Suche nach Codebei-spielen und Dokumentationen hilfreich sein. Als zusätzlichen interessanten Aspekt bietetder Dienst die Möglichkeit an, die Codes und Projekte nach Sicherheitslücken zu durchsu-chen. Dieser derzeit noch im Beta-Stadium be�ndliche Service führt zu jedem Projekt eineregelmäÿig aktualisierte Liste aktueller potenzieller Schwachstellen. Somit sind einerseitszu jedem Projekt bekannte Bugs übersichtlich zusammengefasst, andererseits sind explizi-te Anfragen nach bestimmten Risiken wie zum Beispiel �Password Encryption Weakness�möglich.

14

Page 15: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

3 Testergebnisse & Diskussion

Um die alternativen Anbieter besser miteinander vergleichen zu können, wurden die Dienstenach verschiedenen Kriterien in Bezug auf Funktionalität, Qualität und Nutzbarkeit unter-sucht. Die Ergebnisse werden in diesem Kapitel vorgestellt und diskutiert. Eine Übersichtaller untersuchten Kriterien be�ndet sich im Anhang ab Seite 24.

3.1 Codebasis

Eine wichtige Eigenschaft bei der Beurteilung von Codesuche-Anbietern ist die jeweils zu-grunde liegende Codebasis. Grundsätzlich lassen sich bei dieser Art von Suchmaschinenzwei Arbeitsweisen unterscheiden. Ein Teil der Anbieter setzt ausschlieÿlich auf eine eige-ne Codebasis, welche nur durch regelmäÿige Updates der Entwickler oder das Einreichenvon Quellcodes durch die Benutzer anwächst. Alternativ dazu durchsuchen Dienste mit ei-ner Crawling-Funktion selbstständig das Internet nach Repositorys und weiteren ö�entlichzugänglichen OpenSource-Quelltexten, um diese dann in der eigenen Datenbank zu indi-zieren und als Suchgrundlage zu verwenden.[12] In einigen Ausnahmefällen werden beideArbeitsweisen auch in Kombination eingesetzt.

Einer dieser Ausnahmefälle war - bis zu seiner Einstellung - Google Code Search. DieSuchmaschine verwendete als Codebasis den �rmeneigenen Hosting-Dienst Google Code,durchsuchte aber das Internet zudem nach weiteren Quellcodes. Nutzer, die ihre eigenenMustercodes nicht selbst beiGoogle Project Hosting verwalten wollten, konnten diese auÿer-dem auch über ein spezielles Formular für die Suchdatenbank zur Verfügung stellen. Mitdem Entwicklungsstopp von Google Code Search wurde die Codebasis jedoch auf GoogleCode beschränkt, Suchergebnisse anderer Herkunft werden seitdem nicht mehr aufgeführt.Zwar steht somit immer noch eine beachtliche Menge an Projekten und Quelltexten zurVerfügung, dennoch handelt es sich dabei nur noch um einen Bruchteil der ursprünglichenCodebasis.

Einige der untersuchten Anbieter verwenden ausschlieÿlich ihre eigene Codebasis. Die deut-sche Suchmaschine MetaGer Code Search arbeitet beispielsweise mit einer Datenbank ausrund 4.000 Repositorys, in denen die Quellcodes von über 360 mehr oder weniger bekann-ten OpenSource-Projekten hinterlegt sind. Die Datenbank wird nur durch Updates derEntwickler aktualisiert, wodurch ein schnelles Wachstum der Datenbestände nahezu aus-geschlossen sein dürfte. Ähnlich verhält es sich mit Snipt, einem Repository mit eigenemDatenbestand. Der Dienst umfasst zwar viele einzigartige und spezielle Mustercodes, kannaber mangels Crawling und häu�ger Updates nicht mit anderen Anbietern bei umfassen-den Code-Recherchen mithalten. Favorit unter diesen Diensten ist GitHub, der mit überdrei Millionen Nutzern vor Sourceforge und Google Code gröÿte und populärste Hosting-Dienst[11], der zudem auch ein Interface für Codesuchen im eigenen Datenbestand anbietet.

Im Gegensatz zu diesen Services arbeiten die untersuchten Anbieter Krugle, Ohloh Co-

de, Merobase und Searchcode mit Web-Crawling. Mittels dieser Methode wird der eigeneDatenbestand durch Indizieren groÿer Code-Repositorys und Durchsuchen des Internetsnach ö�entlich zugänglichen Codeausschnitten kontinuierlich erweitert. Dabei setzen dieoben genannten Anbieter im wesentlichen auf Code-Hoster wie Sourceforge, Google Code,Microsoft CodePlex, GitHub, Bitbucket und Fedora, aber auch auf Projekte wie die Apache

15

Page 16: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Software Foundation und Dokumentationstools wie JavaDocs. Diese gängigen Codebasenwerden von nahezu allen Anbietern als Suchgrundlage verwendet, die Unterschiede lie-gen meist im Detail. So bezieht Krugle beispielweise auch Mustercodes von Wikipedia inseine Datenbank mit ein. Sämtliche Crawling-Dienste durchsuchen aber nicht nur Hosting-Webseiten nach ö�entlichen Quellcodes, sondern auch Archive (beispielweise .zip, .rar,.tar, .tar.gz und .tar.bz2) und Repositorys bzw. Versionierungsverzeichnisse wie CVSoder SVN.

Einzig Ohloh Code kombiniert - wie Google Code Search vor seiner Einstellung - beideAnsätze und vereint die durch Crawling weiterhin stetig wachsende Datenbank der imJahr 2012 durch Ohloh übernommenen Code-Suchmaschine Koders mit der Codebasis desnamensgebenden Projekt-Hosters.[13] Mit derzeit weit über 15 Milliarden Zeilen Quelltextbesitzt Ohloh Code die gröÿte Codebasis der untersuchten Code-Recherche-Anbieter.

Insgesamt lässt sich sagen, dass die Suche nach Beispielcodes bei Anbietern mit Crawlinge�zienter ist, da dort mit deutlich gröÿeren und stetig wachsenden Datenbanken gearbei-tet wird. Eine gröÿere Codebasis ist jedoch nicht zwangsläu�g mit einer höheren Qualitätder Suchergebnisse gleichzusetzen. Webseiten mit eigenem Datensatz bieten häu�g Inhalteund Funktionen, die bei den anderen Suchmaschinenen in dieser Form nicht zu �nden sind.Einen guten Kompromiss geht lediglich Ohloh Code ein, indem der Dienst die Vorteile ausbeiden Ansätzen miteinander verknüpft und somit in dieser Hinsicht auch dem ursprüng-lichen Google Code Search am ähnlichsten ist - Ohloh Code baut sich als Projekt-Hostereine eigene Datenbank auf, die durch das Web-Crawling weiter ausgebaut wird und somiteinen enormen Datensatz für Code-Recherchen bietet.

3.2 Suchoptionen

In diesem Kapitel werden die Dienste auf ihre Möglichkeiten zur Formulierung von Suchan-fragen untersucht. Wichtig sind hier neben der Art der Suchanfrage (Stichwort, Codeaus-schnitt oder regulärer Ausdruck) auch die Filteroptionen, mit denen sich die Ergebnisseübersichtlicher darstellen und ungewünschte Daten aussortieren lassen. Google Code Searchbietet dem Benutzer beispielsweise sechs verschiedene Tags an, mit denen die Suchergeb-nisse im Voraus ge�ltert werden können. So wird mit dem Tag lang: nur nach einer be-stimmten Programmiersprache gesucht und mit class: bzw. function: nach Quelltextenmit vorgegebenen Klassen bzw. Funktionen. Mit den weiteren Filteroptionen können derDateipfad, die verwendete Lizenz und die Unterscheidung von Groÿ- und Kleinschreibung(Case Sensitivity) berücksichtigt werden.

Darüber hinaus bietet Google Code Search die Möglichkeit, mit regulären Ausdrücken nachQuellcodes zu suchen. Die Suchmaschine versteht die POSIX-Syntax und �ndet somit auchCodes, die bestimmten logischen Regeln statt statischen Zeichenketten entsprechen. Da-durch ist es zum Beispiel möglich, Dateiformate zu �nden, die nicht o�ziell von dem Dienstunterstützt werden. So könnte in Verbindung mit dem Filter-Tag für Dateipfade der exem-plarische Ausdruck file:\.(nds|xyz)$ verwendet werden, um Dateien mit den Endungen.nds und .xyz zu suchen. Diese Funktion ermöglicht den Nutzern eine e�ziente und prä-zise Suche nach den benötigten Codebeispielen.

16

Page 17: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Betrachtet man nun die untersuchten alternativen Anbieter fällt auf, dass vor allem beiden Webseiten die kein Crawling verwenden, auch nur sehr wenige Suchoptionen angebotenwerden. Bei Snipt können die Suchergebnisse lediglich nach Sprache oder Anwendungsfallge�ltert werden; MetaGer Code Search bietet zusätzlich dazu Filter zur Suche nach kon-kreten Dateipfaden oder Symbolde�nitionen an. Auch beim Hosting-Dienst GitHub sinddie Suchoptionen für Quelltexte sehr übersichtlich; neben einem Filter für die verwendeteProgrammiersprache steht noch die Suche nach bestimmten Repositorys, Benutzern, Da-teigröÿen und -pfaden zur Verfügung.

Die übrigen der in Kapitel 2 vorgestellten Dienste bieten weitaus mehr Such- und Filter-optionen an. Bei jedem von ihnen existieren zahlreiche Tags, mit denen sich die Ergebnissesortieren lassen. So kann beispielsweise optional nach De�nitionen und Deklarationen vonKlassen, Funktionen, Methoden, Objekten und ähnlichem gesucht werden. Während OhlohCode die mit Abstand meisten Filter-Tags zur Verfügung stellt, bieten die anderen Anbie-ter aber auch einige Besonderheiten an, die sie von ihren Mitbewerbern unterscheiden. BeiKrugle gibt es die sehr praktische Option, Codeausschnitte als Suchanfrage zu verwenden,wodurch sich Quelltexte �nden lassen, die einige spezi�sche Codezeilen beinhalten. MitMerobase und Searchcode bieten zwar auch andere Dienstleister diese Option an, jedocherwiesen sie sich im Test als weniger zuverlässig, da sie insbesondere bei mehrzeiligen Co-deausschnitten die Suchanfrage häu�g falsch interpretieren.

Die Stärke von Merobase liegt in der Suche nach Schnittstellen und Funktionsaufrufen.Bei einer Anfrage mit einer abstrakten Beschreibung einer Funktion oder eines Objekts(siehe Kapitel 2.2.3) �ndet Merobase dazu passende Beispiele, die den abstrakten Code inkonkreter Form verwenden. Das Alleinstellungsmerkmal von Searchcode ist hingegen dieUnterstützung regulärer Ausdrücke - unter den aktiven Anbietern ist diese Suchmaschinederzeit die einzige, die Anfragen dieser Form ermöglicht und damit allein in Bezug auf dieangebotenen Suchoptionen Google Code Search am ähnlichsten ist. Einen, zumindest imTestfeld, auÿergewöhnlichen Service bietet der Aggregationsdienst Antepedia an, der denBenutzer die Projektdatenbank nach Sicherheitslücken durchsuchen lässt, wodurch sich dieErgebnisse auch nach bekannten Schwachstellen �ltern lassen. Dieser Dienst be�ndet sichjedoch derzeit noch im Beta-Stadium.

Eine Referenz lässt dich in der Kategorie �Suchoptionen� nur schwer bennenen, da dieEignung der verschiedenen Anbieter aufgrund ihrer unterschiedlichen Schwerpunkte starksituationsabhängig ist. Eine Code-Recherche im Stil von Google Code Search ist am ehe-sten mit Ohloh Code und Searchcode möglich, da sich dort mit vielfältigen Tags bzw.regulären Ausdrücken die Suchergebnisse e�zient �ltern lassen. Krugle bietet hingegen ei-ne zuverlässige Suche nach Quelltexten mit Hilfe von Codeausschnitten an und lässt sicheinfach verwenden, wenn bereits Codeteile vorliegen und passende Mustercodes gefundenwerden sollen. Merobase erweist sich hingegen als hilfreich, wenn konkrete Quelltexte einesbestimmten Formats oder Funktionen mit vorgegebenen Schnittstellen und Parameterngesucht werden. Nicht zuletzt dürfte es auch aus sicherheitstechnischer Sicht interessantsein, wie sich die Bug-Suche von Antepedia in Zukunft weiterentwickelt.

17

Page 18: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

3.3 Formate

Ein weiteres wichtiges Merkmal der Suchmaschinen sind die unterstützten Formate. Diesbezieht sich zum einen auf die suchbaren Programmiersprachen, zum anderen auf die Da-teiarten (in Bezug auf ihren Verwendungszweck), die gefunden werden können. Betrachtetman die o�ziell unterstützten Programmiersprachen, stellt man fest, dass sich die meis-ten Anbieter in diesem Kriterium kaum unterscheiden. Mit Ausnahme vonMerobase lassensich überall nahezu alle gängigen und bekannteren Sprachen suchen, darunter C/C++/C#,CSS, Fortran, Java und JavaScript, Matlab, HTML, Perl, PHP, Python, Ruby, SQL oderXML. Generell ist beim Groÿteil der Anbieter lediglich die Menge der automatisch erkann-ten Dateitypen begrenzt, was die eigentliche Suche aber in der Regel nicht einschränkt.So lassen sich mitunter auch exotischere Programmiersprachen �nden, die noch nicht Be-standteil der automatischen Erkennungssoftware der Suchmaschinen sind - in diesen Fällenmuss der Nutzer dann lediglich auf Komfortfunktionen wie die Auswahl der Sprache übereine Dropdown-Liste oder das Syntax-Highlighting verzichten.

Gute Beispiele für eine Recherche nach unüblichen Sprachen sind Google Code und Search-

code. Die Suchmaschinen bieten Filtermöglichkeiten für mehr als 70 bzw. 100 unterstützteProgrammiersprachen an. Da beide Anbieter aber auch die Suche per regulärem Ausdruckerlauben, ist es problemlos möglich, passende Anfragen zu formulieren und beliebige Datei-typen zu �nden. Von den Anbietern ohne RegEx-Suche bietet GitHub mit rund 90 Sprachenden gröÿten Katalog nativ unterstützter Dateitypen. Ohloh Code und Krugle erkennen je-weils rund 40 Sprachen. Aber auch bei diesen Suchmaschinen lassen sich weitere Sprachenmit Hilfe der Filteroptionen zum Beispiel anhand der Dateiendungen �nden. Ähnlich ver-hält es sich bei Snipt, hier können die Ergebnisse anhand von Tag-Links nach Sprachenge�ltert werden. Dies geschieht unabhängig davon, ob die Sprache von Snipt selbst un-terstützt wird, denn die Tags werden von den Benutzern selbst gewählt bzw. formuliert -was bisweilen der Übersichtlichkeit jedoch nicht zuträglich ist. Viele Tags in der mehrereHundert Einträge langen Liste sind nur genau einem Codebeispiel zugeordnet, aufgrundunterschiedlicher Schreibweise mehrfach vorhanden oder schlicht nicht aussagekräftig.

Eine deutliche Einschränkung gibt es unter den untersuchten Anbietern nur bei Mero-

base. Diese Suchmaschine unterstützt o�ziell nur Java, C/C++/C# und WSDL-Dateien.Als Ausgleich bietet Merobase aber auch Suchergebnisse an, die man in dieser Form beianderen Anbietern nicht �ndet, darunter (JAR-)Bibliotheken, JavaDocs und die zuvor ge-nannten Webservices - letztere können auch direkt auf der Webseite getestet werden. Auchbei Snipt liegen spezielle Mustercodes vor, darunter beispielsweise Anwendungsfälle fürWeb-Formate wie WordPress. Sowohl Merobase als auch Snipt bieten darüber hinaus aucheine Vielzahl von vorgefertigten Testroutinen für unterschiedliche Einsatzgebiete an.

In Bezug auf die suchbaren Formate sind sich die meisten Anbieter sehr ähnlich. Search-code, Krugle und Ohloh Code, aber auch der Code-Hoster GitHub erreichen im Grunde eineähnliche Qualität wie Google Code Search. Mit einer sehr umfangreichen Liste o�ziell un-terstützter Sprachen und der Möglichkeit einer Suche durch reguläre Ausdrücke stellt sichSearchcode mit minimalem Vorsprung als Empfehlung in diesem Kriterium heraus - wasaber ausschlieÿlich der durch die genannten Optionen komfortableren Suche zu verdankenist.

18

Page 19: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

3.4 Tre�erquote

Bei diesem Kriterium wird untersucht, wie präzise die Suchmaschinen arbeiten bzw. ob diezurückgegebenen Ergebnisse zu den Suchanfragen passen. Auÿerdem werden die Ergebnisseder besonderen Suchoptionen verschiedener Anbieter sowie die Menge an Suchergebnissenim Vergleich zu den jeweils anderen Diensten betrachtet. Es ist jedoch anzumerken, dassdie Anzahl der Tre�er kein Merkmal für die Güte der Suchergebnisse ist. Die Verwendbar-keit der Ergebnisse der exemplarischen Suchen wird bewusst nicht beurteilt, da diese sichaufgrund der Kontextabhängigkeit kaum miteinander vergleichen lassen.

Google zeigt mit der eigenen Codesuche, wie eine gute und hilfreiche Suchmaschine funk-tionieren sollte. Code Search arbeitet schnell und präzise, der Dienst führt den Nutzerzuverlässig zu passenden Beispielcodes. Auch die Suche über reguläre Ausdrücke funktio-niert einwandfrei. Durch die Implementierung der POSIX-Engine werden auch bei Eingabekomplizierter Suchanfragen passende Ergebnisse zurückgegeben. Der Dienst Searchcode ar-beitet sehr ähnlich wie Google Code Search; auch hier werden schnell passende Inhalte ge-funden. Es fällt jedoch auf, dass der Service nicht so ausgreift ist wie das Google-Pendant.Die RegEx-Suche versteht beispielsweise bislang nur sehr simple Ausdrücke, bereits beieiner Filterung der Codes nach mehreren möglichen Dateiendungen per regulärem Aus-druck (vgl. Kapitel 3.2) wird die Anfrage oft nicht mehr korrekt interpretiert und derNutzer erhält keine Ergebnisse. Genauso verhält sich Searchcode bei der Suche mit Hilfevon Codeausschnitten - kurze Codezeilen werden korrekt verarbeitet, je komplizierter derMustercode jedoch ist, desto ungenauer arbeitet die Suchmaschine.

Letzteres wird hingegen von Krugle sehr gut umgesetzt. Die Suche anhand von Ausschnit-ten des Quelltextes arbeitet sehr zuverlässig. Zudem kann der Nutzer mit einem Reglerbestimmen, wie exakt der vorgegebene Codeausschnitt in den Suchergebnissen vorliegensoll. Wird der Regler auf �präzise� (exact) eingestellt, werden nur solche Codes ausgegeben,die eine identische Textstelle enthalten. Je weiter der Benutzer den Regler in die Richtungder gegensätzlichen Option �unscharf� (fuzzy) bewegt, desto mehr Abweichungen von derursprünglichen Anfragen werden zugelassen. Krugle arbeitet insgesamt sehr zuverlässigund bietet stets eine Vielzahl passender Suchergebnisse an. Eine Suche anhand von Code-ausschnitten ist auch bei Merobase möglich. Das Alleinstellungsmerkmal des Dienstes - dieSuche nach konkreten Funktionen anhand abstrakter Funktionsaufrufen - arbeitet in denmeisten Situationen ebenfalls recht präzise, so dass ein zusätzliches manuelles Durchsu-chen der Suchergebnisse nach den gewünschten Funktionsde�nitionen nur selten nötig ist.Auÿerdem umfasst der Dienst einige Inhalte, die in dieser Form bei den anderen Anbieternicht zu �nden sind, wie etwa JavaDocs- oder Webservice-Lookups.

Ohloh Code liefert in der Regel aufgrund seiner sehr groÿen Datenbank im direkten Ver-gleich zu den anderen Diensten die meisten Tre�er. Darüber hinaus gibt es keine Beson-derheiten - die Suchmaschine arbeitet exakt und schnell und gibt mit nur wenig Aufwandfür den Nutzer passende Ergebnisse aus. Auch MetaGer Code Search und GitHub weiseneine brauchbare Tre�erquote auf. MetaGer arbeitet genau, liefert aber aufgrund des einge-schränkten Datenbestandes meist weitaus weniger Tre�er als die Konkurrenz. Bei GitHubist die Ergebnismenge wesentlich gröÿer, au�ällig viele Tre�er sind bisweilen jedoch nurkurze Textdokumente mit Kommentaren oder Kon�gurationsinformationen. Dieser Um-stand lässt sich aber durch ein optionales Suchfeld einfach umgehen, indem der Nutzer

19

Page 20: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

den Parameter �Dateigröÿe� auf einen entsprechenden Mindestwert setzt (zum Beispielsize:>1000).

Die schlechtesten Tre�erquoten im Feld der untersuchten Anbieter weisen Snipt und An-

tepedia auf. Im Fall von Antepedia liegt das daran, dass nicht die Mustercodes, sondernlediglich die dazugehörigen Dokumentationen durchsucht werden, wodurch eine Suche nachkonkreten Quelltextbeispielen deutlich erschwert wird. Snipt arbeitet allgemein sehr un-präzise und gibt beispielsweise bei Suchausdrücken mit mehreren Begri�en alle Dokumenteaus, in denen mindestens einer davon vorkommt - was sich mangels weiterer Suchoptionenauch nicht umgehen lässt. Durch die sehr kleine Codedatenbank werden generell nur wenigeErgebnisse gefunden, zudem be�nden sich unter den Tre�ern auch häu�g belanglose Ein-träge wie E-Mail-Verkehr, welche von Benutzern in den Datenbestand eingetragen wurden.

Im Hinblick auf die Tre�erquote erzielen Ohloh Code, Krugle, GitHub und Google Code

Search die besten Ergebnisse. Diese Dienste arbeiten sehr zuverlässig und geben in derRegel eine Vielzahl an passenden Mustercodes aus. Weitere Suchmaschinen, die im di-rekten Vergleich weniger gut arbeiten, aber dennoch zufriedenstellende Ergebisse liefernsind Merobase (starke Einschränkung der unterstützten Sprachen), Searchcode (zusätzli-che Suchoptionen nicht ausgereift) und MetaGer (kleinerer Datenbestand durch fehlendesCrawling). Es sei jedoch noch einmal betont, dass die tatsächliche Einsetzbarkeit und in-haltliche Qualität aller Suchergebnisse stets vom entsprechenden Anwendungsfall abhängigist und keine direkten Vergleiche der Dienste untereinander ermöglicht.

3.5 Bedienbarkeit

Bei der Bewertung der Bedienbarkeit geht es darum, zu untersuchen, wie gut sich die ver-schiedenen Dienste handhaben lassen, wie die Suchergebnisse strukturiert und dargestelltwerden und wie e�zient sich Recherchen mit Hilfe der verschiedenen Anbieter durchführenlassen. Au�ällig sind dabei die Gemeinsamkeiten sämtlicher Anbieter im Testfeld: Bei allenwerden die Suchergebnisse übersichtlich aufgelistet, jeder Tre�er ist dabei mit einem kurzenAusschnitt der entsprechenden Codezeilen aufgeführt. Nach dem Ö�nen der gewünschtenQuellcodes sind diese bei ausnahmslos jedem Dienst (im Rahmen der jeweils unterstütztenProgrammiersprachen) mit hervorgehobener Syntax versehen, um die Lesbarkeit zu erhö-hen.

Betrachtet der Benutzer bei Google Code Search ein Ergebnis genauer, werden am lin-ken Bildschirmrand alle zum aufgerufenen Projekt gehörigen Dateien aufgeführt, sodasssich das gesamte Programm und die Zusammenhänge der einzelnen Dateien schnell un-tersuchen lassen. Eine In-File Suchfunktion ermöglicht zudem eine schnelle weiterführendeSuche innerhalb des gewünschten Projekts. Was bei Google Code Search jedoch fehlt, isteine nachträgliche Filterung der Suchergebnisse, beispielsweise nach Programmierspracheoder Dateiart. Dies ermöglichen sowohl Krugle als auch Ohloh Code, die ansonsten überein fast gleiches Interface und eine ähnliche Handhabung wie der Google-Dienst verfügen.Beide Anbieter blenden am linken Rand der Ergebnisübersicht relevante Filter ein, die sichbei Bedarf ein- und ausschalten lassen, um die Menge der gefundenen Mustercodes weiterzu reduzieren. Im direkten Vergleich gestaltet Krugle diese Funktion etwas praktischer,da sich hier die einzelnen Filterkategorien (z.B. Projekte, Dokumenttypen oder Autoren)separat durchsuchen lassen und der Nutzer nicht durch unter Umständen sehr lange Listen

20

Page 21: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

navigieren muss.

Eine vergleichbare Bedienung ist auch bei der Codesuche des Hosting-Diensts GitHub vor-zu�nden, jedoch ist die Handhabung des Interfaces minimal umständlicher. Die einzigeOption, die Suchergebnisse nachträglich zu �ltern, beschränkt sich auf die Programmier-sprache - und dies auch nur auf die zehn am häu�gsten in den vorliegenden Ergebnissenvertretenen. Insbesondere ein Eingrenzen auf weniger verbreitete Sprachen ist im Nachhin-ein nur schwer möglich. Auch sind die weiteren zu einem Projekt gehörenden Dateien nichtsofort ersichtlich, sondern müssen separat aufgerufen werden, was sich letztlich negativ aufdie Handhabung auswirkt. Ähnlich verhält es sich bei MetaGer Code Search, wo der Be-nutzer ebenfalls erst in die übergeordnete Datei- und Verzeichnisstruktur wechseln muss,um sich einen Überblick über die zusammengehörenden Dateien eines Projekts verscha�enzu können.

Merobase und Searchcode lassen die oben genannten Komfortfunktionen nahezu gänzlichvermissen. Searchcode hat eine nachträgliche Eingrenzung der Suchergebnisse nur rudi-mentär implementiert; hier wird über Links nur eine neue (auf eine Programmiersprachebegrenzte) Suchanfrage generiert. Bei Merobase ist eine spätere Filterung nicht möglich -was aber im Hinblick auf die Spezialisierung auf nur wenige unterstützte Sprachen letztlichkaum relevant ist. Was beiden Diensten fehlt, ist eine Möglichkeit, einfach in die übergeord-nete Dateistruktur zu wechseln, um ein Projekt vollständig betrachten und untersuchen zukönnen. Hier bleibt dem interessierten Nutzer nur die Möglichkeit, über den Backlink zurQuelle des Codes zu gelangen und beim entsprechenden Projekt-Hoster weitere Recherchendurchzuführen.

Bei Snipt gestaltet sich eine Code-Recherche als sehr schwierig. Die Seite bietet kaumSuch- und Filteroptionen, auch ein nachträgliches Eingrenzen oder Sortieren der Sucher-gebnisse ist nicht implementiert. Im Grunde muss der Nutzer bereits seine Suchanfragemöglichst exakt formulieren, da ein �Stöbern� durch die Suchergebnisse nicht möglich ist.Schwierig erscheint auch eine e�ziente Recherche beim Aggregationsdienst Antepedia. DieSeite gibt passend zur Suchanfrage Links zu entsprechenden Projekten aus, die unmittel-bar zum ursprünglichen Hosting-Dienst führen. Eine Aufarbeitung oder Darstellung derzugehörigen Quelltexte wird von Antepedia selbst nicht durchgeführt.

Bei Betrachtung der Bedienbarkeit und Handhabung haben sich im Test Krugle und OhlohCode als die e�zientesten Dienste zur Code-Recherche herausgestellt. Beide Anbieter stel-len die gefundenen Mustercodes übersichtlich und gut strukturiert dar und bieten vieleOptionen, schnell zu gewünschten Quelltexten zu gelangen und diese eingehend zu unter-suchen. Insgesamt übertre�en beide Dienste in diesen Kriterien sogar Google Code Search,welchem beispielsweise eine einfache nachträgliche Filterung der Suchergebnisse fehlt.

21

Page 22: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

4 Zusammenfassung & Empfehlung

Die Suchmaschine Google Code Search war mit vielen nützlichen Funktionen, einer einfa-chen Handhabung und einer riesigen Datenbank ein äuÿerst hilfreiches Recherche-Tool fürSoftwareentwickler. Auch nach der Einstellung dieses Projekts Anfang 2012 stehen seineDienstleistungen mit eingeschränktem Umfang weiterhin zur Verfügung. Das Interface istunverändert online, lediglich die durchsuchbare Codebasis ist stark geschrumpft und bietet�nur noch� Projekte aus dem hauseigenen Google Code an; immerhin handelt es sich hierbeium einen der gröÿten Hosting-Dienste weltweit. Im Rahmen dieses Praktikums konnteneinige Alternativen ermittelt werden, die Google Code Search in Bezug auf Funktionalitätund Bedienbarkeit zum Teil sehr ähnlich sind oder es in einigen Fällen sogar übertre�en.

Als beste Alternativen haben sich die Dienste Ohloh Code und Krugle erwiesen. BeideAnbieter unterscheiden sich nur marginal voneinander und haben jeweils minimale Vor-und Nachteile dem anderen gegenüber. Jedoch konnten beide im Test überzeugen, so dasses letztlich vom persönlichen Emp�nden des Benutzers abhängt, welche Webseite er bevor-zugt. Ohloh Code arbeitet durch Crawling in Kombination mit eigenem Projekt-Hostingauf einer gröÿeren Codebasis und bietet zudem vielfältige Filteroptionen. Krugle ist hin-gegen etwas komfortabler zu bedienen und ermöglicht eine sehr gut funktionierende Sucheanhand von Codeausschnitten an. Insgesamt erzielen beide Anbieter schnell und präzisehilfreiche Ergebnisse und sind daher empfehlenswert für umfassende Code-Recherchen imStil von Google Code Search.

Der AnbieterMerobase kann zwar nicht uneingeschränkt empfohlen werden, erweist sich je-doch in einigen speziellen Anwendungsfällen als äuÿerst hilfreich. Die Menge der suchbarenSprachen ist sehr stark begrenzt; sucht ein Nutzer jedoch nach konkreten Programmierbei-spielen anhand von abstrakt formulierten Funktions- oder Objektbeschreibungen in Javaoder C, wird er per Schnittstellensuche schnell fündig. Zudem bietet Merobase als weite-res Alleinstellungsmerkmal einen Webservice-Lookup inklusive Ausführungsumgebung an.Auch GitHub - nach Google Code einer der gröÿten Hosting-Dienste[11] - ermöglicht einebrauchbare Suche nach Quellcodes im eigenen Datenbestand. Im Gegensatz zu den meis-ten anderen Projekt-Hostern kann bei GitHub im Interface der �erweiterten Suche� (sieheKapitel 2.3.2) explizit eine Codesuche durchgeführt werden, wodurch ähnliche Ergebnissewie bei Google erzielt werden können. Allerdings kann GitHub aufgrund eingeschränkterSuchoptionen nicht mit Ohloh Code oder Krugle mithalten.

Das Ein-Mann-Projekt Searchcode stellt ebenfalls eine erwähnenswerte Alternative dar.Die Anwendung arbeitet auf einer sehr groÿen Datenbank, bietet vielfältige Such- undFilteroptionen und unterstützt zumindest im Testfeld insgesamt die meisten Program-miersprachen. Als einziger Anbieter neben Google Code Search versteht die Suchmaschineauch einfache reguläre Ausdrücke. Jedoch mangelt es Searchcode derzeit noch an Komfortbei der Handhabung; einige Suchoptionen (wie beispielsweise die erwähnte RegEx-Suche)erscheinen aktuell noch unausgereift. Dennoch lohnt es sich zu beobachten, wie sich diesesProjekt weiterentwickelt.

Drei Anbieter des Testfelds lassen sich abschlieÿend nicht für Recherchearbeiten empfehlen.Die deutsche Suchmaschine MetaGer Code Search umfasst zwar eine Vielzahl mehr oderweniger bekannter OpenSource-Projekte, dennoch stellt der Datensatz mangels Crawling-

22

Page 23: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Funktion keinen Vergleich zu den vorgenannten Diensten dar. Zudem gibt es nur wenigeSuchoptionen und eine unnötig komplizierte Handhabung. Die Codesammlung Snipt weistdie mit Abstand kleinste Datenbank und wenigsten Suchoptionen auf. Auch aufgrund vie-ler unnützer Einträge werden dem Nutzer nur selten hilfreiche Ergebnisse geliefert. Derletzte Anbieter, Antepedia, ist dank besonderer Features wie der Bug-Suche ein sehr in-teressanter Service, jedoch ermöglicht er keine zuverlässige Codesuche, da lediglich dieDokumentationstexte der zugehörigen Projekte durchsucht werden.

23

Page 24: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

A Anhang

Google Code Search Krugle Ohloh Code Merobase MetaGer Code

Search Searchcode Snipt GitHub Antepedia

Arbeitsweise Einreichen durch User, Crawling Crawling Einreichen durch

User, Crawling Crawling manuelle Updates Crawling Einreichen durch User

Einreichen durch User Crawling

Codebasis Google Code gängige; dazu Wikipedia

gängige, dazu eigener Bestand gängige eigener Bestand gängige eigener Bestand eigener Bestand gängige

durchsuchte Formate

OpenSource, Archive, Versionierungs-software

OpenSource, Archive, Versionierungs-software

OpenSource, Archive, Versionierungs-software

OpenSource, Archive, Versionierungs-software

-OpenSource, Archive, Versionierungs-software

- -OpenSource, Archive, Versionierungs-software

rel. Größe des Datenbestands sehr groß sehr groß größte im Testfeld klein klein sehr groß sehr klein groß sehr groß

Suche mit regulären

AusdrückenJa Nein Nein Nein Nein Ja Nein Nein Nein

Suche mit Codeabschnitten Nein Ja Nein Ja Nein Ja Nein Nein Nein

Filter-möglichkeiten

effizient über Tags und RegEx effizient über Tags effizient über viele

Tags effizient über Tags wenige Optionen effizient über Tags und RegEx keine Optionen wenige Optionen keine Optionen

nachträgliche Filterung der Ergebnisse

Nein Ja Ja Nein Nein Ja, aber umständlich

Ja, aber umständlich Ja Nein

unterstützte Programmier-

sprachen

über 70, darunter alle gängigen;weitere per RegEx

über 40, darunter alle gängigen

über 40, darunter alle gängigen

Java, C, C++, C# und WSDL

über 40, darunter alle gängigen

über 100, darunter alle gängigen; weitere per RegEx

alle gängigen über 90, darunter alle gängigen alle gängigen

besondere Dateiformate - - -

Webservices (inkl. Ausführungs-umgebung)

- - Testroutinen, Webformate - -

Syntax-highlighting Ja Ja Ja Ja Ja Ja Nein Ja Nein

Angabe von Quelle/Lizenz Ja / Ja Ja / Ja Ja / Nein Ja / Ja Ja / Nein Ja / Nein Nein / Nein Ja / Nein Ja / Ja

weitere Informationen zu Ergebnissen

- User-Kommentare User-Kommentare Dokumentationen, Metriken - Dokumentationen -

Dokumentationen, User-Kommentare, Metriken

Dokumentationen, Bug-Informationen

Trefferquote/ -menge

sehr präzise / umfangreich

sehr präzise / umfangreich

sehr präzise / umfangreich

recht präzise / ausreichend

sehr gut / überschaubar

recht präzise / umfangreich

ungenau / ungenügend

recht präzise / umfangreich

ungenau / umfangreich

Bedienbarkeit einfach, übersichtlich

komfortabel, übersichtlich

komfortabel, übersichtlich

einfach, etwas unübersichtlich

kompliziert, etwas unübersichtlich

einfach, etwas unübersichtlich umständlich einfach,

übersichtlich umständlich

FAZIT eingeschränkte Empfehlung empfehlenswert empfehlenswert eingeschränkte

Empfehlungallgemein nicht empfehlenswert

eingeschränkte Empfehlung

nicht empfehlenswert

eingeschränkte Empfehlung

allgemein nicht empfehlenswert

Page 25: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

Anbieterverzeichnis

[A01] Google Code Search (http://code.google.com/codesearch).

[A02] Google Project Hosting (http://code.google.com/).

[A03] Krugle (http://opensearch.krugle.org/).

[A04] Ohloh Code (http://code.ohloh.net/).

[A05] Merobase (http://www.merobase.com/).

[A06] MetaGer Code Search (http://code.metager.de/).

[A07] Searchcode (http://searchco.de/).

[A08] Snipt (http://snipt.net/).

[A09] GitHub (http://github.com/).

[A10] Antepedia (http://www.antepedia.com/).

Quellen

[1] B. Coughran: �More wood behind fewer arrows�, Google O�cial Blog, online:http://googleblog.blogspot.de/2011/07/more-wood-behind-fewer-arrows.

html, 20. Juli 2011.

[2] Der Standard: �Google Code Search macht Hackern das Leben leicht�, online:http://derstandard.at/2616621 (aufgerufen am 29. Januar 2013).

[3] Google Developers (https://developers.google.com/).

[4] Heise Open Source: �Code suchen mit Google�, online: http://heise.de/-168560(aufgerufen am 29. Januar 2013).

[5] B. Horowitz: �A fall sweep�, Google O�cial Blog, online: http://googleblog.

blogspot.de/2011/10/fall-sweep.html, 14. Oktober 2011.

[6] Google: �Über Google Codesuche�, online: http://www.google.com/help/faq_

codesearch.html (aufgerufen am 29. Januar 2013).

[7] R. Cox: �Regular Expression Matching with a Trigram Index or How Google Co-de Search Worked�, online: http://swtch.com/~rsc/regexp/regexp4.html, Januar2012.

[8] B. Boyter: �About Searchcode�, online: http://searchco.de/about/ (aufgerufen am21. Januar 2013).

[9] B. Boyter: �Searchcode now supports regex code search�, Searchcode Blog, online:http://searchco.de/blog/view/searchcode-now-supports-regex-code-search/,17. Dezember 2011.

25

Page 26: Google Code Search Alternativen - nds.ruhr-uni-bochum.de · Google Code Search Alternativen Ruhr-Universität Bochum Master-Praktikum Netz- und Datensicherheit Wintersemester 2012

[10] B. Boyter: �Variety of Updates�, Searchcode Blog, online: http://searchco.de/blog/view/variety-of-updates/, 3. Dezember 2012.

[11] Heise Developer: �GitHub knackt 3-Millionen-Marke�, online: http://heise.de/

-1785652 (aufgerufen am 29. Januar 2013).

[12] Wikipedia: �Web crawler�, online: http://en.wikipedia.org/wiki/Web_crawler

(aufgerufen am 14. Februar 2013).

[13] Ohloh Meta: �Ohloh FAQ�, online: http://meta.ohloh.net/faq-2/ (aufgerufen am14. Februar 2013).

26