用途:该技能治理 Flutter/Dart 项目的 analysis_options.yaml 及其生效机制,适用于编辑该文件、新增或屏蔽 lint、升级 SDK 或规则集时。目标是把风格交给工具链强制:dart format 决定空白,analyzer 决定正确性,并把一类“不报错却静默出错”的缺陷提升为构建失败。
主要能力:以版本化 include 引入 very_good_analysis(示例为 include: package:very_good_analysis/analysis_options.10.3.0.yaml),该基座已开启 strict-casts、strict-inference、strict-raw-types,不再在 language: 块中重复声明。通过 analyzer.errors 把 unawaited_futures、discarded_futures、empty_catches、use_build_context_synchronously、close_sinks、avoid_dynamic_calls、exhaustive_cases、avoid_print 等提升为 error。
关键机制:errors: 只是重新定级,被提升的规则必须已由基座启用;要开启基座未提供的规则,需先在 linter: rules: 下添加,且不能混用列表与映射写法。CI 运行 dart format --set-exit-if-changed . 与 dart analyze --fatal-infos --fatal-warnings,并且必须真正构建,因为 sealed 穷尽性是编译错误而非 lint。生成代码需 exclude,且同一组 glob 要同步到覆盖率过滤。抑制只能按行并附理由,禁止对提升规则使用 ignore_for_file。
用法:将示例配置复制到包根目录,PR 前运行 scripts/verify-include-pin.sh 与 scripts/lint-gates.sh;升级 SDK/规则集时同一提交内更新 include 文件名并确认其存在。
限制:不添加 custom_lint,riverpod_lint 3.x 走一方插件系统。资料未提供更完整的规则目录、复杂度限制表与部分脚本实现细节。