Hinzufügen von Parametern zu Anmerkungen mithilfe von Rewrite-Aktionen

Veröffentlicht Okt 26, 2020
von Alan Richardson
FALLSTUDIE

Hinzufügen von Parametern zu Anmerkungen mithilfe von Rewrite-Aktionen

Veröffentlicht Okt 26, 2020
von Alan Richardson
Ressource anzeigen
Ressource anzeigen

In diesem Blogbeitrag werden wir:

  • Suchen und Abgleichen von Anmerkungen demonstrieren
  • Amen-Bemerkungen mit Schnurrbartvorlagen

Sensei bietet die Möglichkeit, problematische Codemuster abzugleichen und sie dann an vereinbarte Implementierungen anzupassen. In diesem Beispiel verwende ich @Disabled ohne einen Parameter als problematisches Codemuster.

Deaktivierte Testanmerkung

Deaktivierte Tests ohne angegebenen Grund können sich langfristig als problematisch erweisen, weil wir vergessen, warum wir sie deaktiviert haben.


@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 im Gleichschritt mit dem Zweck des Codes aktualisiert wird und schließlich redundant und irrelevant wird und möglicherweise nie wieder aktiviert wird.

Bei Code-Reviews werden wir oft darauf hinweisen, 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, das erkennt, wenn @Disabled ohne Erklärung hinzugefügt wird, und einen Quick Fix, der uns daran erinnert, den tatsächlichen Grund für die Deaktivierung hinzuzufügen.

Wenn ich darüber nachdenke, was ich tun werde, muss ich es tun:

  • entspricht der Disabled-Anmerkung ohne Parameter
  • die Anmerkung "Disabled" so ändern, dass sie einen Parameter mit dem Markierungstext "TODO: fügen Sie hier eine Beschreibung ein" hat

Ein Warnrezept erstellen

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

Eine neue Rezepturfunktion erstellen

Fügen Sie dann den grundlegenden beschreibenden Text in den allgemeinen Informationen hinzu.

Allgemeine Einstellungen

Wenn Sie die Regel zu einer Warnung machen, wird jeder übereinstimmende Code hervorgehoben, aber nicht als eklatanter Fehler angezeigt.

Aus der Regel eine Warnung machen

Finden Sie die Bemerkung

Im Rezepteditor ändere ich die Suche so, dass sie mit einer Bemerkung übereinstimmt.

Dadurch werden alle Anmerkungen in der Vorschau hervorgehoben.

Rezeptur-Editor

Danach möchte ich nach dem Typ der Anmerkung filtern.

Ich könnte einfach Disabled verwenden, aber ich qualifiziere die Klasse vollständig mit dem Paket, sodass sie nur mit der Annotation von JUnit 5 übereinstimmt. Da der Quellcode in der Vorschau angezeigt wird, kann ich diesen einfach kopieren und aus dem eigentlichen Code einfügen, um Tippfehler zu vermeiden.

Ich möchte dann nur Annotationen ohne Parameter abgleichen, und das kann ich mit der GUI machen.

Rezeptur-Einstellungen

d.h. Suche:

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

Erstellen einer Aktion "Schnellreparatur neu schreiben

Für meinen QuickFix werde ich eine Rewrite-Aktion verwenden.

Ich verwende die Funktion " Variablen anzeigen", um mir die Mustache-Variablen anzeigen zu lassen und eine Vorschau des Inhalts zu erhalten.

QuickFix-Einstellungen

Und dann füge ich den zusätzlichen Code hinzu, der benötigt wird, um den Platzmarkenkommentar zu erstellen.

Zusätzlichen Code hinzufügen, um den Ortsmarkierungskommentar zu erstellen

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 Rezepterstellung 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 wollen, weil es dann die eigene 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 eine gute Voreinstellung ist, um sie zu erkunden.

Ressource anzeigen
Ressource anzeigen

Autor

Alan Richardson

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Hinzufügen von Parametern zu Anmerkungen mithilfe von Rewrite-Aktionen

Veröffentlicht Okt 26, 2020
Von Alan Richardson

In diesem Blogbeitrag werden wir:

  • Suchen und Abgleichen von Anmerkungen demonstrieren
  • Amen-Bemerkungen mit Schnurrbartvorlagen

Sensei bietet die Möglichkeit, problematische Codemuster abzugleichen und sie dann an vereinbarte Implementierungen anzupassen. In diesem Beispiel verwende ich @Disabled ohne einen Parameter als problematisches Codemuster.

Deaktivierte Testanmerkung

Deaktivierte Tests ohne angegebenen Grund können sich langfristig als problematisch erweisen, weil wir vergessen, warum wir sie deaktiviert haben.


@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 im Gleichschritt mit dem Zweck des Codes aktualisiert wird und schließlich redundant und irrelevant wird und möglicherweise nie wieder aktiviert wird.

Bei Code-Reviews werden wir oft darauf hinweisen, 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, das erkennt, wenn @Disabled ohne Erklärung hinzugefügt wird, und einen Quick Fix, der uns daran erinnert, den tatsächlichen Grund für die Deaktivierung hinzuzufügen.

Wenn ich darüber nachdenke, was ich tun werde, muss ich es tun:

  • entspricht der Disabled-Anmerkung ohne Parameter
  • die Anmerkung "Disabled" so ändern, dass sie einen Parameter mit dem Markierungstext "TODO: fügen Sie hier eine Beschreibung ein" hat

Ein Warnrezept erstellen

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

Eine neue Rezepturfunktion erstellen

Fügen Sie dann den grundlegenden beschreibenden Text in den allgemeinen Informationen hinzu.

Allgemeine Einstellungen

Wenn Sie die Regel zu einer Warnung machen, wird jeder übereinstimmende Code hervorgehoben, aber nicht als eklatanter Fehler angezeigt.

Aus der Regel eine Warnung machen

Finden Sie die Bemerkung

Im Rezepteditor ändere ich die Suche so, dass sie mit einer Bemerkung übereinstimmt.

Dadurch werden alle Anmerkungen in der Vorschau hervorgehoben.

Rezeptur-Editor

Danach möchte ich nach dem Typ der Anmerkung filtern.

Ich könnte einfach Disabled verwenden, aber ich qualifiziere die Klasse vollständig mit dem Paket, sodass sie nur mit der Annotation von JUnit 5 übereinstimmt. Da der Quellcode in der Vorschau angezeigt wird, kann ich diesen einfach kopieren und aus dem eigentlichen Code einfügen, um Tippfehler zu vermeiden.

Ich möchte dann nur Annotationen ohne Parameter abgleichen, und das kann ich mit der GUI machen.

Rezeptur-Einstellungen

d.h. Suche:

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

Erstellen einer Aktion "Schnellreparatur neu schreiben

Für meinen QuickFix werde ich eine Rewrite-Aktion verwenden.

Ich verwende die Funktion " Variablen anzeigen", um mir die Mustache-Variablen anzeigen zu lassen und eine Vorschau des Inhalts zu erhalten.

QuickFix-Einstellungen

Und dann füge ich den zusätzlichen Code hinzu, der benötigt wird, um den Platzmarkenkommentar zu erstellen.

Zusätzlichen Code hinzufügen, um den Ortsmarkierungskommentar zu erstellen

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 Rezepterstellung 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 wollen, weil es dann die eigene 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 eine gute Voreinstellung ist, um sie zu erkunden.

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Senden
Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.