Flutter代码质量检查插件mix_lint的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter代码质量检查插件mix_lint的使用

Mix Lint 是一个强大的工具,可以帮助你在 Flutter 应用中通过 Mix 强制执行编码标准和最佳实践。

开始使用

在你的 Flutter 项目的根目录下运行以下命令:

flutter pub add -d mix_lint custom_lint

然后编辑你的 analysis_options.yaml 文件并添加以下代码:

analyzer:
  plugins:
    - custom_lint

接着运行以下命令:

flutter clean
flutter pub get
dart run custom_lint

自定义规则

某些规则具有自己的配置选项。你可以在 analysis_options.yaml 文件中自定义这些规则。例如,你可以自定义 mix_max_number_of_attributes_per_style 规则:

custom_lint:
  rules:
    - mix_max_number_of_attributes_per_style:
      max_number: 11

规则

mix_attributes_ordering

确保在 Style 构造函数中按同一类别的属性分组进行排序。这使得代码更易于阅读和理解样式。

不要这样做

Style (
    $box.color.red(),
    $text.color.blue(),
    $box.height(200),
    $text.style.fontSize(10),
)

要这样做

Style (
    $box.color.red(),
    $box.height(200),
    $text.color.blue(),
    $text.style.fontSize(10),
)

mix_avoid_defining_tokens_or_variants_within_style

确保不在 Style 构造函数中直接创建 VariantMixToken 实例。相反,在 Style 构造函数外部实例化 VariantMixToken

VariantMixToken 应在整个应用程序中共享。如果它们是在 Style 中创建的,这意味着它们仅限于该 Style,并且将更难重用。

不要这样做

Style(
    const Variant('example')(
        $text.textAlign.center(),
        $box.height(200),
        $box.width(200),
    ),
)
Style(
    $box.color.ref(ColorToken('primary')),
)

要这样做

final example = Variant('example');

Style(
    example(
        $text.textAlign.center(),
        $box.height(200),
        $box.width(200),
    ),
)
final primary = ColorToken('primary');

Style(
    $box.color.ref(primary),
)

mix_avoid_defining_tokens_within_theme_data

确保不在 MixThemeData 构造函数中直接创建 Tokens 实例。

当你在 MixThemeData 中创建 token 时,你实际上是在创建一个局部作用域,可能在应用程序的其他地方不容易访问。这可能导致不必要的 token 重复创建或更糟糕的是,重复努力来重用它们。

不要这样做

MixThemeData(
    colors: {
        const ColorToken('a'): Colors.black12,
    }
)

要这样做

final primary = ColorToken('a');

MixThemeData(
    colors: {
        primary: Colors.black12,
    }
)

mix_avoid_empty_variants

避免直接在 Style 中创建空的 Variants。空的 Variants 实际上是没有用的,并且会使代码更难以阅读和理解。

不要这样做

final a = Variant('a');

final wrong_case = Style(
  a(),
);

要这样做

final correct_case = Style(
  a(
    $box.color.amber(),
  ),
);

mix_avoid_variant_inside_context_variant

ContextVariant 和标准的 VariantStyle 生命周期的不同阶段应用。因此,我们强烈建议不要在 ContextVariant 的作用域内创建 Variant。相反,可以使用 &| 操作符组合 Variants。

不要这样做

final variantTest = Variant('test');

Style (
    $box.color.red(),
    $on.hover(
        $box.color.green(),
        variantTest(
            $box.color.blue(),
        )
    ),
)

要这样做

final variantTest = Variant('test');

Style (
    $box.color.red(),
    $on.hover(
        $box.color.green(),
    ),
    ($on.hover & variantTest)(
        $box.color.blue(),
    ),
)

mix_max_number_of_attributes_per_style

限制每个 Style 的属性数量。默认值为 10。此规则旨在鼓励开发者保持其样式简洁,专注于几个关键方面。

不要这样做

final style = Style (
    $attribute1(),
    $attribute2(),
    $attribute3(),
    $attribute4(),
    $attribute5(),
    $attribute6(),
    $attribute7(),
    $attribute8(),
    $attribute9(),
    $attribute10(),
    $attribute11(),
);

要这样做

final auxStyle = Style(
    $attribute1(),
    $attribute2(),
    $attribute3(),
    $attribute4(),
    $attribute5(),
);

final mainStyle = Style(
    auxStyle(),
    $attribute6(),
    $attribute7(),
    $attribute8(),
    $attribute9(),
    $attribute10(),
    $attribute11(),
);

更多关于Flutter代码质量检查插件mix_lint的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter代码质量检查插件mix_lint的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


mix_lint 是一个用于 Flutter 项目的代码质量检查工具,它集成了多个静态代码分析工具(如 dart analyze, flutter analyze, dart format, flutter format 等),帮助开发者确保代码风格一致性和代码质量。

1. 安装 mix_lint

首先,你需要在 pubspec.yaml 文件中添加 mix_lint 作为开发依赖:

dev_dependencies:
  mix_lint: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 配置 mix_lint

在项目根目录下创建一个 analysis_options.yaml 文件,用于配置代码分析规则。你可以使用 mix_lint 提供的默认配置,或者自定义规则。

include: package:mix_lint/analysis_options.yaml

analyzer:
  exclude:
    - "**/*.g.dart"
    - "**/*.freezed.dart"
    - "**/*.mocks.dart"

linter:
  rules:
    - avoid_empty_else
    - avoid_print
    - avoid_returning_null
    - avoid_unused_constructor_parameters
    - avoid_void_async
    - cancel_subscriptions
    - close_sinks
    - control_flow_in_finally
    - directives_ordering
    - empty_catches
    - empty_constructor_bodies
    - empty_statements
    - hash_and_equals
    - implementation_imports
    - invariant_booleans
    - iterable_contains_unrelated_type
    - list_remove_unrelated_type
    - literal_only_boolean_expressions
    - no_adjacent_strings_in_list
    - no_duplicate_case_values
    - no_logic_in_create_state
    - no_runtimeType_toString
    - prefer_asserts_in_initializer_lists
    - prefer_const_constructors
    - prefer_const_declarations
    - prefer_contains
    - prefer_equal_for_default_values
    - prefer_final_fields
    - prefer_final_locals
    - prefer_initializing_formals
    - prefer_interpolation_to_compose_strings
    - prefer_is_empty
    - prefer_is_not_empty
    - prefer_iterable_whereType
    - prefer_typing_uninitialized_variables
    - prefer_void_to_null
    - test_types_in_equals
    - throw_in_finally
    - type_init_formals
    - unnecessary_brace_in_string_interps
    - unnecessary_const
    - unnecessary_getters_setters
    - unnecessary_lambdas
    - unnecessary_new
    - unnecessary_null_aware_assignments
    - unnecessary_null_in_if_null_operators
    - unnecessary_overrides
    - unnecessary_parenthesis
    - unnecessary_statements
    - unnecessary_this
    - unrelated_type_equality_checks
    - use_full_hex_values_for_flutter_colors
    - use_function_type_syntax_for_parameters
    - use_rethrow_when_possible
    - use_setters_to_change_properties
    - use_string_buffers
    - use_to_and_as_if_applicable
    - valid_regexps

3. 运行 mix_lint

你可以通过以下命令运行 mix_lint 来检查代码质量:

flutter pub run mix_lint

这个命令会执行以下操作:

  • 运行 dart analyzeflutter analyze 进行静态代码分析。
  • 运行 dart formatflutter format 检查代码格式。
  • 运行 dart testflutter test 运行单元测试。

4. 集成到 CI/CD

你可以将 mix_lint 集成到 CI/CD 管道中,确保每次提交代码时都进行代码质量检查。例如,在 GitHub Actions 中,你可以添加以下步骤:

name: Flutter CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v1
        with:
          flutter-version: '2.5.0'
      - run: flutter pub get
      - run: flutter pub run mix_lint
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!