Hinzufügen von Parametern zu Anmerkungen mithilfe von Rewrite-Aktionen
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.

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

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

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.

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.

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.

Und dann füge ich den zusätzlichen Code hinzu, der benötigt wird, um den Platzmarkenkommentar 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.

Lernen Sie, wie Sie mit Sensei problematische Codemuster abgleichen und dann anhand von Beispielen für den Abgleich von Annotationen an vereinbarte Implementierungen anpassen.
Alan Richardson verfügt über mehr als zwanzig Jahre Berufserfahrung in der IT-Branche. Er arbeitete als Entwickler und auf jeder Ebene der Testhierarchie, vom Tester bis hin zum Head of Testing. Als Head of Developer Relations bei Secure Code Warrior arbeitet er direkt mit Teams zusammen, um die Entwicklung von hochwertigem, sicherem Code zu verbessern. Alan ist der Autor von vier Büchern, darunter "Dear Evil Tester" und "Java For Testers". Alan hat auch Online-Schulungen courses erstellt, um Menschen beim Erlernen von technischen Web-Tests und Selenium WebDriver mit Java zu helfen. Alan veröffentlicht seine Schriften und Schulungsvideos auf SeleniumSimplified.com, EvilTester.com, JavaForTesters.com und CompendiumDev.co.uk.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenAlan Richardson verfügt über mehr als zwanzig Jahre Berufserfahrung in der IT-Branche. Er arbeitete als Entwickler und auf jeder Ebene der Testhierarchie, vom Tester bis hin zum Head of Testing. Als Head of Developer Relations bei Secure Code Warrior arbeitet er direkt mit Teams zusammen, um die Entwicklung von hochwertigem, sicherem Code zu verbessern. Alan ist der Autor von vier Büchern, darunter "Dear Evil Tester" und "Java For Testers". Alan hat auch Online-Schulungen courses erstellt, um Menschen beim Erlernen von technischen Web-Tests und Selenium WebDriver mit Java zu helfen. Alan veröffentlicht seine Schriften und Schulungsvideos auf SeleniumSimplified.com, EvilTester.com, JavaForTesters.com und CompendiumDev.co.uk.

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.

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

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

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.

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.

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.

Und dann füge ich den zusätzlichen Code hinzu, der benötigt wird, um den Platzmarkenkommentar 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.
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.

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

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

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.

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.

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.

Und dann füge ich den zusätzlichen Code hinzu, der benötigt wird, um den Platzmarkenkommentar 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.

Klicken Sie auf den unten stehenden Link und laden Sie die PDF-Datei dieser Ressource herunter.
Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Bericht ansehenDemo buchenAlan Richardson verfügt über mehr als zwanzig Jahre Berufserfahrung in der IT-Branche. Er arbeitete als Entwickler und auf jeder Ebene der Testhierarchie, vom Tester bis hin zum Head of Testing. Als Head of Developer Relations bei Secure Code Warrior arbeitet er direkt mit Teams zusammen, um die Entwicklung von hochwertigem, sicherem Code zu verbessern. Alan ist der Autor von vier Büchern, darunter "Dear Evil Tester" und "Java For Testers". Alan hat auch Online-Schulungen courses erstellt, um Menschen beim Erlernen von technischen Web-Tests und Selenium WebDriver mit Java zu helfen. Alan veröffentlicht seine Schriften und Schulungsvideos auf SeleniumSimplified.com, EvilTester.com, JavaForTesters.com und CompendiumDev.co.uk.
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.

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

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

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.

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.

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.

Und dann füge ich den zusätzlichen Code hinzu, der benötigt wird, um den Platzmarkenkommentar 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.
Inhaltsübersicht
Alan Richardson verfügt über mehr als zwanzig Jahre Berufserfahrung in der IT-Branche. Er arbeitete als Entwickler und auf jeder Ebene der Testhierarchie, vom Tester bis hin zum Head of Testing. Als Head of Developer Relations bei Secure Code Warrior arbeitet er direkt mit Teams zusammen, um die Entwicklung von hochwertigem, sicherem Code zu verbessern. Alan ist der Autor von vier Büchern, darunter "Dear Evil Tester" und "Java For Testers". Alan hat auch Online-Schulungen courses erstellt, um Menschen beim Erlernen von technischen Web-Tests und Selenium WebDriver mit Java zu helfen. Alan veröffentlicht seine Schriften und Schulungsvideos auf SeleniumSimplified.com, EvilTester.com, JavaForTesters.com und CompendiumDev.co.uk.

Secure Code Warrior ist für Ihr Unternehmen da, um Sie dabei zu unterstützen, Ihren Code über den gesamten Lebenszyklus der Softwareentwicklung hinweg zu sichern und eine Kultur zu schaffen, in der Cybersicherheit an erster Stelle steht. Ganz gleich, ob Sie AppSec-Manager, Entwickler, CISO oder ein anderer Sicherheitsverantwortlicher sind, wir können Ihrem Unternehmen helfen, die mit unsicherem Code verbundenen Risiken zu reduzieren.
Demo buchenHerunterladenRessourcen für den Einstieg
Bedrohungsmodellierung mit KI: So wird jeder Entwickler zum Bedrohungsmodellierer
Sie werden besser gerüstet sein, um Entwicklern dabei zu helfen, Ideen und Techniken zur Bedrohungsmodellierung mit den KI-Tools zu kombinieren, die sie bereits verwenden, um die Sicherheit zu erhöhen, die Zusammenarbeit zu verbessern und von Anfang an widerstandsfähigere Software zu entwickeln.
Die Macht der Marke in AppSec DevSec DevSecOps (Was steckt in einem Akronym!?)
Für eine dauerhafte Wirkung von AppSec-Programmen braucht es mehr als nur Technik - es braucht eine starke Marke. Eine starke Identität stellt sicher, dass Ihre Initiativen auf Resonanz stoßen und ein nachhaltiges Engagement innerhalb Ihrer Entwicklergemeinschaft fördern.
Ressourcen für den Einstieg
Lösung der Sichtbarkeitskrise: Wie der Vertrauensagent die Kluft zwischen Lernen und Code überbrückt
Trust Agent von Secure Code Warrior löst die Krise der sicheren Kodierung, indem es die Fähigkeiten der Entwickler bei jeder Übertragung überprüft. Er erkennt alle Mitwirkenden und automatisiert die Governance in Ihrem Entwicklungs-Workflow.
Kritisches Denken in der KI-gestützten sicheren Softwareentwicklung
Bei der KI-Debatte geht es nicht um den Nutzen, sondern um die Anwendung. Entdecken Sie, wie Sie die Notwendigkeit von KI-Produktivitätssteigerungen mit robuster Sicherheit in Einklang bringen können, indem Sie sich auf Entwickler verlassen, die ihren Code genau verstehen.
KI-Codierassistenten: Maximale Produktivität bringt erhöhte Risiken mit sich
In unserem neuesten Whitepaper untersuchen unsere Mitbegründer Pieter Danhieux und Dr. Matias Madou, Ph.D., das zweischneidige Schwert, das KI-Codierassistenten darstellen, und wie sie eine willkommene Ergänzung und gleichzeitig ein erhebliches Sicherheitsrisiko sein können.



.png)

.png)



