Blog

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

Alan Richardson
Publicado el 26 de octubre de 2020

En esta entrada del blog, lo haremos:

  • Demostrar la búsqueda y el cotejo de anotaciones
  • Anotaciones de amén mediante plantillas de bigote

Sensei ofrece la posibilidad de comparar patrones de código problemáticos y luego modificarlos según las implementaciones acordadas. En este ejemplo, estoy utilizando @Disabled sin parámetro como patrón de código problemático.

Anotación de prueba desactivada

Desactivar las pruebas sin una razón específica puede resultar problemático a largo plazo porque olvidamos por qué las desactivamos.


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

El riesgo es que, con el tiempo, la base de código avanza, la prueba deshabilitada no se actualiza al ritmo del propósito del código y eventualmente se vuelve redundante e irrelevante, y potencialmente nunca se vuelve a habilitar.

Durante las revisiones de código, a menudo señalamos que es una buena idea añadir una descripción explicativa como parámetro de anotación.


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

Una receta de Sensei

Podemos escribir una receta para detectar cuando se añade @Disabled sin explicación y un Quick Fix que nos recuerde que debemos añadir la razón real que explique por qué lo hemos desactivado.

Cuando pienso en lo que voy a hacer, tengo que hacerlo:

  • coinciden con la anotación Disabled sin ningún parámetro
  • cambiar la anotación Disabled para tener un parámetro con el texto del marcador "TODO: añadir una descripción aquí"

Crear una receta de advertencia

Uso Alt+Enter para crear una nueva receta.

Crear una nueva función de receta

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

Configuración general

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

Hacer de la norma una advertencia

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

Editor de recetas

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 sólo coincida con la anotación de JUnit 5. Como el código fuente se muestra en la vista previa, puedo copiar y pegar esto fácilmente desde el código real para evitar cualquier error tipográfico.

A continuación, quiero hacer coincidir sólo las anotaciones sin Parámetros, y puedo utilizar la GUI para hacerlo.

Ajustes de la receta

es decir, la búsqueda:

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

Crear una acción de reescritura rápida

Para mi QuickFix utilizaré una acción de reescritura.

Utilizo la funcionalidad de Mostrar Variables para mostrarme las variables de Mustache y previsualizar el contenido.

Ajustes de QuickFix

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

Añadir código extra para crear el comentario del marcador de posición

es decir, QuickFix:

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

Cuando se construye un Quick Fix de reescritura, es más fácil cuando podemos 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 propósito general que puede aplicarse a cualquier elemento de código y es una buena opción por defecto para explorar.

Ver recurso
Ver recurso

Aprenda a utilizar Sensei para cotejar patrones de código problemáticos y, a continuación, modifíquelos con implementaciones acordadas con ejemplos de cotejo de anotaciones.

¿Quiere saber más?

Alan Richardson cuenta con más de veinte años de experiencia profesional en TI, trabajando como desarrollador y en todos los niveles de la jerarquía de pruebas, desde probador hasta jefe de pruebas. Jefe de Relaciones con los Desarrolladores en Secure Code Warrior, trabaja directamente con los equipos, para mejorar el desarrollo de un código seguro de calidad. Alan es autor de cuatro libros, entre ellos "Dear Evil Tester" y "Java For Testers". Alan también ha creado una formación en línea courses para ayudar a la gente a aprender las pruebas técnicas de la web y Selenium WebDriver con Java. Alan publica sus escritos y vídeos de formación en SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, y CompendiumDev.co.uk.

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.

Reservar una demostración
Compartir en:
Autor
Alan Richardson
Publicado el 26 de octubre de 2020

Alan Richardson cuenta con más de veinte años de experiencia profesional en TI, trabajando como desarrollador y en todos los niveles de la jerarquía de pruebas, desde probador hasta jefe de pruebas. Jefe de Relaciones con los Desarrolladores en Secure Code Warrior, trabaja directamente con los equipos, para mejorar el desarrollo de un código seguro de calidad. Alan es autor de cuatro libros, entre ellos "Dear Evil Tester" y "Java For Testers". Alan también ha creado una formación en línea courses para ayudar a la gente a aprender las pruebas técnicas de la web y Selenium WebDriver con Java. Alan publica sus escritos y vídeos de formación en SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, y CompendiumDev.co.uk.

Compartir en:

En esta entrada del blog, lo haremos:

  • Demostrar la búsqueda y el cotejo de anotaciones
  • Anotaciones de amén mediante plantillas de bigote

Sensei ofrece la posibilidad de comparar patrones de código problemáticos y luego modificarlos según las implementaciones acordadas. En este ejemplo, estoy utilizando @Disabled sin parámetro como patrón de código problemático.

Anotación de prueba desactivada

Desactivar las pruebas sin una razón específica puede resultar problemático a largo plazo porque olvidamos por qué las desactivamos.


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

El riesgo es que, con el tiempo, la base de código avanza, la prueba deshabilitada no se actualiza al ritmo del propósito del código y eventualmente se vuelve redundante e irrelevante, y potencialmente nunca se vuelve a habilitar.

Durante las revisiones de código, a menudo señalamos que es una buena idea añadir una descripción explicativa como parámetro de anotación.


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

Una receta de Sensei

Podemos escribir una receta para detectar cuando se añade @Disabled sin explicación y un Quick Fix que nos recuerde que debemos añadir la razón real que explique por qué lo hemos desactivado.

Cuando pienso en lo que voy a hacer, tengo que hacerlo:

  • coinciden con la anotación Disabled sin ningún parámetro
  • cambiar la anotación Disabled para tener un parámetro con el texto del marcador "TODO: añadir una descripción aquí"

Crear una receta de advertencia

Uso Alt+Enter para crear una nueva receta.

Crear una nueva función de receta

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

Configuración general

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

Hacer de la norma una advertencia

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

Editor de recetas

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 sólo coincida con la anotación de JUnit 5. Como el código fuente se muestra en la vista previa, puedo copiar y pegar esto fácilmente desde el código real para evitar cualquier error tipográfico.

A continuación, quiero hacer coincidir sólo las anotaciones sin Parámetros, y puedo utilizar la GUI para hacerlo.

Ajustes de la receta

es decir, la búsqueda:

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

Crear una acción de reescritura rápida

Para mi QuickFix utilizaré una acción de reescritura.

Utilizo la funcionalidad de Mostrar Variables para mostrarme las variables de Mustache y previsualizar el contenido.

Ajustes de QuickFix

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

Añadir código extra para crear el comentario del marcador de posición

es decir, QuickFix:

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

Cuando se construye un Quick Fix de reescritura, es más fácil cuando podemos 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 propósito general que puede aplicarse a cualquier elemento de código y es una buena opción por defecto para explorar.

Ver recurso
Ver recurso

Rellene el siguiente formulario para descargar el informe

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Enviar
Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.

En esta entrada del blog, lo haremos:

  • Demostrar la búsqueda y el cotejo de anotaciones
  • Anotaciones de amén mediante plantillas de bigote

Sensei ofrece la posibilidad de comparar patrones de código problemáticos y luego modificarlos según las implementaciones acordadas. En este ejemplo, estoy utilizando @Disabled sin parámetro como patrón de código problemático.

Anotación de prueba desactivada

Desactivar las pruebas sin una razón específica puede resultar problemático a largo plazo porque olvidamos por qué las desactivamos.


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

El riesgo es que, con el tiempo, la base de código avanza, la prueba deshabilitada no se actualiza al ritmo del propósito del código y eventualmente se vuelve redundante e irrelevante, y potencialmente nunca se vuelve a habilitar.

Durante las revisiones de código, a menudo señalamos que es una buena idea añadir una descripción explicativa como parámetro de anotación.


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

Una receta de Sensei

Podemos escribir una receta para detectar cuando se añade @Disabled sin explicación y un Quick Fix que nos recuerde que debemos añadir la razón real que explique por qué lo hemos desactivado.

Cuando pienso en lo que voy a hacer, tengo que hacerlo:

  • coinciden con la anotación Disabled sin ningún parámetro
  • cambiar la anotación Disabled para tener un parámetro con el texto del marcador "TODO: añadir una descripción aquí"

Crear una receta de advertencia

Uso Alt+Enter para crear una nueva receta.

Crear una nueva función de receta

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

Configuración general

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

Hacer de la norma una advertencia

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

Editor de recetas

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 sólo coincida con la anotación de JUnit 5. Como el código fuente se muestra en la vista previa, puedo copiar y pegar esto fácilmente desde el código real para evitar cualquier error tipográfico.

A continuación, quiero hacer coincidir sólo las anotaciones sin Parámetros, y puedo utilizar la GUI para hacerlo.

Ajustes de la receta

es decir, la búsqueda:

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

Crear una acción de reescritura rápida

Para mi QuickFix utilizaré una acción de reescritura.

Utilizo la funcionalidad de Mostrar Variables para mostrarme las variables de Mustache y previsualizar el contenido.

Ajustes de QuickFix

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

Añadir código extra para crear el comentario del marcador de posición

es decir, QuickFix:

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

Cuando se construye un Quick Fix de reescritura, es más fácil cuando podemos 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 propósito general que puede aplicarse a cualquier elemento de código y es una buena opción por defecto para explorar.

Acceso a recursos

Haga clic en el siguiente enlace y descargue el PDF de este recurso.

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.

Ver el informeReservar una demostración
Descargar PDF
Ver recurso
Compartir en:
¿Quiere saber más?

Compartir en:
Autor
Alan Richardson
Publicado el 26 de octubre de 2020

Alan Richardson cuenta con más de veinte años de experiencia profesional en TI, trabajando como desarrollador y en todos los niveles de la jerarquía de pruebas, desde probador hasta jefe de pruebas. Jefe de Relaciones con los Desarrolladores en Secure Code Warrior, trabaja directamente con los equipos, para mejorar el desarrollo de un código seguro de calidad. Alan es autor de cuatro libros, entre ellos "Dear Evil Tester" y "Java For Testers". Alan también ha creado una formación en línea courses para ayudar a la gente a aprender las pruebas técnicas de la web y Selenium WebDriver con Java. Alan publica sus escritos y vídeos de formación en SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, y CompendiumDev.co.uk.

Compartir en:

En esta entrada del blog, lo haremos:

  • Demostrar la búsqueda y el cotejo de anotaciones
  • Anotaciones de amén mediante plantillas de bigote

Sensei ofrece la posibilidad de comparar patrones de código problemáticos y luego modificarlos según las implementaciones acordadas. En este ejemplo, estoy utilizando @Disabled sin parámetro como patrón de código problemático.

Anotación de prueba desactivada

Desactivar las pruebas sin una razón específica puede resultar problemático a largo plazo porque olvidamos por qué las desactivamos.


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

El riesgo es que, con el tiempo, la base de código avanza, la prueba deshabilitada no se actualiza al ritmo del propósito del código y eventualmente se vuelve redundante e irrelevante, y potencialmente nunca se vuelve a habilitar.

Durante las revisiones de código, a menudo señalamos que es una buena idea añadir una descripción explicativa como parámetro de anotación.


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

Una receta de Sensei

Podemos escribir una receta para detectar cuando se añade @Disabled sin explicación y un Quick Fix que nos recuerde que debemos añadir la razón real que explique por qué lo hemos desactivado.

Cuando pienso en lo que voy a hacer, tengo que hacerlo:

  • coinciden con la anotación Disabled sin ningún parámetro
  • cambiar la anotación Disabled para tener un parámetro con el texto del marcador "TODO: añadir una descripción aquí"

Crear una receta de advertencia

Uso Alt+Enter para crear una nueva receta.

Crear una nueva función de receta

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

Configuración general

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

Hacer de la norma una advertencia

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

Editor de recetas

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 sólo coincida con la anotación de JUnit 5. Como el código fuente se muestra en la vista previa, puedo copiar y pegar esto fácilmente desde el código real para evitar cualquier error tipográfico.

A continuación, quiero hacer coincidir sólo las anotaciones sin Parámetros, y puedo utilizar la GUI para hacerlo.

Ajustes de la receta

es decir, la búsqueda:

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

Crear una acción de reescritura rápida

Para mi QuickFix utilizaré una acción de reescritura.

Utilizo la funcionalidad de Mostrar Variables para mostrarme las variables de Mustache y previsualizar el contenido.

Ajustes de QuickFix

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

Añadir código extra para crear el comentario del marcador de posición

es decir, QuickFix:

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

Cuando se construye un Quick Fix de reescritura, es más fácil cuando podemos 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 propósito general que puede aplicarse a cualquier elemento de código y es una buena opción por defecto para explorar.

Índice

Descargar PDF
Ver recurso
¿Quiere saber más?

Alan Richardson cuenta con más de veinte años de experiencia profesional en TI, trabajando como desarrollador y en todos los niveles de la jerarquía de pruebas, desde probador hasta jefe de pruebas. Jefe de Relaciones con los Desarrolladores en Secure Code Warrior, trabaja directamente con los equipos, para mejorar el desarrollo de un código seguro de calidad. Alan es autor de cuatro libros, entre ellos "Dear Evil Tester" y "Java For Testers". Alan también ha creado una formación en línea courses para ayudar a la gente a aprender las pruebas técnicas de la web y Selenium WebDriver con Java. Alan publica sus escritos y vídeos de formación en SeleniumSimplified.com, EvilTester.com, JavaForTesters.com, y CompendiumDev.co.uk.

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.

Reservar una demostraciónDescargar
Compartir en:
Centro de recursos

Recursos para empezar

Más entradas
Centro de recursos

Recursos para empezar

Más entradas