Flutter代码分析配置插件workiva_analysis_options的使用
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 analyze
和 tuneup
,这是默认行为。
示例 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
更多关于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 包,但你可以参考其提供的配置来设置自己的分析规则。希望这个示例对你有所帮助!