Blog

Añadir parámetros a anotaciones mediante acciones de reescritura

October 26, 2020
Alan Richardson

En esta entrada del blog:

  • Demostraremos cómo buscar y encontrar anotaciones
  • Corregiremos anotaciones usando plantillas mustache

Sensei permite detectar patrones de código problemáticos y corregirlos para que cumplan con las implementaciones acordadas. En este ejemplo, utilizo @Disabled sin parámetros como el patrón de código problemático.

Anotación de prueba deshabilitada

Las pruebas deshabilitadas sin una razón específica pueden ser problemáticas a largo plazo, ya que solemos olvidar por qué las desactivamos.


@Disabled
   void thisTestMethodHasNoDisabledReason(){
    Assertions.fail("Esta prueba está deshabilitada y no debería ejecutarse");
    }

El riesgo es que, con el tiempo, la base de código evolucione, la prueba deshabilitada no se actualice conforme al propósito del código y termine siendo redundante, irrelevante y, potencialmente, nunca se vuelva a habilitar.

Durante las revisiones de código, solemos señalar que es buena práctica añadir una descripción explicativa como parámetro de la anotación.


@Disabled ("Deshabilitado para demostrar cómo añadir una razón")
    void thisTestMethodHasDisabledReason(){
   Assertions.fail("Esta prueba está deshabilitada y no debería ejecutarse");
   }

Una receta de Sensei

Podemos crear una receta para detectar cuándo se añade @Disabled sin explicación y una corrección rápida que nos recuerde incluir el motivo por el cual se deshabilitó.

Al planificar lo que voy a hacer, debo:

  • detectar la anotación Disabled sin parámetros
  • modificar la anotación Disabled para incluir un parámetro con el texto "TODO: añade una descripción aquí"

Crear una receta de advertencia

Uso Alt+Enter para crear una nueva receta.

Create A New Recipe Function

Luego, añado el texto descriptivo básico en la información general.

General Settings

Al configurar la regla como una advertencia, el código coincidente se resalta sin mostrarse como un error crítico.

Making The Rule A Warning

Buscar la anotación

En el editor de recetas, cambio la búsqueda para que coincida con una anotación.

Esto resaltará todas las anotaciones en la vista previa.

Recipe Editor

Una vez hecho esto, quiero filtrar por el tipo de anotación.

Podría usar simplemente Disabled, pero califico completamente la clase con el paquete para que solo coincida con la anotación de JUnit 5. Como el código fuente se muestra en la vista previa, puedo copiarlo y pegarlo fácilmente desde el código real para evitar errores tipográficos.

Luego quiero buscar solo las anotaciones sin parámetros, y puedo usar la interfaz gráfica para hacerlo.

Recipe Settings

es decir, Buscar:

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

Crear una acción de corrección rápida de reescritura

Para mi corrección rápida, usaré una acción de reescritura.

Utilizo la funcionalidad Mostrar variables para ver las variables Mustache y previsualizar el contenido.

QuickFix Settings

Y luego añado el código adicional necesario para crear el comentario de marcador de posición.

Add Extra code To Create The Place Marker Comment

es decir, Corrección rápida:

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

Sensei en acción

Hemos creado un breve vídeo que muestra el proceso de creación de recetas en acción.

Resumen

Al crear una corrección rápida de reescritura, es más fácil cuando podemos buscar el elemento de código que queremos reescribir, ya que entonces es la entidad "self" sobre la que podemos actuar.

En este ejemplo, utilicé una acción de reescritura para modificar la anotación. La reescritura es una acción de propósito general que puede aplicarse a cualquier elemento de código y es una buena opción predeterminada para explorar.

Eslogan

Controle el desarrollo impulsado por IA antes de su lanzamiento

Mida el riesgo asistido por IA, aplique políticas de codificación segura en el momento de la confirmación y acelere la entrega segura en todo su ciclo de vida de desarrollo de software (SDLC).

Reservar una demostración
Biblioteca de recursos

Explorar más blogs

Acceda a contenido especializado sobre programación segura, gobernanza de IA y gestión de riesgos de software.

ver todo
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Una cultura de seguridad: cómo Sage creó su programa de defensores

Descubre cómo Sage reforzó su seguridad con un enfoque flexible y centrado en las relaciones, logrando formar a más de 200 expertos en seguridad y alcanzar una reducción de riesgos cuantificable.

Más información
Icono de ventana de navegador con las letras KVK en negrita y dos líneas horizontales azules debajo sobre un fondo azul degradado.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Kamer van Koophandel: Seguridad a escala impulsada por los desarrolladores

La Cámara de Comercio (Kamer van Koophandel) comparte cómo integró la programación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de puntuación de confianza y una cultura de responsabilidad compartida en seguridad.

Más información
Logotipo de Insurance Australia Group con texto y un icono en azul y gris dentro del diseño de una ventana de navegador web.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cómo un «Juego de Códigos» guía a IAG Group hacia un futuro de programación más seguro

IAG Group es la entidad detrás de muchas de las principales compañías de seguros en la región de Asia-Pacífico, que suscribe pólizas para millones de clientes por un valor aproximado de 11.400 millones de dólares australianos en primas anuales.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Mes de la Concienciación sobre Ciberseguridad 2026: Comprender la seguridad de la IA es fundamental para la defensa empresarial

Hemos llegado a un punto en el que la mayoría de las principales empresas de IA han pedido públicamente una ralentización global en el desarrollo de la IA para que las medidas de seguridad puedan ponerse al día, pero la verdad es que ya se han materializado graves problemas de seguridad. Esto deja a innumerables líderes de seguridad y equipos ejecutivos en una situación urgente, a medida que los costes monetarios y de riesgo de la implementación de la IA siguen acumulándose.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Habilitador 8: Branding de su programa

Un programa de codificación segura necesita algo más que un buen contenido para tener éxito. El Habilitador 8 muestra cómo el branding transforma la participación en una experiencia codiciada basada en el estatus.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cada empleado está ahora en la primera línea de la ciberseguridad de la IA

El panorama tecnológico empresarial está cambiando a una velocidad que pocos previeron hasta que fue demasiado tarde. Hemos cruzado oficialmente el umbral del código escrito por humanos y la asistencia básica de copilotos hacia la era del Ciclo de Vida de Desarrollo Agéntico (ADLC). Si bien los agentes de IA autónomos prometen una eficiencia sin precedentes en múltiples funciones, también traen consigo una clase completamente nueva de riesgos regulatorios y de seguridad.

Más información

Proteja el desarrollo basado en IA antes de su lanzamiento

Identifique riesgos de desarrollo, aplique políticas y prevenga vulnerabilidades en todo el ciclo de vida de su software.

Reservar una demostración
No se encontraron elementos.