title: Software code metric libraries and their differences
Creators: name: Battaglin, Matteo Bernard
Publisher: name: :none
Year: 2024

description: Softwarecode-Metriken sind quantifizierbare Maße, die zur Bewertung verschiedener Aspekte von Softwarecode verwendet werden, darunter Größe, Qualität, Komplexität, Wartbarkeit und für die Schätzung der Entwicklungskosten. Das Hauptziel dieser Arbeit ist es, ein tieferes Verständnis von Softwarecode-Metriken zu erlangen, indem zwei zentrale Forschungsfragen behandelt werden: Erstens, wird untersucht, wie unterschiedliche Open-Source-Metrik-Bibliotheken bei der Analyse des selben Eingabecodes variierende Ergebnisse liefern. Zweitens, sollen Metriken wie die zyklomatische Komplexität (CC) untersucht werden, welche als Anzahl der unabhängigen Pfade durch ein Programm definiert ist und theoretisch zwischen Programmiersprachen mit ähnlicher Basissyntax vergleichbar sein sollte. In diesem Zusammenhang wird erforscht, wie die Implementierung desselben Algorithmus in verschiedenen Programmiersprachen (z. B. Python vs. C) die Ergebnisse verschiender Tools beeinflusst. Zur Erreichung dieser Ziele wurden zwei Software-Tools entwickelt. Das Analysis Tool wurde konzipiert, um den Vergleich der Ergebnisse verschiedener Open-Source-Metrik-Tools zu erleichtern. Darüber hinaus wurde ein Transcriber implementiert, der einfache Python-Codedateien in C-Code umwandelt, um die Metriken desselben Algorithmus in beiden Zielprogrammiersprachen vergleichen zu können. Zusätzlich wurden mehrere Testfälle erstellt. Die Untersuchung ergab beträchtliche Unterschiede in den Ergebnissen verschiedener Metrik-Tools für identische Eingaben. Außerdem zeigte sich, dass der Vergleich der zyklomatischen Komplexität für denselben Algorithmus in unterschiedlichen Sprachen zu signifikant abweichenden Ergebnissen führte, obwohl diese theoretisch ähnlich sein sollten. Dies weist darauf hin, dass beim Vergleich von Ergebnissen, die von unterschiedlichen Bibliotheken berechnet wurden, Vorsicht geboten ist. Die Arbeit verdeutlicht die Notwendigkeit zukünftiger Bemühungen zur Standardisierung von Softwarecode-Metriken.
description: Software code metrics are quantifiable measures used to assess various aspects of software code, such as size, quality, complexity, maintainability, and estimating development costs. The main aim of this thesis is to gain a deeper understanding of software code metrics while focusing on two main areas. First, a better understanding of the variations in results from various open-source code metric libraries for the same input code. Second, to examine metrics such as Cyclomatic Complexity (CC), which is defined as the amount of independent paths through a program and should, in theory, be fairly comparable across programming languages with similar basic syntax. We thus investigated how the implementation of the same algorithm in two different programming languages (e.g., Python vs. C) affects the library results. Two software tools were developed to accomplish these goals. First, the Analysis Tool was created, which simplifies comparing the results of various open-source metric tools. Second, a Transcriber was implemented that can transcribe simple Python code files to C code with the goal of allowing the metrics of the same algorithm to be easily generated and compared in the two target programming languages. Additionally, multiple test cases were written to verify the methodology. Considerable differences in results were observed between different metric tools for the same inputs in some cases. Furthermore, it was demonstrated that comparing the Cyclomatic Complexity metric results for the same algorithm implemented in two languages leads to vastly different results for most tools due to language-specific bugs, although, in theory, they should be the same. This suggests that caution is necessary when comparing metric results calculated by different libraries. This thesis shows that more work is needed in the future to standardize software code metrics.