Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计通过

dart-static-analysis飞镖静态分析

Agent Skill

dart-static-analysis 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,728

周安装

72

GitHub Stars

63

下载量

576
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:dart-static-analysis(飞镖静态分析)
来源仓库:https://github.com/dart-lang/skills
仓库路径:skills/dart-static-analysis
安装命令:
npx skills add https://github.com/dart-lang/skills --skill dart-static-analysis
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

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

简介

dart-static-analysis 配置并运行 Dart 静态分析器,识别潜在类型错误与代码异味。

  • 适用于新项目初始化、lint 规则定制或团队协作中的代码风格强制执行场景。
  • 支持通过 analysis_options.yaml 设置 formatter 规则,并 suppress 特定警告。
  • 使用前请确认已安装 lints 包,并在 analyzer 节点启用 strict-inference 等严格模式。
  • 建议将分析结果集成至 IDE 插件,实现实时反馈而非仅依赖 CI 阶段检查。

SKILL.md

Analyzing and Linting Dart Code

Contents

Configuring Analysis Options

Control static analysis by placing an analysis_options.yaml file at the root of your package.

  • Enforce Strict Type Checks: Always enable strict-casts, strict-inference, and strict-raw-types in the analyzer section to catch implicit dynamic casts and un-inferred types at compile time.
  • Configure Formatting: Define dart format rules within the formatter section (e.g., page_width and trailing_commas).
  • Exclude Generated Code: Use the exclude key to ignore generated files (e.g., **/*.g.dart, **/*.freezed.dart) to prevent false positives.

Managing Linter Rules

Rely on community-standard rule sets rather than maintaining a bespoke list of rules.

  • Use Standard Packages: Include package:lints/recommended.yaml for pure Dart projects or package:flutter_lints/flutter.yaml for Flutter projects.
  • Avoid Manual Ignores: AVOID ignoring lints manually (e.g., // ignore:...) unless absolutely necessary. Prefer fixing the root cause of the lint.
  • Bulk Fixes: DO use dart fix --apply to automatically resolve common lint violations and migration issues across the entire codebase.
  • Customize Severity: If a specific rule is too noisy but still valuable, change its severity in the errors map (e.g., todo: info) rather than disabling it entirely.

Resolving Type Promotion Failures

Type promotion occurs when flow analysis confirms a nullable variable is not null. Promotion fails when the compiler cannot guarantee that a value remains stable between the check and the usage.

Common causes for promotion failures include:

  1. Public or Non-Final Fields: External libraries could override public fields, and non-final fields can be mutated.
  2. Getters: The compiler cannot guarantee a getter returns the same value on subsequent calls.
  3. Write Captures: A variable is modified inside a closure or function expression, invalidating previous checks.

The Solution: DO resolve "non-promotion" reasons by assigning the field, getter, or captured variable to a local final variable before performing the null or type check. Local variables are guaranteed to be stable, allowing the compiler to safely promote the type.

Workflow: Static Analysis Setup and Execution

Use this checklist to initialize and enforce static analysis in a Dart project.

  • Task Progress: Setup Analysis

- Run dart pub add --dev lints (or flutter_lints). - Create analysis_options.yaml at the project root. - Include the recommended rule set (include: package:lints/recommended.yaml). - Enable strict language modes (strict-casts, strict-inference, strict-raw-types).

  • Task Progress: Execution & Remediation

- Run dart analyze to catch potential bugs and style violations early. - Run dart fix --apply to automatically resolve mechanical lint issues. - Review remaining errors manually. Run validator -> review errors -> fix root causes without using // ignore.

Workflow: Fixing Type Promotion

When dart analyze reports that a property or field cannot be promoted:

  • Task Progress: Fix Promotion

- Identify the failing variable (e.g., a public field, getter, or write-captured variable). - Declare a local final variable immediately before the conditional check. - Assign the un-promotable field/getter to the new local variable. - Perform the != null or is Type check on the *local* variable. - Update all references inside the conditional block to use the local variable. - Run dart analyze to verify the promotion failure is resolved.

Examples

High-Fidelity analysis_options.yaml

include: package:lints/recommended.yaml

analyzer:
  exclude:
    - "**/*.g.dart"
    - "**/*.freezed.dart"
  language:
    strict-casts: true
    strict-inference: true
    strict-raw-types: true
  errors:
    todo: info
    invalid_assignment: error

formatter:
  page_width: 80
  trailing_commas: preserve

linter:
  rules:
    # Disable specific rules if they conflict with project architecture
    avoid_classes_with_only_static_members: false
    # Enable additional strict rules
    always_declare_return_types: true
    cancel_subscriptions: true

Fixing Type Promotion via Local Variables

Anti-Pattern: Checking a getter or public field directly. The compiler throws an error because _value is a getter and might return a different result on the second call.

abstract class Example {
  int? get _value => Random().nextBool() ? 123 : null;
}

void printParity(Example x) {
  if (x._value != null) {
    // ERROR: '_value' refers to a getter so it couldn't be promoted.
    print(x._value.isEven);
  }
}

Best Practice: Assign to a local final variable to ensure stability.

abstract class Example {
  int? get _value => Random().nextBool() ? 123 : null;
}

void printParity(Example x) {
  final localValue = x._value; // 1. Assign to local final variable

  if (localValue != null) {    // 2. Check the local variable
    print(localValue.isEven);  // 3. Use the promoted local variable (OK)
  }
}

*Related Skills: dart-effective-style, dart-api-design*

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.04%
按下载量换算196

Claude

27.92%
按下载量换算161

Cursor

19.22%
按下载量换算111

Gemini CLI

9.51%
按下载量换算55

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills