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

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

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

《Lint Hard》的目标是通过提高代码质量和一致性来减少技术债务,同时将运行时错误转变为编译时错误。

《Lint Hard》利用强模式类型安全性来提高代码清晰度并消除无类型或弱类型代码中的“意图模糊”。

《Lint Hard》将许多常见的运行时错误转化为编译时错误。一般来说,修复编译时错误比修复运行时错误要困难十倍。使用《Lint Hard》可以节省时间和避免挫折感。

使用《Lint Hard》在编码时需要做更多的工作,但会显著减少运行时错误,从而节省更多的时间,而不是花费时间清理你的lints。dart fix命令也可以自动化解决许多最常见的lints,从而减轻工作量。

《Lint Hard》强制你在整个代码库中使用一致的标准,这使得其他开发人员更容易阅读你的代码。当你在12个月后回到自己的代码时也会更有帮助。

drop in replacement

你可以将《Lint Hard》作为现有lint包(如pedantic、lints、flutter_lints等)的直接替换使用。

包含哪些lints

《Lint Hard》包含了所有不冲突的Dart lint,并启用了强模式类型检查。

analyzer:
  language:
    strict-casts: true
    strict-inference: true
    strict-raw-types: true
  strong-mode:
    implicit-casts: false
    implicit-dynamic: false

你可以在analysis_options.yaml文件中查看完整的lint集合。

其他改进

《Lint Hard》项目还提供了以下建议,以帮助你提升项目的整体质量。

或者,你可以直接跳到本页底部安装《Lint Hard》。

dart格式化

我们强烈建议你使用dart format来格式化代码。虽然我个人不喜欢dart format施加的一些格式化决策,但一致性更为重要。不要抗拒这一点。只需运行dart format即可。你会逐渐习惯这种格式,这对于与其他开发人员共享代码来说更容易。

使用dart format还可以使你更容易阅读其他开发人员的代码,因为dart format几乎普遍用于Dart社区。

dart format将改善你的提交历史,因为它不会被格式差异所干扰。这对团队项目尤为重要,即使你独自工作也会带来好处。

使用像vs-code这样的IDE,每次保存代码时都会自动格式化。

仅提交已格式化的代码。

对JavaScript开发者的提示

如果你来自JavaScript世界,强制类型声明可能最初会感觉负担沉重,但很快你就会发现它允许你更快地开发并更早地发布高质量代码。

避免使用dynamic和Object类型

大多数情况下,你不应该使用dynamic类型,也极少使用Object类型。

有一些例外情况,例如在解析json时使用dart。但你应该始终尝试使用实际类型。dynamic和Object应该是最后的选择。

包开发者调整

如果你正在构建一个Dart包,你应该为所有的公共方法添加文档。

为了确保你始终如一地这样做,在你的analysis_options.yaml中添加以下内容:

linter:
  rules:
    public_member_api_docs : true

使用nnbd

这可能不需要说,但以防万一…

如果你还没有将项目迁移到默认非空(nnbd),现在是时候做了。 我们建议先应用《Lint Hard》到你的项目,然后再进行nnbd转换。更干净的代码库将有助于nnbd迁移工具。

现在nnbd已经启用,尽量减少?操作符的使用。默认使用非可空类型。只有在变量确实需要可空性时才使用可空类型。

使用诸如默认值和(小心谨慎地)late关键字等技术。

安装Lint Hard

要将《Lint Hard》安装到你的应用或包中,请执行以下步骤:

  1. 检查并提交任何现有的代码更改。

  2. 运行dart format

    dart format
    
  3. 提交已格式化的代码

    如果你已经使用了dart format,可以跳过此步骤。如果没有,此步骤将使你更容易区分lint更改,因为它们不会与格式更改混在一起。

  4. 在项目的根目录下打开终端并运行以下命令:

    dart pub add --dev lint_hard
    
  5. 创建或修改analysis_options.yaml文件:

    include: package:lint_hard/all.yaml
    
  6. 删除现有的lint器

    如果你正在使用其他lint器,如lints、pedantic、flutter_lints等,现在是删除它们的时候了。 你的现有lint包应在项目的pubspec.yaml文件的dev_dependencies部分列出。

  7. 运行dart fix

    dart fix命令将基于《Lint Hard》设置应用一些自动化修复。

    运行:

    dart fix --apply
    

    重复运行dart fix直到它报告“无需修复!”

  8. 运行dart format

    最后运行dart format处理你的代码。理想情况下,你应该使用一个IDE,该IDE在你每次保存代码时都会自动格式化。

  9. 对于控制台用户,避免打印

    控制台应用程序开发者应将以下内容添加到项目的analysis_options.yaml文件中:

    linter:
      rules:
        avoid_print: false  
    

自定义预定义的lint集

你可以自定义预定义的lint集,以便禁用某个lint或添加额外的lint。详情请参阅[定制静态分析]。


示例Demo

以下是一个使用《Lint Hard》的示例项目:

example/README.md

An example project that uses lint_hard.


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

1 回复

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


当然,lint_hard 是一个用于 Flutter 和 Dart 项目的代码质量检查工具,它通过一系列严格的 lint 规则来确保代码的一致性和质量。以下是如何在 Flutter 项目中使用 lint_hard 的一些示例代码和配置步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 lint 相关的依赖。虽然 lint_hard 不是一个官方包名,但我们可以使用 Flutter 社区推荐的 lint 包,如 pedanticflutter_lints,并自定义规则以接近 lint_hard 的严格性。为了演示,这里我们使用 flutter_lints 并添加一些额外的严格规则。

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^2.0.0  # 确保使用最新版本

2. 配置分析选项

接下来,在项目的根目录下创建一个 .analysis_options.yaml 文件,并在其中配置分析选项。这个文件允许你覆盖默认的 lint 规则或添加额外的规则。

include: package:flutter_lints/flutter.yaml

linter:
  rules:
    # 启用一些额外的严格规则
    avoid_empty_else: true
    avoid_init_to_null: true
    avoid_redundant_argument_values: true
    avoid_returning_null_for_void: true
    # 可以继续添加更多规则...

    # 禁用一些可能过于严格的规则(如果需要)
    # prefer_const_constructors: false
    # prefer_const_literals_to_creates_lists: false

3. 运行分析

现在,你可以使用 Flutter 的分析工具来检查代码质量。在终端中运行以下命令:

flutter analyze

这个命令会根据 .analysis_options.yaml 文件中的配置来检查代码,并报告任何违反 lint 规则的地方。

4. 自动修复(可选)

对于一些简单的 lint 问题,Flutter 提供了自动修复功能。你可以通过添加 --fix 参数来尝试自动修复这些问题:

flutter analyze --fix

请注意,不是所有的 lint 问题都可以自动修复,有些问题可能需要手动调整代码。

5. 集成到 CI/CD 流程(可选)

为了确保代码质量持续符合标准,你可以将 flutter analyze 命令集成到你的 CI/CD 流程中。这样,在每次代码提交或合并时,都会自动运行分析检查。

例如,在一个使用 GitHub Actions 的 CI/CD 配置文件中,你可以添加类似以下的步骤:

name: Flutter CI

on: [push, pull_request]

jobs:
  analyze:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v1
        with:
          channel: stable
      - run: flutter pub get
      - run: flutter analyze

这个配置会在每次 push 或 pull request 时运行 Flutter 分析检查。

通过上述步骤,你可以在 Flutter 项目中有效地使用 lint 规则来检查代码质量,确保代码的一致性和可维护性。虽然 lint_hard 不是一个具体的包名,但上述方法可以帮助你实现类似的严格代码质量检查。

回到顶部