Linting and Formatting
Linting and Formatting
About
- Code Quality Tools enforce consistent style and catch potential errors.
dart format
: Opinionated code formatterdart analyze
: Static analysis with linter rules- Configurable via
analysis_options.yaml
- Integrates with all major IDEs
Main Topics
-
dart format
-
Definition: Automatic code formatting tool.
-
Example:
// Before formatting: void main(){print('Hello');} // After `dart format`: void main() { print('Hello'); }
-
-
dart analyze
- Definition: Static code analysis.
- Example:
// Detects issues like: var x = null; // Prefer explicit types
-
Customizing Rules
- Definition: Modifying analysis options.
- Example:
# analysis_options.yaml linter: rules: - prefer_const_constructors - avoid_print
-
IDE Integration
- Definition: Real-time feedback in editors.
- Example:
// VSCode shows squiggles for: unusedVariable = 5; // 'unusedVariable' is unused
-
CI Pipeline Integration
- Definition: Automated quality checks.
- Example:
# GitHub Action - name: Dart Analysis run: dart analyze
How to Use
- Formatting: Run
dart format .
in project root - Analysis: Check IDE problems view or run
dart analyze
- Customization: Edit
analysis_options.yaml
- Suppression: Use
// ignore: rule_name
comments
How It Works
- AST Parsing: Analyzes abstract syntax tree
- Rule Engine: Applies configured lint rules
- Formatters: Token-based whitespace manipulation
- IDE Plugins: Use Language Server Protocol
Example Setup:
# analysis_options.yaml
analyzer:
strong-mode:
implicit-casts: false
linter:
rules:
- always_declare_return_types
- avoid_empty_else
Conclusion
Dart’s linting and formatting tools establish consistent code quality standards across projects. dart format enforces readable style while dart analyze catches potential errors, together maintaining clean, maintainable codebases that follow best practices.