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

En esta entrada del blog, haremos lo siguiente:
- Demuestre la búsqueda y la coincidencia de anotaciones
- Anotaciones de amén con plantillas de bigote
Sensei brinda la capacidad de hacer coincidir patrones de código problemáticos y luego modificarlos para adaptarlos a las implementaciones acordadas. En este ejemplo, estoy usando @Disabled sin un parámetro como patrón de código problemático.
Anotación de prueba deshabilitada
Las pruebas deshabilitadas sin un motivo específico pueden resultar problemáticas a largo plazo porque olvidamos por qué las deshabilitamos.
@Disabled
void ThisTestMethodHasNoDisabledReason () {
Assertions.fail («Esta prueba está deshabilitada y no debe ejecutarse»);
}
El riesgo es que, con el tiempo, la base del código avance, la prueba deshabilitada no se actualice de acuerdo con el propósito del código y, finalmente, se vuelva redundante e irrelevante y, potencialmente, nunca se vuelva a habilitar.
Durante las revisiones del código, solemos señalar que es una buena idea añadir una descripción explicativa como parámetro de anotación.
@Disabled («Desactivado para demostrar la adición de un motivo»)
void ThisTestMethodHasDisabledReason () {
Assertions.fail («Esta prueba está deshabilitada y no debe ejecutarse»);
}
Una receta de Sensei
Podemos escribir una receta para detectar cuándo se añade @Disabled sin explicación y una solución rápida que nos recuerde que debemos añadir el motivo real que explica por qué lo hemos desactivado.
Cuando pienso en lo que voy a hacer, tengo que:
- coincide con la anotación deshabilitada sin ningún parámetro
- cambie la anotación deshabilitada para que tenga un parámetro con el texto de marcador «TODO: agregue una descripción aquí»
Crea una receta de advertencia
Utilizo Alt+Enter para crear una nueva receta.

A continuación, añada el texto descriptivo básico en la información general.

Al convertir la regla en una advertencia, cualquier código coincidente se resalta, pero no se muestra como un error evidente.

Encuentra 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.

Una vez hecho esto, quiero filtrar el tipo de anotación.
Podría usar 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 hacer coincidir solo las anotaciones sin parámetros, y puedo usar la GUI para hacerlo.

es decir, buscar:
buscar:
anotación:
tipo: «org.junit.jupiter.api.disabled»
sin:
parámetros:
- {}
Crear una acción de corrección rápida de reescritura
Para mi QuickFix usaré una acción de reescritura.
Yo uso el Mostrar variables funcionalidad para mostrarme las variables de Mustache y previsualizar el contenido.

Y luego agrego el código adicional necesario para crear el comentario del marcador de lugar.

es decir, QuickFix:
Correcciones disponibles:
- nombre: «Añadir un parámetro de comentario de todo»
acciones:
- reescribir:
to: «{{{.}}} (\" TODO: añade una descripción aquí\»)»
objetivo: «yo»
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 solución rápida de reescritura, es más fácil buscar el elemento de código que queremos reescribir, porque entonces es la entidad propia sobre la que podemos actuar.
En este ejemplo, he utilizado una acción de reescritura para modificar la anotación. La reescritura es una acción de uso general que se puede aplicar a cualquier elemento del código y es una buena opción predeterminada para explorar.
Govern AI-driven development before it ships
Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.
Explore more blogs
Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.
%252520%252520(3).avif)
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.

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

One Culture of Security: How Sage built their security champions program with agile secure code learning
Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Post-Quantum Cryptography: Quantum Computers Will Break Today’s Encryption – Are You Ready?
Post-quantum cryptography (PQC) is critical for protecting data from quantum computing threats. Learn how “harvest now, decrypt later” exposes risk and how developers can prepare for quantum-safe security.

Observe and Secure the ADLC: A Four-Point Framework for CISOs and Development Teams Using AI
While development teams look to make the most of GenAI’s undeniable benefits, we’d like to propose a four-point foundational framework that will allow security leaders to deploy AI coding tools and agents with a higher, more relevant standard of security best practices. It details exactly what enterprises can do to ensure safe, secure code development right now, and as agentic AI becomes an even bigger factor in the future.
Secure AI-driven development before it ships
See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.