278 lines
12 KiB
YAML
278 lines
12 KiB
YAML
|
|
# include: package:lint/analysis_options.yaml
|
||
|
|
analyzer:
|
||
|
|
# strong-mode:
|
||
|
|
# Will become the default once non-nullable types land
|
||
|
|
# https://github.com/dart-lang/sdk/issues/31410#issuecomment-510683629
|
||
|
|
# implicit-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
|
||
|
|
todo: ignore
|
||
|
|
# Rules are in the same order (alphabetically) as documented at http://dart-lang.github.io/linter/lints
|
||
|
|
# and https://github.com/dart-lang/linter/blob/master/example/all.yaml
|
||
|
|
linter:
|
||
|
|
rules:
|
||
|
|
# Prevents accidental return type changes which results in a breaking API change.
|
||
|
|
# Enforcing return type makes API changes visible in a diff
|
||
|
|
# pedantic: enabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/always_declare_return_types.html
|
||
|
|
- always_declare_return_types
|
||
|
|
|
||
|
|
# Single line `if`s are fine as recommended in Effective Dart "DO format your code using dartfmt"
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/always_put_control_body_on_new_line.html
|
||
|
|
# - always_put_control_body_on_new_line
|
||
|
|
|
||
|
|
# Flutter widgets always put a Key as first optional parameter which breaks this rule.
|
||
|
|
# Also violates other orderings like matching the class fields or alphabetically.
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/always_declare_return_types.html
|
||
|
|
# - always_put_required_named_parameters_first
|
||
|
|
|
||
|
|
# All non nullable named parameters should be and annotated with @required.
|
||
|
|
# This allows API consumers to get warnings via lint rather than a crash a runtime.
|
||
|
|
# Might become obsolete with Non-Nullable types
|
||
|
|
# pedantic: enabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/always_require_non_null_named_parameters.html
|
||
|
|
- always_require_non_null_named_parameters
|
||
|
|
|
||
|
|
# Since dart 2.0 dart is a sound language, specifying types is not required anymore.
|
||
|
|
# `var foo = 10;` is enough information for the compiler to make foo a int.
|
||
|
|
# Violates Effective Dart "AVOID type annotating initialized local variables".
|
||
|
|
# Makes code unnecessarily complex https://github.com/dart-lang/linter/issues/1620
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/always_specify_types.html
|
||
|
|
# - always_specify_types
|
||
|
|
|
||
|
|
# Protect against unintentionally overriding superclass members
|
||
|
|
# pedantic: enabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/annotate_overrides.html
|
||
|
|
- annotate_overrides
|
||
|
|
|
||
|
|
# All methods should define a return type. dynamic is no exception.
|
||
|
|
# Violates Effective Dart "PREFER annotating with dynamic instead of letting inference fail"
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_annotating_with_dynamic.html
|
||
|
|
# - avoid_annotating_with_dynamic
|
||
|
|
|
||
|
|
# A leftover from dart1, should be deprecated
|
||
|
|
# pedantic: disabled
|
||
|
|
# - https://github.com/dart-lang/linter/issues/1401
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_as.html
|
||
|
|
# - avoid_as
|
||
|
|
|
||
|
|
# Highlights boolean expressions which can be simplified
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_bool_literals_in_conditional_expressions.html
|
||
|
|
- avoid_bool_literals_in_conditional_expressions
|
||
|
|
|
||
|
|
# There are no strong arguments to enable this rule because it is very strict. Catching anything is useful
|
||
|
|
# and common even if not always the most correct thing to do.
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_catches_without_on_clauses.html
|
||
|
|
# - avoid_catches_without_on_clauses
|
||
|
|
|
||
|
|
# Errors aren't for catching but to prevent prior to runtime
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_catching_errors.html
|
||
|
|
- avoid_catching_errors
|
||
|
|
|
||
|
|
# Can usually be replaced with an extension
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_classes_with_only_static_members.html
|
||
|
|
# - avoid_classes_with_only_static_members
|
||
|
|
|
||
|
|
# Never accidentally use dynamic invocations
|
||
|
|
# Dart SDK: unreleased • (Linter vnull)
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_dynamic_calls.html
|
||
|
|
# avoid_dynamic_calls
|
||
|
|
|
||
|
|
# Only useful when targeting JS
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_double_and_int_checks.html
|
||
|
|
# - avoid_double_and_int_checks
|
||
|
|
|
||
|
|
# Prevents accidental empty else cases. See samples in documentation
|
||
|
|
# pedantic: enabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_empty_else.html
|
||
|
|
- avoid_empty_else
|
||
|
|
|
||
|
|
# It is expected that mutable objects which override hash & equals shouldn't be used as keys for hashmaps.
|
||
|
|
# This one use case doesn't make all hash & equals implementations for mutable classes bad.
|
||
|
|
# pedantic: disabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_equals_and_hash_code_on_mutable_classes.html
|
||
|
|
# - avoid_equals_and_hash_code_on_mutable_classes
|
||
|
|
|
||
|
|
# Use different quotes instead of escaping
|
||
|
|
# Dart SDK: >= 2.8.0-dev.11.0 • (Linter v0.1.111)
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_escaping_inner_quotes.html
|
||
|
|
- avoid_escaping_inner_quotes
|
||
|
|
|
||
|
|
# Prevents unnecessary allocation of a field
|
||
|
|
# pedantic: disabled
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_field_initializers_in_const_classes.html
|
||
|
|
- avoid_field_initializers_in_const_classes
|
||
|
|
|
||
|
|
# Prevents allocating a lambda and allows return/break/continue control flow statements inside the loop
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_function_literals_in_foreach_calls.html
|
||
|
|
- avoid_function_literals_in_foreach_calls
|
||
|
|
|
||
|
|
# Don't break value types by implementing them
|
||
|
|
# http://dart-lang.github.io/linter/lints/avoid_implementing_value_types.html
|
||
|
|
- avoid_implementing_value_types
|
||
|
|
|
||
|
|
# Removes redundant `= null;`
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_init_to_null.html
|
||
|
|
- avoid_init_to_null
|
||
|
|
|
||
|
|
# Only useful when targeting JS
|
||
|
|
# Warns about too large integers when compiling to JS
|
||
|
|
# pedantic: disabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_js_rounded_ints.html
|
||
|
|
# - avoid_js_rounded_ints
|
||
|
|
|
||
|
|
# Null checks aren't required in ==() operators
|
||
|
|
# pedantic: enabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_null_checks_in_equality_operators.html
|
||
|
|
- avoid_null_checks_in_equality_operators
|
||
|
|
|
||
|
|
# Good APIs don't use ambiguous boolean parameters. Instead use named parameters
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_positional_boolean_parameters.html
|
||
|
|
- avoid_positional_boolean_parameters
|
||
|
|
|
||
|
|
# Don't call print in production code
|
||
|
|
# pedantic: disabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_print.html
|
||
|
|
- avoid_print
|
||
|
|
|
||
|
|
# Always prefer function references over typedefs.
|
||
|
|
# Jumping twice in code to see the signature of a lambda sucks. This is different from the flutter analysis_options
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_private_typedef_functions.html
|
||
|
|
- avoid_private_typedef_functions
|
||
|
|
|
||
|
|
# Don't explicitly set defaults
|
||
|
|
# Dart SDK: >= 2.8.0-dev.1.0 • (Linter v0.1.107)
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_redundant_argument_values.html
|
||
|
|
- avoid_redundant_argument_values
|
||
|
|
|
||
|
|
# package or relative? Let's end the discussion and use package everywhere.
|
||
|
|
# pedantic: enabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_relative_lib_imports.html
|
||
|
|
- avoid_relative_lib_imports
|
||
|
|
|
||
|
|
# Not recommended to break dartdoc but besides that there is no reason to continue with bad naming
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_renaming_method_parameters.html
|
||
|
|
# - avoid_renaming_method_parameters
|
||
|
|
|
||
|
|
# Setters always return void, therefore defining void is redundant
|
||
|
|
# pedantic: enabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_return_types_on_setters.html
|
||
|
|
- avoid_return_types_on_setters
|
||
|
|
|
||
|
|
# Especially with Non-Nullable types on the horizon, `int?` is fine.
|
||
|
|
# There are plenty of valid reasons to return null.
|
||
|
|
# pedantic: disabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_returning_null.html
|
||
|
|
# - avoid_returning_null
|
||
|
|
|
||
|
|
# Don't use `Future?`, therefore never return null instead of a Future.
|
||
|
|
# Will become obsolete one Non-Nullable types land
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_returning_null_for_future.html
|
||
|
|
- avoid_returning_null_for_future
|
||
|
|
|
||
|
|
# Use empty returns, don't show off with you knowledge about dart internals.
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_returning_null_for_void.html
|
||
|
|
- avoid_returning_null_for_void
|
||
|
|
|
||
|
|
# Hinting you forgot about the cascade operator. But too often you did this on purpose.
|
||
|
|
# There are plenty of valid reasons to return this.
|
||
|
|
# pedantic: disabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_returning_this.html
|
||
|
|
# - avoid_returning_this
|
||
|
|
|
||
|
|
# Prevents logical inconsistencies. It's good practice to define getters for all existing setters.
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_setters_without_getters.html
|
||
|
|
- avoid_setters_without_getters
|
||
|
|
|
||
|
|
# Don't reuse a type parameter when on with the same name already exists in the same scope
|
||
|
|
# pedantic: enabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_shadowing_type_parameters.html
|
||
|
|
- avoid_shadowing_type_parameters
|
||
|
|
|
||
|
|
# A single cascade operator can be replaced with a normal method call
|
||
|
|
# pedantic: enabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_single_cascade_in_expression_statements.html
|
||
|
|
- avoid_single_cascade_in_expression_statements
|
||
|
|
|
||
|
|
# Might cause frame drops because of synchronous file access on mobile, especially on older phones with slow storage.
|
||
|
|
# There are no known measurements sync access does *not* drop frames.
|
||
|
|
# pedantic: disabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_slow_async_io.html
|
||
|
|
# - avoid_slow_async_io
|
||
|
|
|
||
|
|
# Don't use .toString() in production code which might be minified
|
||
|
|
# Dart SDK: >= 2.10.0-144.0.dev • (Linter v0.1.119)
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_type_to_string.html
|
||
|
|
- avoid_type_to_string
|
||
|
|
|
||
|
|
# Don't use a parameter names which can be confused with a types (i.e. int, bool, num, ...)
|
||
|
|
# pedantic: enabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_types_as_parameter_names.html
|
||
|
|
- avoid_types_as_parameter_names
|
||
|
|
|
||
|
|
# Adding the type is not required, but sometimes improves readability. Therefore removing it doesn't always help
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_types_on_closure_parameters.html
|
||
|
|
# - avoid_types_on_closure_parameters
|
||
|
|
|
||
|
|
# Containers without parameters have no effect and can be removed
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_unnecessary_containers.html
|
||
|
|
- avoid_unnecessary_containers
|
||
|
|
|
||
|
|
# Unused parameters should be removed
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_unused_constructor_parameters.html
|
||
|
|
- avoid_unused_constructor_parameters
|
||
|
|
|
||
|
|
# TODO double check
|
||
|
|
# For async functions use `Future<void>` as return value, not `void`
|
||
|
|
# This allows usage of the await keyword and prevents operations from running in parallel.
|
||
|
|
# pedantic: disabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_void_async.html
|
||
|
|
- avoid_void_async
|
||
|
|
|
||
|
|
# Flutter mobile only: Web packages aren't available in mobile flutter apps
|
||
|
|
# https://dart-lang.github.io/linter/lints/avoid_web_libraries_in_flutter.html
|
||
|
|
- avoid_web_libraries_in_flutter
|
||
|
|
|
||
|
|
# Use the await keyword only for futures. There is nothing to await in synchronous code
|
||
|
|
# pedantic: enabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/await_only_futures.html
|
||
|
|
- await_only_futures
|
||
|
|
|
||
|
|
# Follow the style guide and use UpperCamelCase for extensions
|
||
|
|
# pedantic: enabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/camel_case_extensions.html
|
||
|
|
- camel_case_extensions
|
||
|
|
|
||
|
|
# Follow the style guide and use UpperCamelCase for class names and typedefs
|
||
|
|
# https://dart-lang.github.io/linter/lints/camel_case_types.html
|
||
|
|
- camel_case_types
|
||
|
|
|
||
|
|
# Prevents leaks and code executing after their lifecycle.
|
||
|
|
# Discussion https://github.com/passsy/dart-lint/issues/4
|
||
|
|
#
|
||
|
|
# pedantic: disabled
|
||
|
|
# https://dart-lang.github.io/linter/lints/cancel_subscriptions.html
|
||
|
|
- cancel_subscriptions
|
||
|
|
|
||
|
|
- prefer_single_quotes
|
||
|
|
|
||
|
|
# The cascade syntax is weird and you shouldn't be forced to use it.
|
||
|
|
# False positives:
|
||
|
|
# https://github.com/dart-lang/linter/issues/1589
|
||
|
|
#
|
||
|
|
# https://dart-lang.github.io/linter/lints/cascade_invocations.html
|
||
|
|
# - cascade_invocations
|
||
|
|
|
||
|
|
# Don't cast T? to T. Use ! instead
|
||
|
|
# Dart SDK: >= 2.11.0-182.0.dev • (Linter v0.1.120
|