Analyzing and Fixing Dart Code
Contents
Analysis Configuration
Diagnostic Suppression
Workflow: Executing Static Analysis
Workflow: Applying Automated Fixes
Examples
Analysis Configuration
Configure the Dart analyzer using the
analysis_options.yaml
file located at the package root.
Base Configuration:
Always include a standard rule set (e.g.,
package:lints/recommended.yaml
or
package:flutter_lints/flutter.yaml
) using the
include:
directive.
Strict Type Checks:
Enable strict type checks under the
analyzer: language:
node to prevent implicit downcasts and dynamic inferences. Set
strict-casts: true
,
strict-inference: true
, and
strict-raw-types: true
.
Linter Rules:
Explicitly enable or disable specific rules under the
linter: rules:
node. Use a key-value map (
rule_name: true/false
) when overriding included rules, or a list (
- rule_name
) when defining a fresh set. Do not mix list and map syntax in the same
rules
block.
Formatter Configuration:
Configure
dart format
behavior under the
formatter:
node. Set
page_width
(default 80) and
trailing_commas
(
automate
or
preserve
).
Analyzer Plugins:
Enable custom diagnostics by adding plugins under the
analyzer: plugins:
node. Ensure the plugin package is added as a
dev_dependency
in
pubspec.yaml
.
Diagnostic Suppression
When a diagnostic (lint or warning) yields a false positive or applies to generated code, suppress it explicitly.
File-level Exclusion:
Use the
analyzer: exclude:
node in
analysis_options.yaml
to exclude entire files or directories (e.g.,
*/.g.dart
) using glob patterns.
File-level Suppression:
Add
// ignore_for_file:
ignore:
above the offending line in pubspec.yaml files (e.g.,
ignore: sort_pub_dependencies
).
Plugin Diagnostics:
Prefix the diagnostic code with the plugin name when suppressing plugin-specific issues (e.g.,
// ignore: some_plugin/some_code
).
Workflow: Executing Static Analysis
Use this workflow to identify type-related bugs, style violations, and potential runtime errors.
Task Progress:
1. Verify
analysis_options.yaml
exists at the project root.
2. Run the analyzer using the
analyze_files
MCP tool (if available) or the CLI command
dart analyze