Grunnleggende konsepter
Das CAM-Projekt stellt eine offene Sammlung von Skripten bereit, die regelmäßig Java-Repositorys von GitHub herunterladen, bereinigen und Metriken wie Komplexität, Kohäsion und andere berechnen. Die Ergebnisse werden als "unveränderliches" Archiv veröffentlicht, um die Replizierbarkeit von Forschungsergebnissen zu erleichtern.
Sammendrag
Das CAM-Projekt wurde entwickelt, um die Arbeit von Forschungsprojekten zu erleichtern, die Java-Quellcode analysieren. Es adressiert drei Hauptprobleme:
- Sicherstellung der Replizierbarkeit von Forschungsergebnissen durch das Bereitstellen einer stabilen Datenbasis von heruntergeladenen GitHub-Repositorys.
- Implementierung von Filterungsschritten, um unerwünschte Dateien wie Testfälle oder Dateien mit Syntaxfehlern zu entfernen.
- Berechnung gängiger Quellcode-Metriken wie Komplexität, Kohäsion usw.
Das CAM-Projekt führt diese Schritte regelmäßig (mindestens einmal jährlich) durch und veröffentlicht die Ergebnisse als "unveränderliches" Archiv. Das neueste Archiv vom 2. März 2024 enthält 532.000 Java-Klassen mit 48 Metriken pro Klasse.
Trotz dieser Bemühungen hat das Projekt auch einige Einschränkungen:
- Es kann nur einen Bruchteil der Millionen von Java-Repositorys auf GitHub erfassen, da der Prozess sehr zeitaufwendig ist.
- Einige Metriken mussten leicht modifiziert werden, da moderne Java-Funktionen bei der Einführung der Metriken noch nicht existierten.
- Der verwendete Parser kann nur Java 8-Syntax verarbeiten und schließt neuere Syntax aus.
Insgesamt erwartet das Projekt, von Forschungsteams genutzt zu werden, die Java-Quellcode analysieren und Replizierbarkeit sowie Datenvorverarbeitung vereinfachen möchten. Die Open-Source-Community wird eingeladen, zur Verbesserung der Skripte beizutragen.
Statistikk
Die Erstellung des neuesten Archivs vom 2. März 2024 dauerte 10 Tage auf einem Server mit 8 vCPUs und 32 GB RAM.
Das Archiv hat eine Größe von 2,2 GB und enthält 532.000 Java-Klassen.
Sitater
"Selbst wenn die meisten der Metriken, die wir sammeln, formale Definitionen haben, die in den Papern beschrieben wurden, in denen die Metriken ursprünglich eingeführt wurden, mussten wir für einige Modifikationen an den ursprünglichen Algorithmen vornehmen."
"Wir schließen einfach alle Dateien aus, die von diesem Parser nicht geparst werden können. Forscher, die nach der aktuellsten Java-Syntax suchen, müssen sich an eine andere Datenquelle wenden."