[译]Flutter Favorite 之 Dart 静态分析工具 dart_code_metrics

1,276 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情


dart_code_metrics | Dart Package (flutter-io.cn)

译时版本:4.19.1

image.png


Dart Code Metrics

注:可以在 网站上找到所有的文档

配置 | 规则 | 指标 | 反模式

Dart Code Metrics 是一个静态分析工具,它可以帮助分析和改进代码质量。

链接

  • 查看 CHANGELOG.md 上的 主要/破坏性更新, 和 发布 的详细版本历史。
  • 想要贡献的话,可先阅读 CONTRIBUTING.md 。
  • 如果发现有什么缺失或者文档中不清晰的地方,请开一个 issue

安装

$ dart pub add --dev dart_code_metrics

# 或用于 Flutter 包
$ flutter pub add --dev dart_code_metrics

或者

手动添加到 pubspec.yaml

dev_dependencies:
  dart_code_metrics: ^4.19.1

然后运行

$ dart pub get

# 或用于 Flutter 包
$ flutter pub get

基本配置

添加配置到 analysis_options.yaml

dart_code_metrics:
  anti-patterns:
    - long-method
    - long-parameter-list
  metrics:
    cyclomatic-complexity: 20
    maximum-nesting-level: 5
    number-of-parameters: 4
    source-lines-of-code: 50
  metrics-exclude:
    - test/**
  rules:
    - newline-before-return
    - no-boolean-literal-compare
    - no-empty-block
    - prefer-trailing-comma
    - prefer-conditional-expressions
    - no-equal-then-else

重新加载 IDE 使 analyzer 能发现插件配置。
在网站上阅读更多配置的相关内容。

用法

Analyzer 插件

Dart Code Metrics 可作为用于 Dart analyzer  的插件提供额外的规则。 所有规则上的问题或者反模式会在 IDE 中高亮显示。

image.png

has auto-fix 徽章标记出来的规则可通过 IDE 的上下文菜单自动修复。VS Code 示例:

quick-fix.gif

CLI

该包可作为 CLI 使用,并支持多重命令:

命令使用示例简短描述
analyzedart run dart_code_metrics:metrics analyze lib报告代码指标、规则和反模式违反。
check-unnecessary-nullabledart run dart_code_metrics:metrics check-unnecessary-nullable lib检查函数、方法、构造函数中非必要的可空参数。
check-unused-filesdart run dart_code_metrics:metrics check-unused-files lib检查未使用的 *.dart 文件。
check-unused-l10ndart run dart_code_metrics:metrics check-unused-l10n lib检查 *.dart 文件中未使用的 localization 。
check-unused-codedart run dart_code_metrics:metrics check-unused-code lib检查 *.dart 文件中未使用的代码。

对于这些命令,需要更多帮助的话,可运行相应命令的帮助 dart run dart_code_metrics:metrics help <command>

注:  如果你为多个包的仓库配置了 Dart Code Metrics ,可查看网站的该部分.

Analyze

报告代码指标、规则和反模式违反。
要执行命令,运行

$ dart run dart_code_metrics:metrics analyze lib

# 或用于 Flutter 包
$ flutter pub run dart_code_metrics:metrics analyze lib

它会以下面的一种格式生成结果:

  • 控制台
  • GitHub
  • Codeclimate
  • HTML
  • JSON

控制台报告示例:

image.png

检查非必要的可空参数

检查函数、方法、构造函数中的非必要的可空参数。
要执行该命令,运行

$ dart run dart_code_metrics:metrics check-unnecessary-nullable lib

# 或用于 Flutter 包
$ flutter pub run dart_code_metrics:metrics check-unnecessary-nullable lib

它会以下面的一种格式生成结果:

  • 控制台
  • JSON

控制台报告示例:

image.png

检查未使用的文件

检查未使用的 *.dart 文件。
要执行该命令,运行

$ dart run dart_code_metrics:metrics check-unused-files lib

# 或用于 Flutter 包
$ flutter pub run dart_code_metrics:metrics check-unused-files lib

它会以下面的一种格式生成结果:

  • 控制台
  • JSON

控制台报告示例:

image.png

检查未使用的 localization

检查未使用的 Dart 类成员,囊括应用的国际化值。

此类 Dart 类的示例:

class ClassWithLocalization {
  String get title {
    return Intl.message(
      'Hello World',
      name: 'title',
      desc: 'Title for the Demo application',
      locale: localeName,
    );
  }
}

要执行该命令,运行

$ dart run dart_code_metrics:metrics check-unused-l10n lib

#  或用于 Flutter 包
$ flutter pub run dart_code_metrics:metrics check-unused-l10n lib

它会以下面的一种格式生成结果:

  • 控制台
  • JSON

控制台报告示例:

image.png

检查未使用的代码

检查 *.dart 文件中未使用的代码。
要执行该命令,运行

$ dart run dart_code_metrics:metrics check-unused-code lib

# or for a Flutter package
$ flutter pub run dart_code_metrics:metrics check-unused-code lib

它会以下面的一种格式生成结果:

  • 控制台
  • JSON

控制台报告示例:

image.png

问题解决

如果插件未能如期运行,请阅读 指南

贡献

如果对贡献有兴趣,可查看 贡献的指导方针。欢迎反馈和贡献!

文章

英语

俄语 (不会翻译)

如何联系我们

可随时询问有关该工具的任何问题。 加入我们的社区Telegram 上的频道。 我们同时对应英语和俄语。

许可证

MIT