炫酷的 Linter

这是一个为 dart/flutter 代码定制的 Linter 包。它可以设置 Linter 以排除某些单词。您可以在 analysis_options.yaml 中设置这些单词,示例如下

用法

1. 将依赖项添加到 pubspec.yaml

dev_dependencies:
  cool_linter: ^1.2.0 # last version of plugin

2. 将配置添加到 analysis_options.yaml

analyzer:
  plugins:
    - cool_linter

cool_linter:
  extended_rules:
    - always_specify_stream_subscription
    - prefer_trailing_comma
  always_specify_types:
    - typed_literal
    - declared_identifier
    - set_or_map_literal
    - simple_formal_parameter
    - type_name
    - variable_declaration_list
  regexp_exclude:
    -
      pattern: Colors
      hint: Use colors from design system instead!
      severity: WARNING
    -
      pattern: Test123{1}
      severity: ERROR
  exclude_folders:
    - test/**
    - lib/ku/**
  1. always_specify_types Linter:

always_specify_types
此规则类似于 dart 核心 Linter 规则,但您可以选择要使用的子规则

  • typed_literal
  • declared_identifier
  • set_or_map_literal
  • simple_formal_parameter
  • type_name
  • variable_declaration_list

您还可以选择排除此规则的文件夹。请参阅 exclude_folders

  1. regexp_exclude Linter:

  • pattern - RegExp 模式,例如:Test123{1}, ^Test123$ 等
  • severity - [可选参数]。这是控制台信息级别。可以是 WARNINGINFOERROR。默认为 WARNING
  • hint - [可选参数]。这是控制台信息句子
  • exclude_folders - Linter 将忽略这些文件夹。默认排除的文件夹是
'.dart_tool/**',
'.vscode/**',
'packages/**',
'ios/**',
'macos/**',
'web/**',
'linux/**',
'windows/**',
'go/**',
  1. extended_rules. always_specify_stream_subscription Linter

始终为 Stream.listen(); 使用 StreamSubscription;

正确

final Stream<String> stream2 = Stream<String>.value('value');
final StreamSubscription<String> sub = stream2.listen((_) {}); // OK

警告

final Stream<String> stream1 = Stream<String>.value('value');
stream1.listen((String ttt) {}); // LINT

注意!!!

您必须重启 IDE 才能启动插件

3. CLI

您可以使用 Linter 作为命令行工具
dart bin/cool_linter_cli.dart analyze -tsc -d test/fix/result --regexp_path test/regexp/regexp_settings_cli.yaml

或者使用 dart pub run

可用选项:

  • -d - 要分析的文件夹
  • -f - 修复问题。目前仅适用于 prefer_trailing_comma 规则
  • -t - 使用 always_specify_types_rule 规则
  • -s - 使用 always_specify_stream_subscription 规则
  • -c - 使用 prefer_trailing_comma 规则
  • -f - 修复问题。目前仅适用于 prefer_trailing_comma 规则
  • --regexp_path - 包含 RegExp 设置的文件路径

如果您想使用 RegExp 分析器,还必须指定 --regexp_path 参数。
示例:--regexp_path <包含 RegExp 设置的 .yaml 文件路径>

regexp_exclude:
  -
    pattern: Colors
    hint: Use colors from design system instead!
    severity: WARNING
  -
    pattern: \sTestClass\s
    hint: Dont use TestClass
    severity: ERROR
  -
    pattern: \sTestClass2\s
    hint: Dont use TestClass2
    severity: INFO

Screenshot

4. 结果

analysis_options.yaml 示例

analyzer:
  plugins:
    - cool_linter

cool_linter:
  extended_rules:
    - always_specify_stream_subscription
    - prefer_trailing_comma
  always_specify_types:
    - typed_literal
    - declared_identifier
    - set_or_map_literal
    - simple_formal_parameter
    - type_name
    - variable_declaration_list
  regexp_exclude:
    -
      pattern: Colors
      hint: Use colors from design system instead!
      severity: WARNING
    -
      pattern: Test123{1}
      severity: ERROR
  exclude_folders:
    - test/**
    - lib/ku/**

linter1

linter2

linter3

GitHub

https://github.com/jWinterDay/cool_linter