跳转至

Dart 语言指南

linthis 使用 dart analyze 进行代码检查,使用 dart format 进行代码格式化。这两个工具都包含在 Dart SDK 中。

支持的文件扩展名

  • .dart

必需工具

Dart SDK

代码检查和格式化工具都包含在 Dart SDK 中。

# macOS
brew install dart

# Linux (Ubuntu/Debian)
sudo apt install dart

# Windows
choco install dart-sdk

# 或安装 Flutter(包含 Dart)
# https://flutter.dev/docs/get-started/install

# 验证安装
dart --version

配置

基本示例

# .linthis/config.toml

[dart]
max_complexity = 15
excludes = [".dart_tool/**", "build/**", "*.g.dart"]

禁用特定规则

[dart.rules]
disable = [
    "prefer_single_quotes",
    "lines_longer_than_80_chars"
]

自定义规则

[[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 用法

# 仅检查 Dart 文件
linthis -c --lang dart

# 仅格式化 Dart 文件
linthis -f --lang dart

分析选项

创建 analysis_options.yaml

include: package:lints/recommended.yaml
# 或对于 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

常见问题

Dart 未找到

Warning: No dart linter available for dart files
  Install: https://dart.dev/get-dart

生成的代码被检查

将生成的文件添加到排除项:

[dart]
excludes = [
    "*.g.dart",
    "*.freezed.dart",
    "*.mocks.dart",
    ".dart_tool/**"
]

Flutter 特定检查

对于 Flutter 项目,使用 package:flutter_lints

# analysis_options.yaml
include: package:flutter_lints/flutter.yaml

构建输出

将构建目录添加到排除项:

[dart]
excludes = ["build/**", ".dart_tool/**"]

最佳实践

  1. 使用 analysis_options.yaml:标准 Dart/Flutter 配置
  2. 排除生成的代码:将 *.g.dart*.freezed.dart 添加到排除项
  3. 使用推荐的检查:从 package:lints/recommended.yaml 开始
  4. 空安全:确保所有代码都是空安全的
  5. Flutter 检查:Flutter 项目使用 package:flutter_lints