QA-MISRA Metriken & Visualisierungen

Code-Einblicke und Berichte

QA-MISRA Metriken & Visualisierungen

Code-Einblicke und Berichte

Metriken & Visualisierungen

Die Codequalität kann anhand numerischer Metriken, das heißt, die Anzahl der Elemente im Quellcode, analysiert werden. Codequalität wie z. B. Komplexität und Abhängigkeiten können über interaktive Grafiken und Diagrammen visualisiert werden.

Ein Basissatz von Code-Metriken wurde von der Hersteller Initiative Software (HIS) definiert. HIS ist eine Kooperation der Verbände der Automobilindustrie aus Deutschland, Großbritannien und Frankreich. Ihr Ziel war es, eine international gültige gemeinsame Infrastruktur für die Software-Qualitätssicherung in der Automobilindustrie zu schaffen. Software-Metriken sind die Basis für ein effizientes Projekt- und Qualitätsmanagement. Mit Software-Metriken können Aussagen über die Qualität des Softwareprodukts und des Softwareentwicklungsprozesses getroffen werden.

Welche Code-Metriken von QA-MISRA berechnet werden können, zusammen mit Regeln zur Überprüfung der Schwellenwerte für diese Metriken, sind nachfolgend aufgelistet. Des Weiteren, ob und unter welchem Namen die jeweilige Metrik Teil dieses Satzes von Code Metriken ist.

Hersteller Initiative Software (HIS) Metriken

Die folgenden HIS-Metriken werden von QA-MISRA mit Schwellenwertprüfungen unterstützt:

  • COMF (Kommentardichte)
  • PATH (Anzahl der Pfade)
  • GOTO (Anzahl der Jump-Statements)
  • v(G) (zyklomatische Komplexität)
  • CALLING (Anzahl der Aufrufe)
  • CALLS (Anzahl von Aufrufen)
  • PARAM (Anzahl der Argumente)
  • STMT (Statements pro Funktion)
  • LEVEL (Aufrufstufen)
  • RETURN (Anzahl der Rückgaben)
  • VOCF (Sprachumfang)
  • ap_cg_cycle (Anzahl der rekursiven Pfade)

Die folgenden HIS-Metriken werden von QA-MISRA ohne Schwellenwertprüfungen unterstützt:

  • NOMV Diese Metrik zählt die Anzahl der Verstöße gegen das HIS Subset MISRA C 1.0.2. Die Anzahl der Regelverletzungen von unterstützten und aktivierten MISRA-Regeln wird von QA-MISRA angezeigt.
  • NOMVPR Diese Metrik zählt die Anzahl der Verstöße gegen das HIS Subset MISRA C 1.0.2. pro Regel. Die Anzahl der Regelverletzungen pro unterstützte und aktivierte MISRA-Regel wird durch QA-MISRA.

Codequalität-Metriken

Zusätzlich zu den HIS-Metriken berechnet QA-MISRA die folgenden Codequalität-Metriken, unterschieden in 4 Stufen:

Statement
Die Metrik gilt für ein einzelnes Statement. Metriken auf Statement-Ebene sind nur für Schwellenwertprüfungen verfügbar und werden nicht direkt ausgewiesen. Auf dieser Ebene wird die folgende Metrik berechnet:

  • Größe des Statements

Funktion
Die Metrik bezieht sich auf eine einzelne Funktion. Auf dieser Ebene werden die folgenden Metriken berechnet:

  • Kommentardichte (HIS)
  • Zyklomatische Komplexität
  • Anzahl der Return-Statements
  • Anzahl der Go-To-Statements
  • Anzahl der Statements
  • Anzahl der Parameter
  • Anzahl der wartbaren Codezeilen
  • Maximale Verschachtelung von Kontrollstrukturen
  • Anzahl der nicht zyklischen Ausführungspfade (d.h. minimale Anzahl benötigter Testfälle)
  • Anzahl der aufgerufenen Funktionen
  • Anzahl der aufrufenden Funktionen
  • Sprachumfang
  • Anzahl der lokalen Variablen

Datei
Die Metrik gilt für eine einzelne Datei. Auf dieser Ebene werden die folgenden Metriken berechnet:

  • Kommentardichte
  • Anzahl der Quelltextzeilen
  • Anzahl der physischen Quelltextzeilen
  • Anzahl der Funktionsdefinitionen

Anwendung
Die Metrik berechnet einen Wert über alle Dateien des Analyseprojekts. Auf dieser Ebene werden die folgenden Metriken errechnet:

  • Anzahl der rekursiven Pfade
  • Anzahl der ursprünglichen Quelldateien
  • Anzahl der Funktionsdefinitionen
  • Anzahl der Quelltextzeilen
  • Anzahl der physischen Quelltextzeilen

Code-Visualisierung

Die QA-MISRA-Aufrufdiagramme sind eine visuelle Darstellung der direkten Aufrufe (in und aus) Funktionen/Methoden.

Diese Aufrufdiagramme präsentieren kontextbezogene Regelverletzungen, Quellcode-Links, und CSV-Exporte bieten grafische Einblicke in die Codequalität.

Visualisierung von C++-Klassen

Ein Klassendiagramm visualisiert eine ausgewählte Klasse mit den dazugehörigen Beziehungen. Mögliche Beziehungen sind Vererbung, Template-Instanziierung/Spezialisierung und Verwendung als Datentyp von Klassen-Membern. Für jede einzelne Klasse können detaillierte Informationen über die jeweiligen Daten-Member und Member-Funktionen eingesehen werden.