Blog

Parameter zu Annotationen hinzufügen mittels Rewrite-Aktionen

October 26, 2020
Alan Richardson

In diesem Blogbeitrag werden wir:

  • Das Suchen und Abgleichen von Annotationen demonstrieren
  • Annotationen mithilfe von Mustache-Templates anpassen

Sensei bietet die Möglichkeit, problematische Codemuster zu finden und sie durch vereinbarte Implementierungen zu ersetzen. In diesem Beispiel verwende ich @Disabled ohne Parameter als problematisches Codemuster.

Deaktivierte Test-Annotation

Deaktivierte Tests ohne Angabe eines Grundes können langfristig problematisch sein, da wir vergessen, warum sie deaktiviert wurden.


@Disabled
   void thisTestMethodHasNoDisabledReason(){
    Assertions.fail("This test is disabled and should not run");
    }

Das Risiko besteht darin, dass sich die Codebasis im Laufe der Zeit weiterentwickelt, der deaktivierte Test nicht an den Zweck des Codes angepasst wird, schließlich redundant und irrelevant wird und möglicherweise nie wieder aktiviert wird.

Bei Code-Reviews weisen wir oft darauf hin, dass es sinnvoll ist, eine erklärende Beschreibung als Annotationsparameter hinzuzufügen.


@Disabled ("Disabled to demonstrate adding a reason")
    void thisTestMethodHasDisabledReason(){
   Assertions.fail("This test is disabled and should not run");
   }

Ein Sensei-Rezept

Wir können ein Rezept schreiben, um zu erkennen, wenn @Disabled ohne Erklärung hinzugefügt wird, sowie einen Quick Fix, der uns daran erinnert, den tatsächlichen Grund für die Deaktivierung anzugeben.

Wenn ich überlege, was zu tun ist, muss ich:

  • die Disabled-Annotation ohne Parameter finden
  • die Disabled-Annotation so ändern, dass sie einen Parameter mit dem Platzhaltertext „TODO: add a description here“ enthält

Ein Warnungs-Rezept erstellen

Ich verwende Alt+Enter, um ein neues Rezept zu erstellen.

Create A New Recipe Function

Anschließend füge ich den grundlegenden Beschreibungstext in den allgemeinen Informationen hinzu.

General Settings

Indem die Regel als Warnung definiert wird, wird der entsprechende Code hervorgehoben, aber nicht als schwerwiegender Fehler angezeigt.

Making The Rule A Warning

Annotation finden

Im Rezept-Editor ändere ich die Suche so, dass sie mit einer Annotation übereinstimmt.

Dadurch werden alle Annotationen in der Vorschau hervorgehoben.

Recipe Editor

Danach möchte ich nach dem Annotationstyp filtern.

Ich könnte einfach „Disabled“ verwenden, aber ich gebe die Klasse vollständig mit dem Paket an, damit nur die Annotation von JUnit 5 gefunden wird. Da der Quellcode in der Vorschau angezeigt wird, kann ich ihn einfach aus dem tatsächlichen Code kopieren und einfügen, um Tippfehler zu vermeiden.

Ich möchte dann nur Annotationen ohne Parameter finden, was ich über die Benutzeroberfläche erledigen kann.

Recipe Settings

d. h. Suche:

search:
  annotation:
    type: "org.junit.jupiter.api.Disabled"
    without:
       parameters:
          - {}

Eine Rewrite-Quick-Fix-Aktion erstellen

Für meinen QuickFix verwende ich eine Rewrite-Aktion.

Ich nutze die Variablen anzeigen-Funktion, um mir die Mustache-Variablen anzeigen zu lassen und den Inhalt in der Vorschau zu sehen.

QuickFix Settings

Anschließend füge ich den zusätzlichen Code hinzu, der für den Platzhalter-Kommentar erforderlich ist.

Add Extra code To Create The Place Marker Comment

d. h. QuickFix:

availableFixes:
 - name: "Add a todo comment parameter"
   actions:
   - rewrite:
      to: "{{{ . }}}(\"TODO: add a description here\")"
      target: "self"

Sensei in Aktion

Wir haben ein kurzes Video erstellt, das den Prozess der Rezept-Erstellung in Aktion zeigt.

Zusammenfassung

Beim Erstellen eines Rewrite-Quick-Fix ist es einfacher, wenn wir nach dem Code-Element suchen können, das wir umschreiben möchten, da es dann die „self“-Entität ist, auf die wir einwirken können.

In diesem Beispiel habe ich eine Rewrite-Aktion verwendet, um die Annotation zu ändern. Rewrite ist eine universelle Aktion, die auf jedes Code-Element angewendet werden kann und ein guter Ausgangspunkt für eigene Experimente ist.

Slogan

Kontrollieren Sie KI-gestützte Entwicklung, bevor sie in Produktion geht

Bewerten Sie KI-gestützte Risiken, setzen Sie Richtlinien für sicheren Code direkt beim Commit durch und beschleunigen Sie die sichere Bereitstellung über Ihren gesamten SDLC hinweg.

Demo buchen
Ressourcenbibliothek

Weitere Blogs entdecken

Erhalten Sie Zugang zu Experteninhalten über sichere Programmierung, KI-Governance und Software-Risikomanagement.

alle anzeigen
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Mehr erfahren
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Mehr erfahren
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Eine Sicherheitskultur: Wie Sage sein Champions-Programm aufgebaut hat

Erfahren Sie, wie Sage die Sicherheit durch einen flexiblen, beziehungsorientierten Ansatz gestärkt, über 200 Security Champions ausgebildet und eine messbare Risikoreduzierung erzielt hat.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Cybersecurity Awareness Month 2026: Das Verständnis von KI-Sicherheit ist entscheidend für die Unternehmensverteidigung

Wir haben einen Punkt erreicht, an dem die meisten führenden KI-Unternehmen öffentlich eine weltweite Verlangsamung der KI-Entwicklung gefordert haben, damit die Sicherheitsvorkehrungen Schritt halten können. Doch die Wahrheit ist: Ernsthafte Sicherheitsprobleme sind bereits Realität geworden. Dies bringt unzählige Sicherheitsverantwortliche und Führungsteams in eine dringliche Lage, da die finanziellen Kosten und Risiken durch die Implementierung von KI stetig steigen.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Enabler 8: Branding für Ihr Programm

Ein Programm für sicheres Programmieren braucht mehr als nur großartige Inhalte, um erfolgreich zu sein. Enabler 8 zeigt, wie Branding die Teilnahme zu einem begehrten, statusorientierten Erlebnis macht.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Jeder Mitarbeiter steht jetzt an vorderster Front der KI-Cybersicherheit

Die Unternehmenslandschaft wandelt sich mit einer Geschwindigkeit, die kaum jemand vorhergesehen hat, bis es zu spät war. Wir haben offiziell die Schwelle von handgeschriebenem Code und einfacher Copilot-Unterstützung hin zur Ära des Agentic Development Lifecycle (ADLC) überschritten. Während autonome KI-Agenten eine beispiellose Effizienz in vielen Bereichen versprechen, bringen sie auch eine völlig neue Klasse von Sicherheits- und Regulierungsrisiken mit sich.

Mehr erfahren

Sichere KI-gestützte Entwicklung vor dem Release

Erkennen Sie Entwicklerrisiken, setzen Sie Richtlinien durch und verhindern Sie Schwachstellen über den gesamten Softwareentwicklungszyklus hinweg.

Demo buchen
Keine Elemente gefunden.