mcpField
D
dart-run-static-analysis

dart-run-static-analysis

github.com/dart-lang测试与质量53219.2k 次安装2 周前更新
代码仓库

关于 dart-run-static-analysis

面向 Dart 开发者的静态分析与自动修复指南,介绍分析配置、诊断抑制以及检查和修复代码的步骤。涵盖使用 MCP 工具或 Dart 命令行的工作流。

主要功能

  1. 01配置分析器与严格类型检查
  2. 02设置 lint 和格式化规则
  3. 03按文件或行抑制诊断
  4. 04运行静态分析并查看诊断
  5. 05预览并应用自动修复

适用场景

  1. 01为 Dart 包配置分析选项
  2. 02检查类型问题和代码风格
  3. 03排除生成文件的诊断
  4. 04修复分析器报告的问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dart-lang/skills --skill dart-run-static-analysis

安装后在 Claude Code 中输入/dart-run-static-analysis确认已加载。

详细介绍

分析和修复 Dart 代码

目录

分析配置

使用包根目录下的 analysis_options.yaml 文件配置 Dart 分析器。

  • 基础配置: 始终使用 include: 指令引入一套标准规则集(例如 package:lints/recommended.yaml 或 package:flutter_lints/flutter.yaml)。
  • 严格类型检查: 在 analyzer: language: 节点下启用严格类型检查,以防止隐式向下转型和动态类型推断。将 strict-casts: true、strict-inference: true 和 strict-raw-types: true 设为启用。
  • Linter 规则: 在 linter: rules: 节点下显式启用或禁用特定规则。覆盖已引入的规则时,使用键值映射(rule_name: true/false);定义一组全新的规则时,使用列表(- rule_name)。同一个 rules 块中不要混用列表和映射语法。
  • 格式化程序配置: 在 formatter: 节点下配置 dart format 的行为。设置 page_width(默认值为 80)和 trailing_commas(automate 或 preserve)。
  • 分析器插件: 在 analyzer: plugins: 节点下添加插件,以启用自定义诊断。确保在 pubspec.yaml 中将插件包添加为 dev_dependency。

抑制诊断

当诊断(lint 或警告)产生误报或适用于生成的代码时,应显式抑制该诊断。

  • 文件级排除: 在 analysis_options.yaml 中使用 analyzer: exclude: 节点,通过 glob 模式排除整个文件或目录(例如 **/*.g.dart)。
  • 文件级抑制: 在 Dart 文件顶部添加 // ignore_for_file: <diagnostic_code>,以抑制整个文件中的特定诊断。使用 // ignore_for_file: type=lint 可抑制所有 Linter 规则。
  • 行级抑制: 在有问题代码的正上方添加 // ignore: <diagnostic_code>,或将其附加在有问题的代码行末尾。
  • Pubspec 抑制: 在 pubspec.yaml 文件中有问题的行上方添加 # ignore: <diagnostic_code>(例如 # ignore: sort_pub_dependencies)。
  • 插件诊断: 抑制插件特有问题时,在诊断代码前加上插件名称(例如 // ignore: some_plugin/some_code)。

工作流:执行静态分析

使用此工作流识别与类型相关的错误、风格违规以及潜在的运行时错误。

任务进度:

  • 1. 确认项目根目录下存在 analysis_options.yaml。
  • 2. 使用 analyze_files MCP 工具(如果可用)或 CLI 命令 dart analyze <target_directory> 运行分析器。
  • 3. 检查诊断输出。
  • 4. 如果必须将 info 级问题视为失败,则添加 --fatal-infos 标志。
  • 5. 手动解决报告的问题,或继续执行自动修复工作流。

工作流:应用自动修复

使用此工作流解决过时的 API 用法、应用快速修复并迁移代码(例如 Dart 3 迁移)。

任务进度:

  • 1. 使用 dart_fix MCP 工具或 CLI 命令 dart fix --dry-run 执行试运行,以预览建议的更改。
  • 2. 检查建议的修复,确保其符合预期的架构。
  • 3. 如果需要其他修复,请确认 analysis_options.yaml 中已启用相应的 Linter 规则。
  • 4. 使用 dart_fix MCP 工具或 CLI 命令 dart fix --apply 应用修复。
  • 5. 使用 dart_format MCP 工具或 CLI 命令 dart format . 格式化修改后的代码。
  • 6. 运行静态分析工作流,确认所有诊断问题均已解决。

示例

完整的 analysis_options.yaml
include: package:flutter_lints/recommended.yaml

analyzer:
  exclude:
    - "**/*.g.dart"
    - "lib/generated/**"
  language:
    strict-casts: true
    strict-inference: true
    strict-raw-types: true
  errors:
    todo: ignore
    invalid_assignment: warning
    missing_return: error

linter:
  rules:
    avoid_shadowing_type_parameters: false
    await_only_futures: true
    use_super_parameters: true

formatter:
  page_width: 100
  trailing_commas: preserve
行内诊断抑制
// Suppress for the entire file
// ignore_for_file: unused_local_variable, dead_code

void processData() {
  // Suppress for a specific line
  // ignore: invalid_assignment
  int x = '';
  
  const y = 10; // ignore: constant_identifier_names
}

评论

支持 Markdown