Wir von Snap setzen dabei seit einiger Zeit auf SonarQube. Neben dem SonarQube-Server, auf dem Projekte laufend analysiert werden und eine Historie aufgebaut wird, die zeigt, wie sich die Qualität entwickelt hat, bietet SonarQube for IDE die Möglichkeit, ABAP-Code während der Entwicklung in Eclipse zu analysieren.
Hintergrundwissen
Überblick über SonarQube
SonarQube ist ein leistungsstarkes Tool zur automatisierten Analyse der Code-Qualität in verschiedenen Programmiersprachen. Es erkennt Code-Smells, Sicherheitslücken und Bugs und hilft, die Wartbarkeit und Sicherheit von Anwendungen zu verbessern. Die Plattform unterstützt eine Vielzahl von Integrationen, darunter CI/CD-Pipelines und IDEs. Quality Profiles definieren die Regeln, nach denen der Code geprüft wird, und bieten eine hohe Anpassbarkeit. Mit SonarQube können Entwickler frühzeitig Probleme identifizieren und kontinuierlich die Qualität ihres Codes verbessern.
Vorteile und Mehrwerte von statischen Code-Analysen
Statische Code-Analysen bieten zahlreiche Vorteile, indem sie Fehler und Schwachstellen frühzeitig im Entwicklungsprozess erkennen, bevor der Code ausgeführt wird. Sie erhöhen die Code-Qualität nachhaltig, reduzieren die technischen Schulden und minimieren potenzielle Sicherheitsrisiken. Darüber hinaus fördern sie die Einhaltung von Best Practices und Coding-Standards, was die Zusammenarbeit in Teams erleichtert. Da die Analysen automatisiert und kontinuierlich erfolgen können, sparen sie Zeit und Ressourcen, indem manuelle Reviews reduziert werden. Letztlich verbessern statische Code-Analysen die Wartbarkeit und Zuverlässigkeit von Anwendungen und tragen zu einer höheren Kundenzufriedenheit bei.
Voraussetzungen
Für die Analyse von ABAP-Code wird ein SonarQube-Server ab der Developer Edition benötigt. Um den Konfigurationsaufwand gering zu halten, empfiehlt es sich, einen Identity Provider anzubinden. Dadurch müssen Benutzer nicht manuell angelegt werden.
Für die Ausführung der Analysen werden Eclipse mit installiertem ADT und das SonarQube-for-IDE-Plugin benötigt. Das Plugin kann unkompliziert per Drag & Drop aus dem Eclipse Marketplace installiert werden.
Einrichtung
Bei der Anbindung eines IDP entfällt der zusätzliche Aufwand für die Benutzerverwaltung. Durch die Anmeldung auf dem SonarQube-Server wird standardmäßig eine Berechtigung vergeben, mit der Analysen ausgeführt werden können. Für den Einsatz von SonarQube for IDE wird nicht mehr benötigt.
Die Regeln, mit denen Codes analysiert werden, pflegt SonarQube als Quality Profile, und diese Profile werden anschließend einem Projekt zugewiesen. Um Analysen für Code zu ermöglichen, der keinem konkreten Projekt angehört, haben wir zwei Dummy-Projekte bereitgestellt, die Regeln für den Z-Namensraum und unseren /SNAP/-Namensraum implementieren.
Die Einrichtung von SonarQube for IDE besteht im Grunde aus zwei Schritten:
- Aufbau der Verbindung zum SonarQube-Server durch Angabe der Server-URL und eines Tokens zur Authentifizierung.
- Binden eines ABAP-Projekts an ein passendes SonarQube-Projekt.
Analyse
Das Motto „Clean as You Code!“ ist treffend: Sobald ein kompatibles Entwicklungsobjekt geöffnet wird, wird dieses über den SonarQube-Server analysiert.
Die Issues werden wie Syntaxfehler oder Warnungen dargestellt (allerdings als Typ „Info“ – blau unterstrichen), ohne dass manuell eine Prüfung durchgeführt werden muss.
In diesem Ausschnitt wurden zwei Issues gefunden: ein leerer Catch-Block und ein generischer Catch auf cx_root.
Die Issues werden separat in einer eigenen „SonarLint On-the-fly“-Sicht dargestellt. Per Rechtsklick können Details zur Regel angezeigt werden, um besser zu verstehen, warum das Issue ein Problem darstellt.
Die Issues werden ebenfalls in der „Problems“-Sicht angezeigt.
Vergleich Code Inspector/ATC
Im Vergleich zum Code Inspector/ATC sieht SonarQube immer nur einzelne Ausschnitte der gesamten Codebase. So können zwar Richtlinien für die Namen von Variablen definiert werden, im Gegensatz zum Code Inspector kann jedoch nicht unterschieden werden, um welchen Typ es sich handelt – Strukturen und interne Tabellen werden gegen dasselbe Pattern geprüft.
Der große Vorteil von SonarQube for IDE ist, dass kein aktives Eingreifen durch den Entwickler notwendig ist, um die Prüfungen durchzuführen. Dadurch können vor allem Legacy-Code schrittweise aufgewertet und auch neue Entwicklungen durch die unkomplizierten Analysen unterstützt werden.
Fazit
SonarQube ist eine sehr gute Ergänzung zu bestehenden SAP-Standard-Tools, um die Code-Qualität zu verbessern. Die Einrichtung und der Betrieb sind sehr einfach, und durch das automatische Ausführen der Analysen ist es einfacher denn je, Verbesserungen im Code vorzunehmen.
Die Regeln sind leicht adaptierbar und können ohne weiteres beispielsweise für spezielle Namenskonventionen erweitert werden. So können wir frühzeitig fehlerhaften Code lokalisieren und anpassen und Ihnen qualitativ hochwertige Codierungen zur Verfügung stellen.