Eigene Code Inspektor Prüfung erstellen
Wer den Code Inspektor nutzen möchte hat häufig bereits eine sehr detaillierte Vorstellung davon, was genau dieser prüfen soll. Da die Prüfungen allerdings wie bei einem Customizing lediglich an oder ausgeschaltet werden können ist die Ernüchterung häufig vorprogrammiert. Wer sich jetzt denkt: "So eine Prüfung muss ich doch auch selber Programmieren können", der findet in diesem Blogbeitrag ein kleines Howto, anhand eines Beispiels um eine eigene Code Inspektor Prüfung zu erstellen. Wer noch keine Vorstellung davon hat was der Code Inspektor macht und wem die Transaktion SCI nichts sagt, der sollte sich zunächst unseren Artikel SAP Code Inspector – Eine Einführung ansehen.
Fünf Schritte reichen um eine eigene Code Inspektor Prüfung zu erstellen
Mein Beispiel prüft, ob oben im Kopf des Programms in den ersten X Kommentarzeilen der Author und das Ticket vermerkt sind.
Schritt 1: SAP Klasse: CL_CI_TEST_SCAN_TEMPLATE kopieren
Die meisten SAP Klassen zum Thema Code Inspektor beginnen mit dem Kürzel CL_CI an (Class – Code Inspector).
Schritt 2: Konstruktor ausprogrammieren
Dazu müssen Sie zwei kleinere Schritte erledigen:
Angabe von einer Beschreibung, Kategorie und Version sind Pflicht
Über die Kategorie können Sie sich auch in bereits bestehende Prüfungen einklinken. Ich habe meine Prüfung als Unterpunkt der Kategorie Robuste Programmierung eingebaut. Als Name sollten Sie den Namen ihrer in Schritt 1 kopierten Klasse verwenden.
Angaben von allen Nachrichten die Ausgegeben werden können
Im Coding ist es nachher komfortabel möglich auf alle Nachrichten die hier bekannt gemacht werden zuzugreifen. Dafür muss hier allerdings bereits festgelegt werden, welcher Typ und welche Nachricht die Message nachher ausgeben soll, wenn diese Nachricht geworfen wird. um eine Eigene Code Inspektor Prüfung erstellen zu können muss mindestens im Konstruktor die Nachricht bekannt gemacht werden. Das ist ausreichend, solange die GET_MESSAGES Methode nicht redefiniert wird. Wer speziellere Nachrichten absetzen möchte, sollte sich dieses Thema nochmal im Detail anschauen.
Denken Sie bitte daran den Namen ihrer neuen Klasse in der privaten Klassenkonstante C_MY_NAME zu hinterlegen.
Schritt 3: Die Prüfung aktivieren
An dieser Stelle gehen wir in die Transaktion SCI gehen um manuell unter Springen -> Verwaltung von -> Tests als aktive Prüfvariante unsere neu angelegte Variante zu aktivieren.
Die eigene Klasse heraussuchen, links die Checkbox ankreuzen, speichern und fertig. Hier sollte auch der im Konstruktor angegebene eigene Name der eigenen Code Inspektor Prüfung stehen, so wie die Kategorie. Nach der Aktivierung können Sie die Prüfung bereits in ihrem System finden.
Natürlich macht diese noch nichts, denn bisher haben wir keine Logik dazu programmiert.
Schritt 4: Run Methode ausprogrammieren
Diese Logik wird ausgeführt, sobald die Prüfung startet. Insbesondere im Umgang mit ABAP Statements gibt es bereits viele vorgefertigte Methoden.
- Ref_scan->tables enthält alle Zeilen gruppiert nach dem Typ. Da ich nur Kommentarzeilen benötige ist das in meinem Fall nützlich.
- Ref_scan->tokens ist der gesamte Quellcode des zu prüfenden Programmes
Dies ist ihr Moment zu scheinen und sich kreativ auszutoben. Dennoch stelle ich ich gerne mein Beispiel zur Verfügung.
Oben findet sich die Prüfung ob REF_SCAN Initial ist. Diese ist Pflicht in jeder Run Methode, sonst kann es sein, dass die Methode vor der Instanziierung des auszuführenden Objekts aufgerufen wird. Die Inform Methode wirft für uns die Nachrichten, die wir zuvor im Konstruktor bekannt gemacht haben.
An dieser Stelle möglicherweise ebenfalls für Sie interessant: Clean Abap Guidelines
Schritt 5: Der Test
Funktioniert das wirklich oder habe ich Sie 4 Schritte lang an der Nase herumgeführt? Ich gebe zu, die zweite Variante wäre ziemlich verlockend, dennoch ist ersteres korrekt.
Fazit: Eigene Code Inspektor Prüfung erstellen ist kein Ding der Unmöglichkeit und eine gute Option im Kampf um einheitliches Design.
Verwenden Sie bereits eigene Code Inspektor Prüfungen?
Wenn ja, für welche Fälle benötigen Sie diese?