Dart Language Guide¶
linthis uses dart analyze for linting and dart format for formatting Dart code. Both tools are included with the Dart SDK.
Supported File Extensions¶
.dart
Required Tools¶
Dart SDK¶
Both linter and formatter are included with Dart SDK.
# macOS
brew install dart
# Linux (Ubuntu/Debian)
sudo apt install dart
# Windows
choco install dart-sdk
# Or install Flutter (includes Dart)
# https://flutter.dev/docs/get-started/install
# Verify installation
dart --version
Configuration¶
Basic Example¶
# .linthis/config.toml
[dart]
max_complexity = 15
excludes = [".dart_tool/**", "build/**", "*.g.dart"]
Disable Specific Rules¶
[dart.rules]
disable = [
"prefer_single_quotes",
"lines_longer_than_80_chars"
]
Custom Rules¶
[[rules.custom]]
code = "dart/no-print"
pattern = "\\bprint\\s*\\("
message = "Use logging instead of print()"
severity = "warning"
languages = ["dart"]
[[rules.custom]]
code = "dart/no-debug-print"
pattern = "debugPrint\\s*\\("
message = "Remove debugPrint before release"
severity = "warning"
languages = ["dart"]
CLI Usage¶
# Check Dart files only
linthis -c --lang dart
# Format Dart files only
linthis -f --lang dart
Analysis Options¶
Create analysis_options.yaml:
include: package:lints/recommended.yaml
# Or for Flutter:
# include: package:flutter_lints/flutter.yaml
analyzer:
exclude:
- "**/*.g.dart"
- "**/*.freezed.dart"
errors:
invalid_annotation_target: ignore
linter:
rules:
- prefer_const_constructors
- prefer_const_declarations
- prefer_final_fields
- avoid_print
- prefer_single_quotes
Common Issues¶
Dart not found¶
Warning: No dart linter available for dart files
Install: https://dart.dev/get-dart
Generated code being checked¶
Add generated files to excludes:
[dart]
excludes = [
"*.g.dart",
"*.freezed.dart",
"*.mocks.dart",
".dart_tool/**"
]
Flutter-specific lints¶
For Flutter projects, use package:flutter_lints:
# analysis_options.yaml
include: package:flutter_lints/flutter.yaml
Build outputs¶
Add build directories to excludes:
[dart]
excludes = ["build/**", ".dart_tool/**"]
Best Practices¶
- Use analysis_options.yaml: Standard Dart/Flutter configuration
- Exclude generated code: Add
*.g.dart,*.freezed.dartto excludes - Use recommended lints: Start with
package:lints/recommended.yaml - Null safety: Ensure all code is null-safe
- Flutter lints: Use
package:flutter_lintsfor Flutter projects