Entwicklungs-Portal GitHub: Die überwiegende Mehrheit der Dateien sind Dubletten

Auf GitHub liefern sechs Prozent der JavaScript-Dateien die Basis für die restlichen 94 Prozent, so das Ergebnis einer Studie. Das Gros der Dateien sind Dubletten von Dateien und ganzen Bibliotheken.

In Pocket speichern vorlesen Druckansicht 49 Kommentare lesen
GitHub: mehr als die Hälfte sind Doubletten
Lesezeit: 3 Min.
Von
  • Katharina Kraft

Die Inhalte auf GitHub, einem Online-Dienst, der Software-Entwicklungsprojekte auf seinen Servern bereitstellt, bestehen zu 70 Prozent aus Dubletten, wie sich im Rahmen einer Studie der University of California in Irvine herausstellte. Dass ein Großteil des Codes dupliziert ist, verwundert dabei kaum, denn Code-Sharing ist ein wichtiger Teil der GitHub-Arbeit. Dass aber von den 428 Millionen Dateien auf GitHub nur 85 Millionen – also nicht einmal 20 Prozent – einzigartig sind, überraschte dennoch.

Für Forscher und Entwickler, die Software von GitHub für eigene Untersuchungen auswählen wollen, ist dieses Ergebnis deshalb wichtig, weil sie sich in der Regel auf Stichproben stützen. "Dubletten müssen dabei immer auch in Betracht gezogen werden, da sie Forschungsergebnisse verfälschen können", kommentiert Adrian Colyer, Open-Source-Beobachter.

So führt die Studie beispielsweise an, dass Untersuchungen von C- und C++-Programmen auf die Verwendung von Assertions durch Dubletten deutlich verfälscht werden. Ähnliches gilt Software-Qualitätsstudien, die ebenfalls Code-Duplikate berücksichtigen müssen.

Als Ergebnis der Studie wurde ein Index zur Code-Duplizierung, „DéjàVu“ genannt, erstellt. Dieser hilft Ähnlichkeitsbeziehungen in Stichproben von Projekten zu erkennen und zu verstehen. Er kann aber ebenso bei der Vorbereitung von Untersuchungen helfen Stichproben zu kuratieren und Duplikate zu reduzieren. Codeduplizierungen werden in der Studie mit einer Vielzahl von Hash-Techniken differenziert und beurteilt. Unveränderte Kopien von Code in verschiedenen Projekten ließen sich beispielsweise anhand identischer Hashes einfach ermitteln. Kleinere Unterschiede im Code, die nur Leerstellen, Kommentare oder die inhaltliche Reihenfolge betreffen, konnten mittels Token Hash überprüft werden. Mit dem Code-Clone-Detektor SorcererCC ließen sich zudem Dubletten mit 80-Prozent-Token-Übereinstimmung erfassen, um einen Eindruck davon zu erhalten, wie viele Dateien nach dem Klonen bearbeitet wurden.

(Bild: https://blog.acolyer.org/2017/11/20/dejavu-a-map-of-code-duplicates-on-github/)


Die Studie zeigt: JavaScript ist die am meisten geklonte Umgebung von allen. Nur sechs Prozent der Dateien dienen den JavaScript-Dateien auf GitHub als Basis für die restlichen 94 Prozent. Bei C++ sind 73 Prozent der Dateien Duplikate, bei Python sind es immer noch 71 Prozent.

Java-Entwickler sind die individuellsten in den vier untersuchten Programmiersprachenumgebungen, aber selbst bei Java sind noch 40 Prozent der Dateien Duplikate. Die meisten Duplizierungen gehen dabei – wenig überraschend – auf Abhängigkeiten zurück. Java liefert ein gutes Beispiel: Entwickler, die ein Projekt erstellen, fügen oft NPM Libaries sowie einen Teil des Anwendungscodes in neue Repositorys ein. Ähnlich lassen fast alle JavaScript-Programmierer JQuery in ihre Projekte einfließen.

Außerdem, so die Studie, gibt es Programmierer, die als Git-Nutzer nicht den fork mechanism benutzen, sondern lieber per copy und paste ganze Dateien oder gar Bibliotheken einfügen, was ebenfalls zu weiteren Dubletten führt. (kkr)