Conceitos Básicos
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 Wartbarkeit berechnen. Die Ergebnisse werden als "unveränderliches" Archiv veröffentlicht, um die Replizierbarkeit von Forschungsergebnissen zu erleichtern.
Resumo
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.
- Filterung und Bereinigung des heruntergeladenen Quellcodes, um nur die relevanten Java-Dateien zu behalten.
- Berechnung gängiger Quellcode-Metriken wie Komplexität, Kohäsion und Wartbarkeit.
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 umfasst 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.
- Die berechneten Metriken weichen teilweise von den Originaldefinitionen ab, da moderne Java-Funktionen berücksichtigt werden müssen.
- 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 reduzierte Datenvorverarbeitung wünschen. Die Open-Source-Community wird eingeladen, zu den Skripten beizutragen und die Funktionalität weiter auszubauen.
Estatísticas
Die Erstellung des neuesten Archivs vom 2. März 2024 benötigte 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.
Citações
"Selbst wenn wir, als Besitzer des Repositorys, in der Lage sind, zuvor erstellte Assets zu ersetzen, werden wir dies nicht tun, um die Idee nicht zu gefährden."
"Forscher müssen verstehen, dass die von den Skripten in CAM generierten Metriken nicht genau dieselben Metriken sind, die von ihren Autoren beschrieben wurden."