-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
63 additions
and
256 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,267 +1,73 @@ | ||
# This is a copy (as of March 2021) of flutter/flutter's analysis_options file, | ||
# with minimal changes for this repository. The goal is to move toward using a | ||
# shared set of analysis options as much as possible, and eventually a shared | ||
# file. | ||
|
||
# Specify analysis options. | ||
# | ||
# For a list of lints, see: http://dart-lang.github.io/linter/lints/ | ||
# See the configuration guide for more | ||
# https://github.com/dart-lang/sdk/tree/main/pkg/analyzer#configuring-the-analyzer | ||
# | ||
# There are other similar analysis options files in the flutter repos, | ||
# which should be kept in sync with this file: | ||
# This file configures the analyzer, which statically analyzes Dart code to | ||
# check for errors, warnings, and lints. | ||
# | ||
# - analysis_options.yaml (this file) | ||
# - packages/flutter/lib/analysis_options_user.yaml | ||
# - https://github.com/flutter/flutter/blob/master/analysis_options.yaml | ||
# - https://github.com/flutter/engine/blob/main/analysis_options.yaml | ||
# - https://github.com/flutter/packages/blob/main/analysis_options.yaml | ||
# | ||
# This file contains the analysis options used for code in the flutter/plugins | ||
# repository. | ||
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled | ||
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be | ||
# invoked from the command line by running `flutter analyze`. | ||
|
||
# The following line activates a set of recommended lints for Flutter apps, | ||
# packages, and plugins designed to encourage good coding practices. | ||
include: package:flutter_lints/flutter.yaml | ||
|
||
analyzer: | ||
exclude: | ||
- build/** | ||
- lib/**.g.dart | ||
- lib/**.freezed.dart | ||
- lib/**/generated/**.dart | ||
# - tool/**.dart | ||
|
||
language: | ||
strict-raw-types: true | ||
strict-inference: true | ||
strict-casts: true | ||
strict-casts: false | ||
|
||
|
||
errors: | ||
# treat missing required parameters as a warning (not a hint) | ||
missing_required_param: warning | ||
# treat missing returns as a warning (not a hint) | ||
missing_return: warning | ||
# allow having TODO comments in the code | ||
todo: ignore | ||
# allow self-reference to deprecated members (we do this because otherwise we have | ||
# to annotate every member in every test, assert, etc, when we deprecate something) | ||
deprecated_member_use_from_same_package: ignore | ||
# Ignore analyzer hints for updating pubspecs when using Future or | ||
# Stream and not importing dart:async | ||
# Please see https://github.com/flutter/flutter/pull/24528 for details. | ||
sdk_version_async_exported_from_core: ignore | ||
# Turned off until null-safe rollout is complete. | ||
unnecessary_null_comparison: ignore | ||
### Local flutter/plugins changes ### | ||
# Allow null checks for as long as mixed mode is officially supported. | ||
always_require_non_null_named_parameters: false # not needed with nnbd | ||
exclude: | ||
# Ignore generated files | ||
- '**/*.g.dart' | ||
- 'lib/src/generated/*.dart' | ||
- '**/*.mocks.dart' # Mockito @GenerateMocks | ||
- '**/*.pigeon.dart' # Pigeon generated file | ||
- 'tool/**/*.dart' # helper tool scripts | ||
prefer_single_quotes: error | ||
always_use_package_imports: error | ||
always_declare_return_types: error | ||
avoid_relative_lib_imports: error | ||
annotate_overrides: error | ||
avoid_init_to_null: error | ||
use_full_hex_values_for_flutter_colors: error | ||
require_trailing_commas: error | ||
library_private_types_in_public_api: ignore | ||
inference_failure_on_instance_creation: ignore | ||
inference_failure_on_function_invocation: ignore | ||
unused_element: warning | ||
prefer_relative_imports: error | ||
directives_ordering: error | ||
prefer_final_locals: error | ||
use_super_parameters: error | ||
|
||
|
||
linter: | ||
# The lint rules applied to this project can be customized in the | ||
# section below to disable rules from the `package:flutter_lints/flutter.yaml` | ||
# included above or to enable additional rules. A list of all available lints | ||
# and their documentation is published at | ||
# https://dart-lang.github.io/linter/lints/index.html. | ||
# | ||
# Instead of disabling a lint rule for the entire project in the | ||
# section below, it can also be suppressed for a single line of code | ||
# or a specific dart file by using the `// ignore: name_of_lint` and | ||
# `// ignore_for_file: name_of_lint` syntax on the line or in the file | ||
# producing the lint. | ||
rules: | ||
# This list is derived from the list of all available lints located at | ||
# https://github.com/dart-lang/linter/blob/master/example/all.yaml | ||
- always_declare_return_types | ||
- always_put_control_body_on_new_line | ||
# - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219 | ||
- always_require_non_null_named_parameters | ||
- always_specify_types | ||
# - always_use_package_imports # we do this commonly | ||
- annotate_overrides | ||
# - avoid_annotating_with_dynamic # conflicts with always_specify_types | ||
- avoid_bool_literals_in_conditional_expressions | ||
# - avoid_catches_without_on_clauses # blocked on https://github.com/dart-lang/linter/issues/3023 | ||
# - avoid_catching_errors # blocked on https://github.com/dart-lang/linter/issues/3023 | ||
- avoid_classes_with_only_static_members | ||
- avoid_double_and_int_checks | ||
# - avoid_dynamic_calls # LOCAL CHANGE - Needs to be enabled and violations fixed. | ||
- avoid_empty_else | ||
- avoid_equals_and_hash_code_on_mutable_classes | ||
- avoid_escaping_inner_quotes | ||
- avoid_field_initializers_in_const_classes | ||
# - avoid_final_parameters # incompatible with prefer_final_parameters | ||
- avoid_function_literals_in_foreach_calls | ||
# - avoid_implementing_value_types # LOCAL CHANGE - Needs to be enabled and violations fixed. | ||
- avoid_init_to_null | ||
- avoid_js_rounded_ints | ||
# - avoid_multiple_declarations_per_line # seems to be a stylistic choice we don't subscribe to | ||
- avoid_null_checks_in_equality_operators | ||
# - avoid_positional_boolean_parameters # would have been nice to enable this but by now there's too many places that break it | ||
# - avoid_print # LOCAL CHANGE - Needs to be enabled and violations fixed. | ||
# - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356) | ||
- avoid_redundant_argument_values | ||
- avoid_relative_lib_imports | ||
- avoid_renaming_method_parameters | ||
- avoid_return_types_on_setters | ||
# - avoid_returning_null # still violated by some pre-nnbd code that we haven't yet migrated | ||
- avoid_returning_null_for_future | ||
- avoid_returning_null_for_void | ||
# - avoid_returning_this # there are enough valid reasons to return `this` that this lint ends up with too many false positives | ||
- avoid_setters_without_getters | ||
- avoid_shadowing_type_parameters | ||
- avoid_single_cascade_in_expression_statements | ||
- avoid_slow_async_io | ||
- avoid_type_to_string | ||
- avoid_types_as_parameter_names | ||
# - avoid_types_on_closure_parameters # conflicts with always_specify_types | ||
- avoid_unnecessary_containers | ||
- avoid_unused_constructor_parameters | ||
- avoid_void_async | ||
# - avoid_web_libraries_in_flutter # we use web libraries in web-specific code, and our tests prevent us from using them elsewhere | ||
- await_only_futures | ||
- camel_case_extensions | ||
- camel_case_types | ||
- cancel_subscriptions | ||
# - cascade_invocations # doesn't match the typical style of this repo | ||
- cast_nullable_to_non_nullable | ||
# - close_sinks # not reliable enough | ||
# - comment_references # blocked on https://github.com/dart-lang/linter/issues/1142 | ||
# - conditional_uri_does_not_exist # not yet tested | ||
# - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204 | ||
- control_flow_in_finally | ||
# - curly_braces_in_flow_control_structures # not required by flutter style | ||
- depend_on_referenced_packages | ||
- deprecated_consistency | ||
# - diagnostic_describe_all_properties # enabled only at the framework level (packages/flutter/lib) | ||
- directives_ordering | ||
# - do_not_use_environment # there are appropriate times to use the environment, especially in our tests and build logic | ||
- empty_catches | ||
- empty_constructor_bodies | ||
- empty_statements | ||
- eol_at_end_of_file | ||
- exhaustive_cases | ||
- file_names | ||
- flutter_style_todos | ||
- hash_and_equals | ||
- implementation_imports | ||
# - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811 | ||
# - join_return_with_assignment # not required by flutter style | ||
- leading_newlines_in_multiline_strings | ||
- library_names | ||
- library_prefixes | ||
- library_private_types_in_public_api | ||
# - lines_longer_than_80_chars # not required by flutter style | ||
# - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/linter/issues/453 | ||
- missing_whitespace_between_adjacent_strings | ||
- no_adjacent_strings_in_list | ||
# - no_default_cases # LOCAL CHANGE - Needs to be enabled and violations fixed. | ||
- no_duplicate_case_values | ||
- no_leading_underscores_for_library_prefixes | ||
- no_leading_underscores_for_local_identifiers | ||
- no_logic_in_create_state | ||
# - no_runtimeType_toString # ok in tests; we enable this only in packages/ | ||
- non_constant_identifier_names | ||
- noop_primitive_operations | ||
- null_check_on_nullable_type_parameter | ||
- null_closures | ||
# - omit_local_variable_types # opposite of always_specify_types | ||
# - one_member_abstracts # too many false positives | ||
# - only_throw_errors # this does get disabled in a few places where we have legacy code that uses strings et al # LOCAL CHANGE - Needs to be enabled and violations fixed. | ||
- overridden_fields | ||
- package_api_docs | ||
- package_names | ||
- package_prefixed_library_names | ||
# - parameter_assignments # we do this commonly | ||
- prefer_adjacent_string_concatenation | ||
- prefer_asserts_in_initializer_lists | ||
# - prefer_asserts_with_message # not required by flutter style | ||
- prefer_collection_literals | ||
- prefer_conditional_assignment | ||
- prefer_const_constructors | ||
- prefer_const_constructors_in_immutables | ||
- prefer_const_declarations | ||
- prefer_const_literals_to_create_immutables | ||
# - prefer_constructors_over_static_methods # far too many false positives | ||
- prefer_contains | ||
# - prefer_double_quotes # opposite of prefer_single_quotes | ||
# - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods | ||
- prefer_final_fields | ||
- prefer_final_in_for_each | ||
- prefer_final_locals | ||
# - prefer_final_parameters # we should enable this one day when it can be auto-fixed (https://github.com/dart-lang/linter/issues/3104), see also parameter_assignments | ||
- prefer_for_elements_to_map_fromIterable | ||
- prefer_foreach | ||
- prefer_function_declarations_over_variables | ||
- prefer_generic_function_type_aliases | ||
- prefer_if_elements_to_conditional_expressions | ||
- prefer_if_null_operators | ||
- prefer_initializing_formals | ||
- prefer_inlined_adds | ||
# - prefer_int_literals # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-double-literals-for-double-constants | ||
- prefer_interpolation_to_compose_strings | ||
- prefer_is_empty | ||
- prefer_is_not_empty | ||
- prefer_is_not_operator | ||
- prefer_iterable_whereType | ||
# - prefer_mixin # Has false positives, see https://github.com/dart-lang/linter/issues/3018 | ||
# - prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere | ||
- prefer_null_aware_operators | ||
- prefer_relative_imports | ||
- prefer_single_quotes | ||
- prefer_spread_collections | ||
- prefer_typing_uninitialized_variables | ||
- prefer_void_to_null | ||
- provide_deprecation_message | ||
# - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml | ||
- recursive_getters | ||
# - require_trailing_commas # blocked on https://github.com/dart-lang/sdk/issues/47441 | ||
- secure_pubspec_urls | ||
# - sized_box_for_whitespace # LOCAL CHANGE - Needs to be enabled and violations fixed. | ||
# - sized_box_shrink_expand # not yet tested | ||
- slash_for_doc_comments | ||
- sort_child_properties_last | ||
- sort_constructors_first | ||
# - sort_pub_dependencies # prevents separating pinned transitive dependencies | ||
- sort_unnamed_constructors_first | ||
- test_types_in_equals | ||
- throw_in_finally | ||
- tighten_type_of_initializing_formals | ||
# - type_annotate_public_apis # subset of always_specify_types | ||
- type_init_formals | ||
# - unawaited_futures # too many false positives, especially with the way AnimationController works | ||
# - unnecessary_await_in_return # LOCAL CHANGE - Needs to be enabled and violations fixed. | ||
- unnecessary_brace_in_string_interps | ||
- unnecessary_const | ||
- unnecessary_constructor_name | ||
# - unnecessary_final # conflicts with prefer_final_locals | ||
- unnecessary_getters_setters | ||
# - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498 | ||
- unnecessary_late | ||
- unnecessary_new | ||
- unnecessary_null_aware_assignments | ||
- unnecessary_null_checks | ||
- unnecessary_null_in_if_null_operators | ||
- unnecessary_nullable_for_final_variable_declarations | ||
- unnecessary_overrides | ||
- unnecessary_parenthesis | ||
# - unnecessary_raw_strings # what's "necessary" is a matter of opinion; consistency across strings can help readability more than this lint | ||
- unnecessary_statements | ||
- unnecessary_string_escapes | ||
- unnecessary_string_interpolations | ||
- unnecessary_this | ||
- unrelated_type_equality_checks | ||
- unsafe_html | ||
# - use_build_context_synchronously # LOCAL CHANGE - Needs to be enabled and violations fixed. | ||
# - use_colored_box # not yet tested | ||
# - use_decorated_box # not yet tested | ||
# - use_enums # not yet tested | ||
- use_full_hex_values_for_flutter_colors | ||
- use_function_type_syntax_for_parameters | ||
- use_if_null_to_convert_nulls_to_bools | ||
- use_is_even_rather_than_modulo | ||
- use_key_in_widget_constructors | ||
- use_late_for_private_fields_and_variables | ||
- use_named_constants | ||
- use_raw_strings | ||
- use_rethrow_when_possible | ||
# - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182 | ||
- use_test_throws_matchers | ||
# - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review | ||
- valid_regexps | ||
- void_checks | ||
### Local flutter/plugins additions ### | ||
# These are from flutter/flutter/packages, so will need to be preserved | ||
# separately when moving to a shared file. | ||
- no_runtimeType_toString # use objectRuntimeType from package:foundation | ||
# - public_member_api_docs # see https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#documentation-dartdocs-javadocs-etc | ||
# Flutter has a specific use case for dependencies that are intentionally | ||
# not sorted, which doesn't apply to this repo. | ||
- sort_pub_dependencies | ||
prefer_single_quotes: true | ||
prefer_relative_imports: true | ||
always_use_package_imports: false | ||
avoid_relative_lib_imports: true | ||
always_declare_return_types: true | ||
annotate_overrides: true | ||
avoid_init_to_null: true | ||
use_full_hex_values_for_flutter_colors: true | ||
require_trailing_commas: true | ||
empty_catches: false | ||
directives_ordering: true | ||
prefer_final_locals: false | ||
use_super_parameters: true | ||
|
||
# Additional information about this file can be found at | ||
# https://dart.dev/guides/language/analysis-options |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters