使用方法
- 复制安装命令,在自己的智能体环境安装前先检查源码包。
- 从原始文档核对所需工具、凭据和支持的宿主。
- 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/dhruvanbhalara/skills --skill dart-run-static-analysis开始前需了解
- 安装不包含模型订阅、API 额度或访问文件的权限。
- 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。
Contents
- Analysis Configuration
- Diagnostic Suppression Rules
- Workflow: Running Static Analysis
- Workflow: Applying Automated Code Fixes
- Examples
Analysis Configuration
Enforce strict formatting, stylistic cleanliness, and code sanity by configuring analysis_options.yaml in the root of your Dart package:
- Inheriting Lints: Inherit a baseline recommended rule set using the
includedirective. Preferpackage:lints/recommended.yamlfor pure Dart packages orpackage:flutter_lints/flutter.yamlfor Flutter applications. - Strict Type Checking: Explicitly declare strict static types under the
analyzer: language:configuration to eliminate unsafe dynamic types:
analyzer:
language:
strict-casts: true
strict-inference: true
strict-raw-types: true- Linter Rules Customization: Customize specific rules under
linter: rules:. Use a map key structure (rule_name: true/false) to explicitly activate or deactivate rules when overriding an inherited configuration. - Auto-Formatting Options: Declare formatter parameters under the
formatter:node (e.g. configuringpage_width: 80).
Diagnostic Suppression Rules
When an analyzer warning or style lint yields a false positive or hits generated files, suppress the warning explicitly using one of these strategies:
- Exclusion Filters: Exclude entire files or directory trees (such as JSON generated models or internationalization files) from analysis under the
analyzer: exclude:list using standard glob patterns:
analyzer:
exclude:
- "lib/generated/**"
- "**/*.g.dart"- File-Level Suppressions: Add
// ignore_for_file: diagnostic_nameon a dedicated line at the absolute top of the Dart file to disable specific rules across the entire file context. - Line-Level Suppressions: Add
// ignore: diagnostic_nameon the line directly preceding the target statement, or appended at the end of the matching line. - Pubspec Suppressions: Suppress package dependency warnings within the
pubspec.yamlby injecting comments (e.g.# ignore: sort_pub_dependencies).
Workflow: Running Static Analysis
Follow this checklist to perform static code auditing:
- [ ] Establish analysis config: Ensure
analysis_options.yamlexists at the project root. - [ ] Run analysis: Run the analyzer from the terminal:
dart analyze .- [ ] Escalate infos to fatal: In CI/CD pipelines, ensure informational lints fail the build by appending the fatal flag:
dart analyze . --fatal-infos- [ ] Triage diagnostics: Review warnings, correcting type hierarchies or unused variables, or applying suppressions where appropriate.
Workflow: Applying Automated Code Fixes
Follow this checklist to apply mechanical quick-fixes automatically:
- [ ] Verify lints: Confirm that the target linter rules are enabled in
analysis_options.yaml. - [ ] Dry run check: Run a dry run to inspect proposed mechanical modifications:
dart fix --dry-run- [ ] Apply fixes: Apply the quick-fixes directly across the workspace:
dart fix --apply- [ ] Format code: Format the modified code files:
dart format .- [ ] Re-run analysis: Confirm that
dart analyzereports clean results.
Examples
Comprehensive analysis_options.yaml Template
include: package:lints/recommended.yaml
analyzer:
exclude:
- "lib/generated/**"
- "**/*.g.dart"
- "**/*.freezed.dart"
language:
strict-casts: true
strict-inference: true
strict-raw-types: true
errors:
todo: ignore
missing_required_param: error
missing_return: error
linter:
rules:
always_declare_return_types: true
avoid_empty_else: true
prefer_const_constructors: true
sort_pub_dependencies: false
formatter:
page_width: 100
trailing_commas: preserveInline Suppression Techniques
// 1. Suppress all instances of unused variables inside this specific file
// ignore_for_file: unused_local_variable
void calculateMetrics() {
// 2. Suppress a single line using a preceding comment ignore
// ignore: invalid_assignment
int x = 'not_an_int';
final unusedString = 'value'; // File-level ignore handles this
// 3. Suppress at the end of the line
final double pi = 3.14; // ignore: constant_identifier_names
}


