Flutter架构规范检查插件architecture_linter的使用

Flutter架构规范检查插件 architecture_linter 的使用

architecture_linter 是一个帮助你保持项目结构有序的Flutter插件。它允许你定义多种规则,这些规则会作为有用的lint提示显示在你喜欢的IDE中。

安装

使用命令行安装

$ dart pub add --dev architecture_linter

# 或者对于Flutter项目
$ flutter pub add --dev architecture_linter

手动添加到 pubspec.yaml

dev_dependencies:
  architecture_linter: ^0.3.0

然后运行:

$ dart pub get

# 或者对于Flutter项目
$ flutter pub get

添加插件到分析器

为了使分析器能够使用该插件,请在 analysis_options.yaml 文件中添加以下内容:

analyzer:
  plugins:
    - architecture_linter

基本配置

analysis_options.yaml 文件中添加配置。你可以从预定义的配置开始:

architecture_linter:
  excludes:
    - "**.g.dart"

  lint_severity: warning

  layers:
    - &infrastructureLayer
      name: "Infrastructure"
      path: "(infrastructure)"
    - &domainLayer
      name: "Domain"
      path: "(domain)"
    - &presentationLayer
      name: "Presentation"
      path: "(presentation)"
    - &useCaseLayer
      name: "Domain/UseCases"
      path: "(domain/use_cases)"
    - &utils
      name: "Utils"
      path: "(utils)"
    - &repository
      name: "repository"
      path: "(repository)"

  layers_config:
    - layer: *repository
      severity: error

  banned_imports:
    - layer: *domainLayer
      banned:
        - *presentationLayer
        - *useCaseLayer
        - *infrastructureLayer
    - layer: *presentationLayer
      banned:
        - *infrastructureLayer
    - layer: *infrastructureLayer
      banned:
        - *useCaseLayer
        - *presentationLayer
    - layer: *useCaseLayer
      banned:
        - *presentationLayer
        - *infrastructureLayer

配置Lint严重性

要更改整个插件的Lint严重性级别,请在 analysis_options.yaml 文件中的 architecture_linter 下添加 lint_severity 条目,并选择以下三个值之一:

  • info
  • warning
  • error

例如:

lint_severity: error

你也可以为已经定义的禁用层下的更低级别的层配置严重性。

例如:

lint_severity: warning

layers:
  - &domainLayer
    name: "Domain"
    path: "(domain)"
  - &presentationLayer
    name: "Presentation"
    path: "(presentation)"
  - &repository
    name: "repository"
    path: "(repository)"
  - &useCaseLayer
    name: "Domain/UseCases"
    path: "(domain/use_cases)"

layers_config:
  - layer: *repository
    severity: error
  - layer: *infrastructureLayer
    severity: error

banned_imports:
  - layer: *presentationLayer
    banned:
      - *domainLayer
  - layer: *useCaseLayer
    banned:
      - *domainLayer
  - layer: *infrastructureLayer
    severity: info
    banned:
      - *domainLayer

CLI

该插件还支持CLI命令。运行如下命令:

$ dart run architecture_linter:analyzer analyze lib 

# 或者对于Flutter项目
$ flutter pub run architecture_linter:analyzer analyze lib

你还可以配置严重性级别,当分析器检测到特定级别的不一致性时退出并返回 exit code 2。例如:

# 默认为warning
$ dart run architecture_linter:analyzer analyze lib --set-exit-on-severity-level=info

这样,当检测到 info 或更高严重性的不一致性(如 error, warning)时,分析器将返回 code 2

示例Demo

下面是一个简单的示例项目结构,展示了如何应用 architecture_linter 插件:

project/
├── lib/
│   ├── domain/
│   │   └── user.dart
│   ├── infrastructure/
│   │   └── api_service.dart
│   ├── presentation/
│   │   └── home_screen.dart
│   └── utils/
│       └── helper_functions.dart
├── analysis_options.yaml
└── pubspec.yaml

在这个例子中,我们希望确保 domain 层不能导入 presentation 层或 infrastructure 层的内容。这可以通过 architecture_linter 插件的配置来实现。

analysis_options.yaml 中添加相应的配置:

architecture_linter:
  lint_severity: warning
  layers:
    - &domainLayer
      name: "Domain"
      path: "(domain)"
    - &presentationLayer
      name: "Presentation"
      path: "(presentation)"
    - &infrastructureLayer
      name: "Infrastructure"
      path: "(infrastructure)"
  banned_imports:
    - layer: *domainLayer
      banned:
        - *presentationLayer
        - *infrastructureLayer

更多关于Flutter架构规范检查插件architecture_linter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter架构规范检查插件architecture_linter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用architecture_linter插件来检查架构规范的一个示例。architecture_linter 是一个帮助开发者确保他们的Flutter项目遵循特定架构规范的工具。它通常用于确保代码遵循诸如Clean Architecture、MVVM等架构模式。

步骤 1: 添加依赖

首先,在你的Flutter项目的pubspec.yaml文件中添加architecture_linter依赖:

dev_dependencies:
  flutter_test:
    sdk: flutter
  architecture_linter: ^最新版本号 # 替换为当前最新版本号

步骤 2: 安装依赖

在项目的根目录下运行以下命令来安装依赖:

flutter pub get

步骤 3: 配置架构规范

你需要创建一个配置文件来定义你希望architecture_linter检查哪些架构规范。通常,这个文件命名为.arch-lint.yaml,并放在项目的根目录下。

以下是一个简单的配置文件示例:

linters:
  layer_order:
    enabled: true
    layers:
      - presentation
      - domain
      - data

rules:
  no_presentation_in_domain:
    enabled: true
    source_dir: domain
    excluded_imports:
      - ^package:flutter/
      - ^package:material_design_icons/

  no_domain_in_presentation:
    enabled: true
    source_dir: lib/ui
    excluded_imports:
      - ^package:your_domain_package/

在这个配置文件中,我们定义了两个规则:

  1. layer_order:确保代码文件按照指定的层次结构排列。
  2. no_presentation_in_domainno_domain_in_presentation:确保domain层不包含presentation层的代码,反之亦然。

步骤 4: 运行架构检查

配置完成后,你可以在命令行中运行以下命令来检查架构规范:

flutter pub run architecture_linter:lint .

示例代码结构

假设你的项目结构如下:

your_flutter_project/
├── lib/
│   ├── domain/
│   │   └── some_domain_file.dart
│   ├── data/
│   │   └── some_data_file.dart
│   └── ui/
│       └── some_presentation_file.dart
├── .arch-lint.yaml
├── pubspec.yaml
└── ...

在这个结构中,domain层包含业务逻辑,data层处理数据访问,ui层包含界面逻辑。通过.arch-lint.yaml配置文件,你可以确保这些层之间的依赖关系正确无误。

注意事项

  • 确保你安装了最新版本的architecture_linter
  • 根据你的项目需求,自定义.arch-lint.yaml配置文件中的规则。
  • architecture_linter主要用于静态代码分析,它不会运行你的代码,只是检查代码的结构和依赖关系。

通过以上步骤,你可以在Flutter项目中有效地使用architecture_linter插件来检查架构规范。

回到顶部