Flutter代码分析配置插件workiva_analysis_options的使用

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

Flutter代码分析配置插件 workiva_analysis_options 的使用

概述

workiva_analysis_options 是 Workiva 团队基于 Dart 团队的 lints 包开发的一个工具包,旨在为所有 Workiva Dart 项目提供统一的代码分析配置。该包导出的 analysis_options.yaml 文件可以被包含在项目的自定义 analysis_options.yaml 中。

安装

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

dev_dependencies:
  workiva_analysis_options: ^1.0.0

然后,在项目的根目录下创建或修改 analysis_options.yaml 文件,引用 workiva_analysis_options 提供的默认分析选项文件:

include: package:workiva_analysis_options/v2.yaml

版本控制

为了防止自动更新导致 CI 失败,每个版本的 analysis_options.yaml 文件都带有版本号。例如:

  • package:workiva_analysis_options/v1.yaml
  • package:workiva_analysis_options/v1.recommended.yaml
  • package:workiva_analysis_options/v2.yaml
  • package:workiva_analysis_options/v2.recommended.yaml

这样,你可以通过指定版本范围(如 ^1.0.0)来管理分析选项的升级。

使用推荐规则

默认情况下,analysis_options.yaml 文件只启用必需的规则。如果你希望同时启用推荐的规则,可以使用以下配置:

include: package:workiva_analysis_options/v1.recommended.yaml

这将包括所有必需和推荐的规则。

确保采用最新的共享选项

Workiva 内部有一个自动化工具集成到 CI 中,用于验证 Workiva Dart 项目是否依赖于特定版本或更高版本的 workiva_analysis_options 并且正确包含了共享配置。

确保修复分析错误

所有的必需分析 lint 和提示/警告都将严重性提升至“警告”,例如:

analyzer:
  errors:
    avoid_empty_else: warning

这意味着当存在错误或警告时,CI 和开发者运行分析会返回非零退出码。对于 dartanalyzer,可以通过 --fatal-warnings 参数实现这一点;而对于 dart analyzetuneup,这是默认行为。

示例 Demo

下面是一个完整的示例,展示了如何在一个新的 Flutter 项目中集成 workiva_analysis_options

创建新 Flutter 项目

首先,创建一个新的 Flutter 项目:

flutter create my_flutter_project
cd my_flutter_project

修改 pubspec.yaml

pubspec.yaml 中添加 workiva_analysis_options 依赖:

name: my_flutter_project
description: A new Flutter project.

publish_to: 'none'

version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter
  workiva_analysis_options: ^1.0.0

配置 analysis_options.yaml

在项目根目录下创建或修改 analysis_options.yaml 文件,引用 workiva_analysis_options 的最新版本:

include: package:workiva_analysis_options/v2.yaml

如果你想启用推荐的规则,可以改为:

include: package:workiva_analysis_options/v2.recommended.yaml

运行分析

现在,你可以运行以下命令来检查代码是否符合 workiva_analysis_options 的规则:

dart analyze

更多关于Flutter代码分析配置插件workiva_analysis_options的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter代码分析配置插件workiva_analysis_options的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用 workiva_analysis_options 插件进行代码分析配置的示例。这个插件提供了一组严格的分析选项,可以帮助你保持代码的一致性和质量。

1. 添加 workiva_analysis_options 依赖

首先,你需要在你的 pubspec.yaml 文件中添加 workiva_analysis_options 依赖(注意,这不是一个实际的 Flutter 包,但你可以通过将其分析配置文件添加到你的项目中来模拟它的效果)。通常,你会通过 .analysis_options.yaml 文件来配置 Dart 的分析器。

由于 workiva_analysis_options 实际上是一个配置文件的集合,你需要从 GitHub 或其他来源获取这些配置,并手动添加到你的项目中。

2. 创建或更新 .analysis_options.yaml 文件

在你的 Flutter 项目根目录下,创建一个名为 .analysis_options.yaml 的文件(如果文件已经存在,则进行更新)。下面是一个基于 workiva_analysis_options 风格的基本配置示例:

# .analysis_options.yaml

# Enable linting rules
linter:
  rules:
    # Example rules enabled
    - avoid_classes_with_only_static_members
    - avoid_empty_else
    - avoid_function_literals_in_foreach_calls
    - avoid_init_to_null
    - avoid_null_checks_in_equality_operators
    - avoid_returning_null_for_void
    - avoid_throwing_literals
    - avoid_types_on_closure_parameters
    - avoid_unused_constructor_parameters
    - avoid_using_deprecated_annotations
    - camel_case_types
    - constant_identifier_names
    - control_flow_in_finally
    - empty_catches
    - empty_statements
    - file_names
    - library_names
    - no_adjacent_strings_in_list
    - no_duplicate_case_labels_in_switch
    - no_leading_underscores_in_local_identifiers
    - non_constant_identifier_names
    - one_member_abstract_classes
    - overridden_fields
    - package_api_docs
    - package_names
    - prefer_const_declarations
    - prefer_expression_function_bodies
    - prefer_final_fields
    - prefer_final_locals
    - prefer_single_quotes
    - provide_deprecation_reason
    - public_member_api_docs
    - slash_for_doc_comments
    - sort_constructors_first
    - sort_members
    - test_types_in_equals
    - throw_in_finally
    - unnecessary_brace_in_string_interps
    - unnecessary_getters_setters
    - unnecessary_null_aware_assignments
    - unnecessary_null_in_if_null_check
    - unnecessary_override
    - unnecessary_parenthesization
    - unnecessary_string_interpolations
    - unnecessary_string_literals
    - use_is_even_odd
    - use_string_literals
    - valid_regex_string_literals

# Analyzer options
analyzer:
  exclude:
    - "**/*.g.dart"
    - "**/*.gr.dart"
    - "**/*.freezed.dart"
  errors:
    # Example error severity configurations
    todo: warning
    unused_import: warning
    unused_local_variable: warning
    deprecated_member_use_from_same_package: error
    unnecessary_cast: error
    unused_local_variable: ignore # If you want to ignore specific rules

3. 运行分析器

你可以通过运行以下命令来分析你的 Flutter 项目:

flutter analyze

这个命令会基于 .analysis_options.yaml 文件中的配置来分析你的代码,并报告任何潜在的问题或违规项。

4. 集成到 CI/CD 管道

为了持续保证代码质量,你可以将 flutter analyze 命令集成到你的 CI/CD 管道中。这样,每次代码提交或合并时,都会自动运行分析器,确保代码符合你的分析规则。

总结

通过添加 .analysis_options.yaml 文件并配置相应的分析规则,你可以有效地提高 Flutter 项目的代码质量和一致性。虽然 workiva_analysis_options 不是一个实际的 Flutter 包,但你可以参考其提供的配置来设置自己的分析规则。希望这个示例对你有所帮助!

回到顶部