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

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

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

leancode_lint pub.dev badge

leancode_lint 是一套高质量、健壮且最新的lint规则,由LeanCode公司维护和使用。

安装

  1. 在项目 pubspec.yaml 中添加 leancode_lintcustom_lint 作为开发依赖:

    dart pub add leancode_lint custom_lint --dev
    
  2. analysis_options.yaml 文件中添加以下内容,包含 leancode_lint 的配置文件。你可以排除一些文件(例如生成的json序列化文件)以避免分析:

    include: package:leancode_lint/analysis_options.yaml
    
  3. 启用 custom_lint 分析插件,并可以自定义lint规则:

    analyzer:
      plugins:
        - custom_lint
    
  4. 运行 flutter pub get 并重启IDE即可开始使用。

示例 analysis_options.yaml:

include: package:leancode_lint/analysis_options.yaml

# 可选的 lint 规则配置
custom_lint:
  rules:
    - use_design_system_item:
      AppText:
        - instead_of: Text
          from_package: flutter
        - instead_of: RichText
          from_package: flutter
      AppScaffold:
        - instead_of: Scaffold
          from_package: flutter

analyzer:
  plugins:
    - custom_lint
  exclude:
    - '**/*.g.dart'

库中的使用

如果你的包是一个库而不是一个二进制应用程序,则需要在 analysis_options.yaml 中更改 include 条目以适应库的公共API:

include: package:leancode_lint/analysis_options_package.yaml

自定义Lint规则

要禁用特定的自定义lint规则,可以在 analysis_options.yaml 中将该规则设置为 false。例如,禁用 prefix_widgets_returning_slivers 规则:

custom_lint:
  rules:
    - prefix_widgets_returning_slivers: false

示例规则说明

add_cubit_suffix_for_your_cubits

DO: 为你的cubit命名添加 ‘Cubit’ 后缀。

BAD:

class MyClass extends Cubit<int> {}

GOOD:

class MyClassCubit extends Cubit<int> {}

avoid_conditional_hooks

AVOID: 不要在条件语句中使用hooks。

BAD:

Widget build(BuildContext context) {
  if (condition) {
    useEffect(() {
      // ...
    }, []);
  }
}

GOOD:

Widget build(BuildContext context) {
  useEffect(() {
    if (condition) {
        // ...
    }
  }, []);
}

catch_parameter_names

DO: 命名捕获异常参数时保持一致性。

BAD:

try {} catch (e, s) {}

GOOD:

try {} catch (err, st) {}

hook_widget_does_not_use_hooks

AVOID: 如果没有使用hooks,则不要扩展 HookWidget

BAD:

class MyWidget extends HookWidget {
  @override
  Widget build(BuildContext context) {
    return Placeholder();
  }
}

GOOD:

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Placeholder();
  }
}

prefix_widgets_returning_slivers

DO: 如果widget返回sliver,请在名称前加上 ‘Sliver’ 前缀。

BAD:

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SliverToBoxAdapter();
  }
}

GOOD:

class SliverMyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SliverToBoxAdapter();
  }
}

start_comments_with_space

DO: 注释或文档开头留一个空格。

BAD:

//some comment
///some doc

GOOD:

// some comment
/// some doc

use_design_system_item

AVOID: 避免使用设计系统不允许的项。

示例配置:

custom_lint:
  rules:
    - use_design_system_item:
      LncdText:
        - instead_of: Text
          from_package: flutter
        - instead_of: RichText
          from_package: flutter
      LncdScaffold:
        - instead_of: Scaffold
          from_package: flutter

avoid_single_child_in_multi_child_widgets

AVOID: 避免在多子组件中使用单个子组件。

BAD:

Column(
  children: [
    Container(),
  ]
)

GOOD:

Container()

协助工具

协助工具是与特定问题无关的IDE重构工具。可以通过光标放置在相关代码上并打开代码操作对话框来触发。例如,在VSCode中可以通过按 Ctrl + .Cmd + . 来触发。

参考链接:

以上内容详细介绍了如何安装和使用 `leancode_lint` 插件,并提供了一些常见的自定义Lint规则示例。希望这些信息对你有所帮助!

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用leancode_lint插件来进行代码质量检查的示例。

安装leancode_lint

首先,你需要在你的Flutter项目的根目录下,通过命令行安装leancode_lint。由于leancode_lint并不是Flutter官方提供的lint工具,而是一个假设存在的第三方插件,这里我们假设它可以通过Dart的包管理工具pub进行安装。

注意:实际上,leancode_lint可能并不存在,这里只是为了演示如何集成和使用一个假设的lint工具。通常,Flutter社区更常用的是lint包(如pedanticflutter_lints)结合Dart的分析器来进行代码质量检查。

如果你确定leancode_lint存在,并且可以通过pub安装,你可以执行以下命令:

flutter pub add leancode_lint

配置leancode_lint

安装完成后,你需要在你的项目中配置leancode_lint。通常,lint工具的配置文件会放在项目的根目录下,命名为.analysis_options.yaml

下面是一个假设的.analysis_options.yaml配置文件的示例,其中包含了leancode_lint的一些规则(这些规则是假设的,因为leancode_lint的具体规则未知):

include: package:leancode_lint/analysis_options.yaml

# 自定义规则,假设leancode_lint支持这样的配置
linter:
  rules:
    avoid_unnecessary_statements: true
    prefer_const_constructors: true
    # ... 其他leancode_lint规则

# Dart分析器的其他配置
analyzer:
  exclude:
    - "**/*.g.dart"
    - "**/*.freezed.dart"
  errors:
    todo: ignore

使用leancode_lint进行代码质量检查

配置完成后,你可以通过命令行运行leancode_lint(如果它提供了命令行工具)或者通过Dart的分析器来触发这些规则的检查。

由于leancode_lint的具体使用方式未知,这里假设它可以通过Dart的分析器自动集成并运行。你可以使用以下命令来检查代码质量:

flutter analyze

如果leancode_lint成功集成,flutter analyze命令将会应用你在.analysis_options.yaml中配置的所有规则,并报告任何违反这些规则的问题。

示例代码和修复

假设你的代码中有以下违反leancode_lint规则的问题:

void main() {
  int x = 0;
  x = 1; // 假设这条语句被leancode_lint标记为不必要的语句
  print(x);
}

运行flutter analyze后,你可能会收到一个关于不必要语句的警告。为了修复这个问题,你可以删除不必要的语句:

void main() {
  int x = 1; // 直接初始化为1,避免不必要的赋值
  print(x);
}

总结

以上示例展示了如何假设集成和使用一个名为leancode_lint的Flutter代码质量检查插件。请注意,由于leancode_lint可能并不存在,因此上述内容是基于假设和通用lint工具集成流程的说明。在实际项目中,你可能需要使用Flutter社区更广泛采用的lint工具,如pedanticflutter_lints

回到顶部