Blog

Ajout de paramètres aux annotations via des actions de réécriture

October 26, 2020
Alan Richardson

Dans cet article de blog, nous allons :

  • Démontrer la recherche et la correspondance d'annotations
  • Modifier les annotations à l'aide de modèles mustache

Sensei permet d'identifier des modèles de code problématiques et de les corriger selon les implémentations convenues. Dans cet exemple, j'utilise @Disabled sans paramètre comme modèle de code problématique.

Annotation de test désactivé

Les tests désactivés sans raison précise peuvent s'avérer problématiques à long terme, car nous oublions pourquoi nous les avons désactivés.


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

Le risque est qu'avec le temps, la base de code évolue, que le test désactivé ne soit pas mis à jour en fonction de l'objectif du code, et qu'il devienne finalement redondant, non pertinent, voire jamais réactivé.

Lors des revues de code, nous soulignons souvent qu'il est judicieux d'ajouter une description explicative en tant que paramètre d'annotation.


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

Une recette Sensei

Nous pouvons rédiger une recette pour détecter quand @Disabled est ajouté sans explication, ainsi qu'une correction rapide qui nous rappelle d'ajouter la raison réelle pour laquelle nous l'avons désactivé.

Lorsque je réfléchis à ce que je vais faire, je dois :

  • faire correspondre l'annotation Disabled sans aucun paramètre
  • modifier l'annotation Disabled pour inclure un paramètre avec le texte marqueur « TODO: add a description here »

Créer une recette d'avertissement

J'utilise Alt+Entrée pour créer une nouvelle recette.

Create A New Recipe Function

Ensuite, j'ajoute le texte descriptif de base dans les informations générales.

General Settings

En définissant la règle comme un avertissement, tout code correspondant est mis en surbrillance sans pour autant apparaître comme une erreur flagrante.

Making The Rule A Warning

Trouver l'annotation

Dans l'éditeur de recettes, je modifie la recherche pour qu'elle corresponde à une annotation.

Cela mettra en surbrillance toutes les annotations dans l'aperçu.

Recipe Editor

Une fois cela fait, je souhaite filtrer par type d'annotation.

Je pourrais simplement utiliser Disabled, mais je qualifie entièrement la classe avec le package afin qu'elle ne corresponde qu'à l'annotation de JUnit 5. Comme le code source est affiché dans l'aperçu, je peux facilement le copier-coller depuis le code réel pour éviter toute erreur de frappe.

Je souhaite ensuite ne faire correspondre que les annotations sans paramètres, et je peux utiliser l'interface graphique pour cela.

Recipe Settings

c.-à-d. Recherche :

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

Créer une action de correction rapide Rewrite

Pour ma correction rapide, j'utiliserai une action de réécriture (rewrite).

J'utilise la fonctionnalité Afficher les variables pour voir les variables Mustache et prévisualiser le contenu.

QuickFix Settings

Ensuite, j'ajoute le code supplémentaire nécessaire pour créer le commentaire de marquage.

Add Extra code To Create The Place Marker Comment

c.-à-d. QuickFix :

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

Sensei en action

Nous avons créé une courte vidéo montrant le processus de création de recette en action.

Résumé

Lors de la création d'une correction rapide de réécriture, il est plus facile de rechercher l'élément de code que l'on souhaite réécrire, car il devient alors l'entité « self » sur laquelle nous pouvons agir.

Dans cet exemple, j'ai utilisé une action de réécriture pour modifier l'annotation. La réécriture est une action polyvalente applicable à tout élément de code et constitue une excellente option par défaut à explorer.

Slogan

Gouvernez le développement assisté par IA avant la mise en production

Évaluez les risques liés à l'IA, appliquez des politiques de codage sécurisé dès le commit et accélérez la livraison sécurisée tout au long de votre cycle de développement.

Réserver une démo
Bibliothèque de ressources

Explorer plus d'articles

Accédez à du contenu expert sur le codage sécurisé, la gouvernance de l'IA et la gestion des risques logiciels.

tout parcourir
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

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.

En savoir plus
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

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

En savoir plus
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Une culture de la sécurité : comment Sage a bâti son programme de champions

Découvrez comment Sage a renforcé sa sécurité grâce à une approche flexible axée sur les relations humaines, formant plus de 200 champions de la sécurité et obtenant une réduction mesurable des risques.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Mois de la sensibilisation à la cybersécurité 2026 : comprendre la sécurité de l'IA est essentiel à la défense de l'entreprise

Nous avons atteint un point où la plupart des grandes entreprises d'IA ont publiquement appelé à un ralentissement mondial du développement de l'IA afin de permettre aux garde-fous de sécurité de rattraper leur retard. Pourtant, la réalité est que de graves problèmes de sécurité se sont déjà concrétisés. Cela place d'innombrables responsables de la sécurité et équipes de direction dans une situation d'urgence, alors que les coûts financiers et les risques liés à la mise en œuvre de l'IA ne cessent de s'accumuler.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Levier 8 : Valoriser votre programme

Un programme de codage sécurisé a besoin de plus qu'un contenu de qualité pour réussir. Le levier 8 montre comment l'image de marque transforme la participation en une expérience convoitée, axée sur le statut.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Chaque employé est désormais en première ligne de la cybersécurité IA

Le paysage technologique des entreprises évolue à une vitesse que peu avaient anticipée avant qu'il ne soit trop tard. Nous avons officiellement franchi le cap du code écrit par l'humain et de l'assistance basique par copilote pour entrer dans l'ère du cycle de vie de développement agentique (ADLC). Si les agents IA autonomes promettent une efficacité sans précédent dans de multiples fonctions, ils apportent également une toute nouvelle catégorie de risques en matière de sécurité et de réglementation.

En savoir plus

Sécurisez le développement piloté par l'IA avant le déploiement

Identifiez les risques de développement, appliquez vos politiques et prévenez les vulnérabilités tout au long du cycle de vie de vos logiciels.

Réserver une démo
trust score
Aucun élément trouvé.