Saltar al contenido principal

Plugins del analyzer

Los plugins de analyzer te permiten crear lints, advertencias y soluciones rápidas (quick fixes) de IDE personalizados para tus proyectos de Dart

Los plugins de analyzer extienden el analyzer de Dart para reportar diagnósticos personalizados (lints y advertencias), ofrecer soluciones rápidas (quick fixes) y proporcionar asistencias (assists). Esta funcionalidad está disponible directamente en tu IDE y en la línea de comandos cuando ejecutas dart analyze o flutter analyze.

Usar plugins de analyzer

#

Puedes comenzar a usar un plugin de analyzer en tu proyecto de Dart habilitándolo en el archivo analysis_options.yaml en la raíz de tu paquete o espacio de trabajo.

Puedes buscar plugins de analyzer en pub.dev.

Habilitar un plugin

#

Para habilitar un plugin de analyzer, agrégalo a la sección plugins de nivel superior de tu archivo analysis_options.yaml. Puedes agregar un plugin de pub.dev usando una restricción de versión:

analysis_options.yaml
yaml
plugins:
  my_plugin: ^1.0.0

O bien, si estás desarrollando un plugin localmente, puedes usar una ruta local:

analysis_options.yaml
yaml
plugins:
  my_plugin:
    path: /path/to/my_plugin

Después de realizar cambios en la sección de plugins, reinicia el Dart Analysis Server para ver los efectos.

Configurar diagnósticos

#

Un plugin puede reportar dos tipos de diagnósticos: advertencias y lints. El analyzer los maneja de manera diferente por defecto:

  • Las advertencias que define un plugin están habilitadas por defecto (al igual que las advertencias estándar del analyzer).

  • Las reglas del linter que define un plugin están deshabilitadas por defecto y deben ser habilitadas explícitamente en tu archivo de opciones de análisis.

Puedes habilitar o deshabilitar reglas del linter específicas bajo la sección de diagnósticos para un plugin:

analysis_options.yaml
yaml
plugins:
  my_plugin:
    path: /path/to/my_plugin
    diagnostics:
      rule_1: true
      rule_2: true
      rule_3: false

En el ejemplo anterior, rule_1 y rule_2 están habilitadas. rule_3 está explícitamente deshabilitada, lo cual es útil para sobrescribir una regla que podría estar habilitada desde un archivo include:.

Suprimir diagnósticos

#

Puedes suprimir diagnósticos de un plugin usando los mismos comentarios ignore que usarías para los diagnósticos integrados de Dart. Para dirigir a un diagnóstico de un plugin específico, añade como prefijo al código de diagnóstico el nombre del plugin seguido de una barra diagonal (/).

Por ejemplo, para suprimir un diagnóstico con el código some_code de un plugin llamado some_plugin, usa uno de los siguientes formatos:

Para suprimir en una sola línea:

dart
// ignore: some_plugin/some_code

Para suprimir en un archivo completo:

dart
// ignore_for_file: some_plugin/some_code

Escribir un plugin de analyzer

#

Crea tu propio plugin de analyzer para agregar análisis estático personalizado, soluciones rápidas (quick fixes) o asistencias (assists)AssistUna edición de código automática y local orientada a realizar mejoras comunes en el código. Aprende más a la experiencia de desarrollo en Dart.

Configurar el paquete del plugin

#

Un plugin de analyzer es un paquete estándar de Dart con dependencias y estructura específicas. La dependencia principal es el paquete analysis_server_plugin, el cual proporciona la clase principal Plugin.

  1. Crea el archivo pubspec.yaml. Por ejemplo:

    yaml
    name: test_analyzer_plugin
    version: 0.0.1
    
    environment:
      sdk: ^3.10.0
    
    dependencies:
      analysis_server_plugin: ^0.3.0
      analyzer_plugin: ^0.13.0
      analyzer: ^8.0.0
    
  2. Crea el punto de entrada del plugin. Por ejemplo:

    lib/main.dart
    dart
    import 'package:analysis_server_plugin/plugin.dart';
    import 'package:analysis_server_plugin/registry.dart';
    
    final plugin = SimplePlugin();
    
    class SimplePlugin extends Plugin {
      @override
      String get name => 'Simple plugin';
    
      @override
      void register(PluginRegistry registry) {
        // Register diagnostics, quick fixes, and assists.
      }
    }
    

    El código anterior representa la estructura básica para el punto de entrada del plugin. Asegúrate de tener un archivo lib/main.dart en tu paquete porque este es el punto de entrada para que el servidor de análisis cargue tu plugin.

Puntos clave:

  • Necesitas una variable de nivel superior llamada plugin que instancie tu clase. El Dart Analysis Server busca esta variable.
  • Tu clase debe extender Plugin de package:analysis_server_plugin/plugin.dart.
  • Sobrescribe el método register para agregar las características de tu plugin. Este método sirve como el punto de entrada principal para registrar tus reglas de análisis personalizadas, soluciones rápidas y asistencias (assists) con el analyzer.

Implementar características del plugin

#

Una vez que tengas configurado tu paquete de plugin básico, puedes comenzar a agregar funcionalidad personalizada implementando el método register.

Lee las siguientes guías para aprender cómo implementar funcionalidad específica:

Consulta el Dart Analysis Server para ver muchos ejemplos de reglas, soluciones (fixes) y asistencias (assists):

Depurar un plugin

#

Si tu plugin no funciona como se espera, aquí tienes las formas recomendadas para depurarlo:

  • Tu primera parada deben ser las páginas de diagnóstico del analyzer. Si el isolate de tu plugin se bloquea (crashes), la pantalla de "plugins" muestra la información del bloqueo y el rastreo de la pila (stack trace).
  • Las sentencias print no funcionarán. Los plugins se ejecutan en un isolate separado y su salida estándar no está conectada a tu consola.
  • La forma más confiable de rastrear la ejecución de tu plugin e inspeccionar valores es escribir en un archivo de registro (log) desde el código de tu plugin.