Correcciones rápidas para problemas de análisis
Resolver diagnósticos con un solo clic
Si eres como yo, pasas demasiado tiempo de desarrollo corrigiendo problemas (diagnósticos) que encuentra el analyzer. Si alguna vez has deseado que pudiera ser más fácil, entonces tengo buenas noticias para ti. Muchos de los diagnósticos que produce el analyzer se pueden corregir automáticamente usando correcciones rápidas.
Una corrección rápida es una edición automatizada orientada a corregir el problema reportado por un diagnóstico específico. En el artículo Mensajes de diagnóstico de Dart vimos el siguiente código:
El mensaje de corrección sugiere dos formas de resolver el problema: “Intenta hacer el acceso condicional (usando ‘?.’) o añadir una verificación de null al objetivo (‘!’).”
Si haces clic en la región resaltada (el área con el subrayado rojo ondulado), verás un icono de bombilla cerca del borde izquierdo del editor. Si pasas el cursor por encima, puedes hacer clic para abrir un menú que contiene las correcciones rápidas disponibles.
Ambas correcciones sugeridas están disponibles en el menú. Al seleccionar una se aplica el cambio a tu código. Por ejemplo, si seleccionas la primera corrección, se actualiza el código de la siguiente manera:
Primero echemos un vistazo rápido a cómo aplicar una corrección tanto en IntelliJ IDEA como en Visual Studio Code, y luego veamos un ejemplo más potente de lo que pueden hacer las correcciones rápidas.
IntelliJ IDEA
#El menú de acciones de contexto en el editor se ve así:
Puedes acceder a la misma lista seleccionando “Show Context Actions” en el menú contextual del editor o usando su equivalente de teclado (Alt+Enter en Windows y Linux, o Option+Enter en macOS).
También puedes invocar estas correcciones directamente desde el texto flotante cuando pasas el cursor sobre la región resaltada. Si hay demasiadas correcciones, hay un elemento More Actions que también abre el menú:
Si eso no es suficiente, también puedes invocar las correcciones disponibles desde el menú contextual en la vista de Dart Analysis:
Visual Studio Code
#El menú de acciones de código en el editor se ve así:
Los dos primeros elementos son correcciones rápidas, los demás son refactorizaciones. Puedes acceder a la misma lista usando su equivalente de teclado (Control+. en Windows y Linux, o Command+. en MacOS), o seleccionando Quick Fix … desde el texto flotante en el editor:
También puedes invocarlas desde el menú contextual en el panel de Problems:
Otro ejemplo
#Aunque la corrección anterior te ahorra el tiempo y el esfuerzo de buscar el mensaje de corrección y luego hacer la edición a mano, añadir un solo carácter no es exactamente un gran ahorro de tiempo. Sin embargo, algunas correcciones proporcionan un mayor aumento de productividad. Considera el siguiente código:
El diagnóstico te dice que “la expresión await solo se puede usar en una función async.” Asumiendo que no quieres usar E/O síncrona, la corrección es marcar el cuerpo de la función con la palabra clave
async. Hacer eso provoca otro error que te indica que el tipo de retorno del método debe ser
Future, así que también tendrás que actualizar el tipo de retorno.
Afortunadamente, hay una corrección rápida para el problema original:
Al seleccionar esta corrección no solo se añade el modificador, sino que también se actualiza el tipo de retorno, permitiéndote corregir el problema en un solo paso:
Resumen
#No todos los problemas se pueden corregir automáticamente, y no hay una corrección rápida para cada problema que podría tenerla. Sin embargo, definitivamente vale la pena comprobar si hay una corrección rápida disponible la próxima vez que tengas un diagnóstico que corregir. Y si no ves una corrección para un diagnóstico que debería tenerla, por favor avísanos creando un issue en dart-lang/sdk.
Más de Dart
Dart en Google Summer of Code 2026
¡Estamos emocionados de anunciar que el proyecto Dart será mentor de contribuidores por séptima vez en Google Summer of Code 2026!
Resultados de Google Summer of Code 2025
El programa Google Summer of Code (GSoC) se enfoca en involucrar a nuevos desarrolladores de todo el mundo con el desarrollo de software de código abierto. Google…