研发协作
用 dart analyze 和 dart fix 做…
在 Dart/Flutter 开发中执行静态分析发现告警与错误,并自动修复机械性 lint 问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
用 dart analyze 和 dar通用
解决思路
- 在包根目录创建或维护 analysis_options.yaml 来配置分析器。
- 通过 include: 指令引入标准规则集,例如 package:lints/recommended.yaml 或 package:flutter_lints/flutter.yaml。
- 在 analyzer: language: 节点下启用严格类型检查,设置 strict-casts: true、strict-inference: true、strict-raw-types: true,以防止隐式向下转型和动态推断。
- 在 linter: rules: 节点下显式启用或禁用具体规则:覆盖已引入规则时用键值映射(rule_name: true/false),定义全新规则集时用列表(- rule_name),且不要在同一 rules 块中混用列表和映射语法。
- 在 formatter: 节点下配置 dart format 行为,设置 page_width(默认 80)和 trailing_commas(automate 或 preserve)。
- 在 analyzer: plugins: 节点下添加插件以启用自定义诊断,并确保该插件包已作为 dev_dependency 加入 pubspec.yaml。
- 当诊断(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.yaml 中于违规行上方添加 # ignore: <diagnostic_code>(如 # ignore: sort_pub_dependencies)。
- 抑制插件诊断时,在诊断代码前加上插件名(如 // ignore: some_plugin/some_code)。
- 执行静态分析:先确认项目根目录存在 analysis_options.yaml。
- 使用 analyze_files MCP 工具(若可用)或 CLI 命令 dart analyze <target_directory> 运行分析器。
- 查看诊断输出。
- 若需将 info 级问题视为失败,追加 --fatal-infos 标志。
- 手动修复报告的错误,或进入自动修复流程。
- 应用自动修复:使用 dart_fix MCP 工具或 CLI 命令 dart fix --dry-run 进行试运行以预览建议的更改。
- 审查建议的修复,确保其符合预期架构。
- 若需要更多修复,确认 analysis_options.yaml 中已启用对应的 linter 规则。
- 使用 dart_fix MCP 工具或 CLI 命令 dart fix --apply 应用修复。
- 使用 dart_format MCP 工具或 CLI 命令 dart format . 格式化被修改的代码。
- 再次运行静态分析流程,验证所有诊断均已解决。