Skip to content

modulovalue/extra_pedantic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

extra_pedantic

extra_pedantic on pub.dev Pub.dev Github Stars Twitter Follow GitHub Follow

This is an alternative to lints.

To use extra_pedantic:

  • add it as a dev_dependency to your pubspec.yaml file:
dev_dependencies:
  extra_pedantic: 4.0.0
  • add this line to your analysis_options.yaml file:
include: package:extra_pedantic/analysis_options.yaml

And that's it.


Here is an overview of which lint rules are enabled and disabled:

Rule Name Status Comment Rule Description
always_declare_return_types âś… No comment. Declare method return types.
annotate_overrides âś… No comment. Annotate overridden members.
avoid_null_checks_in_equality_operators âś… No comment. Don't check for null in custom == operators.
prefer_collection_literals âś… No comment. Use collection literals when possible.
prefer_conditional_assignment âś… No comment. Prefer using ??= over testing for null.
prefer_final_fields âś… No comment. Private field could be final.
prefer_for_elements_to_map_fromIterable âś… No comment. Prefer 'for' elements when building maps from iterables.
prefer_generic_function_type_aliases âś… No comment. Prefer generic function type aliases.
prefer_if_null_operators âś… No comment. Prefer using if null operators.
prefer_spread_collections âś… No comment. Use spread collections when possible.
use_function_type_syntax_for_parameters âś… No comment. Use generic function type syntax for parameters.
avoid_empty_else âś… No comment. Avoid empty else statements.
avoid_init_to_null âś… No comment. Don't explicitly initialize variables to null.
avoid_relative_lib_imports âś… No comment. Avoid relative imports for files in lib/.
avoid_return_types_on_setters âś… No comment. Avoid return types on setters.
avoid_shadowing_type_parameters âś… No comment. Avoid shadowing type parameters.
avoid_types_as_parameter_names âś… No comment. Avoid types as parameter names.
curly_braces_in_flow_control_structures âś… No comment. DO use curly braces for all flow control structures.
empty_catches âś… No comment. Avoid empty catch blocks.
empty_constructor_bodies âś… No comment. Use ; instead of {} for empty constructor bodies.
library_names âś… No comment. Name libraries using lowercase_with_underscores.
library_prefixes âś… No comment. Use lowercase_with_underscores when specifying a library prefix.
no_duplicate_case_values âś… No comment. Don't use more than one case with same value.
null_closures âś… No comment. Do not pass null as an argument where a closure is expected.
prefer_contains âś… No comment. Use contains for List and String instances.
prefer_equal_for_default_values âś… No comment. Use = to separate a named parameter from its default value.
prefer_is_empty âś… No comment. Use isEmpty for Iterables and Maps.
prefer_is_not_empty âś… No comment. Use isNotEmpty for Iterables and Maps.
prefer_iterable_whereType âś… No comment. Prefer to use whereType on iterable.
recursive_getters âś… No comment. Property getter recursively returns itself.
slash_for_doc_comments âś… No comment. Prefer using /// for doc comments.
type_init_formals âś… No comment. Don't type annotate initializing formals.
unawaited_futures âś… No comment. Future results in async function bodies must be awaited or marked unawaited using dart:async.
unnecessary_const âś… No comment. Avoid const keyword.
unnecessary_new âś… No comment. Unnecessary new keyword.
unnecessary_null_in_if_null_operators âś… No comment. Avoid using null in if null operators.
unrelated_type_equality_checks âś… No comment. Equality operator == invocation with references of unrelated types.
use_rethrow_when_possible âś… No comment. Use rethrow to rethrow a caught exception.
valid_regexps âś… No comment. Use valid regular expression syntax.
control_flow_in_finally âś… No comment. Avoid control flow in finally blocks.
empty_statements âś… No comment. Avoid empty statements.
prefer_final_locals âś… No comment. Prefer final for variable declarations if they are not reassigned.
throw_in_finally âś… No comment. Avoid throw in finally block.
await_only_futures âś… No comment. Await only futures.
cancel_subscriptions âś… No comment. Cancel instances of dart.async.StreamSubscription.
close_sinks âś… No comment. Close instances of dart.core.Sink.
hash_and_equals âś… No comment. Always override hashCode if overriding ==.
implementation_imports âś… No comment. Don't import implementation files from another package.
package_api_docs âś… No comment. Provide doc comments for all public APIs.
package_names âś… No comment. Use lowercase_with_underscores for package names.
package_prefixed_library_names âś… No comment. Prefix library names with the package name and a dot-separated path.
test_types_in_equals âś… No comment. Test type arguments in operator ==(Object other).
unnecessary_getters_setters âś… No comment. Avoid wrapping fields in getters and setters just to be "safe".
void_checks âś… No comment. Don't assign to void.
type_annotate_public_apis âś… No comment. Type annotate public APIs.
avoid_slow_async_io âś… No comment. Avoid slow async dart:io methods.
invariant_booleans ❌ Too many false positives. Conditions should not unconditionally evaluate to true or to false.
iterable_contains_unrelated_type âś… No comment. Invocation of Iterable.contains with references of unrelated types.
list_remove_unrelated_type âś… No comment. Invocation of remove with references of unrelated types.
literal_only_boolean_expressions âś… No comment. Boolean expression composed only with literals.
no_adjacent_strings_in_list âś… No comment. Don't use adjacent strings in list.
directives_ordering âś… No comment. Adhere to Effective Dart Guide directives sorting conventions.
only_throw_errors âś… No comment. Only throw instances of classes extending either Exception or Error.
prefer_asserts_in_initializer_lists âś… No comment. Prefer putting asserts in initializer lists.
prefer_const_constructors âś… No comment. Prefer const with constant constructors.
prefer_const_constructors_in_immutables âś… No comment. Prefer declaring const constructors on @immutable classes.
prefer_typing_uninitialized_variables âś… No comment. Prefer typing uninitialized variables and fields.
unnecessary_null_aware_assignments âś… No comment. Avoid null in null-aware assignment.
unnecessary_overrides âś… No comment. Don't override a method to do a super method invocation with the same parameters.
use_string_buffers âś… No comment. Use string buffers to compose strings.
use_full_hex_values_for_flutter_colors âś… No comment. Prefer an 8-digit hexadecimal integer(0xFFFFFFFF) to instantiate Color.
prefer_inlined_adds âś… No comment. Inline list item declarations where possible.
unnecessary_parenthesis âś… No comment. Unnecessary parentheses can be removed.
prefer_const_declarations âś… No comment. Prefer const over final for declarations.
prefer_null_aware_operators âś… No comment. Prefer using null aware operators.
always_put_required_named_parameters_first âś… No comment. Put required named parameters first.
avoid_catching_errors âś… No comment. Don't explicitly catch Error or types that implement it.
avoid_double_and_int_checks âś… No comment. Avoid double and int checks.
avoid_implementing_value_types âś… No comment. Don't implement classes that override ==.
avoid_js_rounded_ints âś… No comment. Avoid JavaScript rounded ints.
avoid_returning_null_for_future âś… No comment. Avoid returning null for Future.
avoid_returning_null_for_void âś… No comment. Avoid returning null for void.
avoid_returning_this âś… No comment. Avoid returning this from methods just to enable a fluent interface.
avoid_single_cascade_in_expression_statements âś… No comment. Avoid single cascade in expression statements.
avoid_unused_constructor_parameters âś… No comment. Avoid defining unused parameters in constructors.
avoid_void_async âś… No comment. Avoid async functions that return void.
join_return_with_assignment âś… No comment. Join return statement with assignment when possible.
parameter_assignments âś… No comment. Don't reassign references to parameters of functions or methods.
prefer_final_in_for_each âś… No comment. Prefer final in for-each loop variable if reference is not reassigned.
prefer_initializing_formals âś… No comment. Use initializing formals when possible.
provide_deprecation_message âś… No comment. Provide a deprecation message, via @Deprecated("message").
sort_pub_dependencies âś… No comment. Sort pub dependencies alphabetically.
sort_unnamed_constructors_first âś… No comment. Sort unnamed constructor declarations first.
unnecessary_await_in_return âś… No comment. Unnecessary await keyword in return.
unsafe_html âś… No comment. Avoid unsafe HTML APIs.
file_names âś… No comment. Name source files using lowercase_with_underscores.
cast_nullable_to_non_nullable âś… No comment. Don't cast a nullable value to a non nullable type.
exhaustive_cases âś… No comment. Define case clauses for all constants in enum-like classes.
prefer_relative_imports âś… No comment. Prefer relative imports for files in lib/.
tighten_type_of_initializing_formals âś… No comment. Tighten type of initializing formal.
avoid_dynamic_calls âś… No comment. Avoid method calls or property accesses on a "dynamic" target.
avoid_catches_without_on_clauses âś… No comment. Avoid catches without on clauses.
avoid_type_to_string âś… No comment. Avoid .toString() in production code since results may be minified.
avoid_web_libraries_in_flutter âś… No comment. Avoid using web-only libraries outside Flutter web plugin packages.
no_default_cases âś… No comment. No default cases.
no_logic_in_create_state âś… No comment. Don't put any logic in createState.
overridden_fields âś… No comment. Don't override fields.
prefer_asserts_with_message âś… No comment. Prefer asserts with message.
prefer_mixin âś… No comment. Prefer using mixins.
prefer_null_aware_method_calls âś… No comment. Prefer null aware method calls.
sized_box_for_whitespace ❌ Disabled because this rule decreases productivity by disturbing flow. SizedBox for whitespace.
unnecessary_nullable_for_final_variable_declarations âś… No comment. Use a non-nullable type for a final variable initialized with a non-nullable value.
unnecessary_statements âś… No comment. Avoid using unnecessary statements.
use_build_context_synchronously âś… No comment. Do not use BuildContexts across async gaps.
use_is_even_rather_than_modulo âś… No comment. Prefer intValue.isOdd/isEven instead of checking the result of % 2.
comment_references âś… No comment. Only reference in scope identifiers in doc comments.
noop_primitive_operations âś… No comment. Noop primitive operations.
prefer_final_parameters âś… This makes it easier to refactor code. Prefer final for parameter declarations if they are not reassigned.
avoid_multiple_declarations_per_line ❌ Has false positives. Don't declare multiple variables on a single line.
avoid_private_typedef_functions ❌ Too pedantic. Avoid private typedef functions.
avoid_final_parameters ❌ No comment. Avoid final for parameter declarations.
avoid_returning_null ❌ Obsolete because of NNBD. Avoid returning null from members whose return type is bool, double, int, or num.
prefer_if_elements_to_conditional_expressions ❌ Disabled because this rule decreases productivity by disturbing flow. Prefer if elements to conditional expressions where possible.
prefer_foreach ❌ Disabled because this rule decreases productivity by disturbing flow. Use forEach to only apply a function to all the elements.
always_require_non_null_named_parameters ❌ Obsolete because of NNBD. Specify @required on named parameters without defaults.
prefer_void_to_null ❌ Obsolete because of NNBD. Don't use the Null type, unless you are positive that you don't want void.
camel_case_extensions ❌ Disabled because an underscore is useful to represent domains in generated code. Name extensions using UpperCamelCase.
omit_local_variable_types ❌ Too pedantic. Omit type annotations for local variables.
prefer_adjacent_string_concatenation ❌ No comment. Use adjacent strings to concatenate string literals.
prefer_single_quotes ❌ Too pedantic. Only use double quotes for strings containing single quotes.
always_put_control_body_on_new_line ❌ Too pedantic. Separate the control structure expression from its statement.
always_specify_types ❌ Too pedantic. Specify type annotations.
avoid_as ❌ Too pedantic. Avoid using as.
unnecessary_this ❌ Too many false positives. Don't access members with this unless avoiding shadowing.
prefer_bool_in_asserts ❌ No comment. Prefer using a boolean as the assert condition.
use_to_and_as_if_applicable ❌ Too pedantic. Start the name of the method with to/_to or as/_as if applicable.
sort_child_properties_last ❌ Too pedantic. Sort child properties last in widget instance creations.
prefer_function_declarations_over_variables ❌ With variables, the return type can be omitted safely which is useful in FP-style code. Use a function declaration to bind a function to a name.
always_use_package_imports ❌ Prefer relative imports Avoid relative imports for files in lib/.
avoid_annotating_with_dynamic ❌ It is better to always be explicit about dynamic. Avoid annotating with dynamic when not required.
avoid_bool_literals_in_conditional_expressions ❌ bool literals in conditional expressions make it easier to reason about them. X ? Y : Z is easier for humans than e.g. X
avoid_classes_with_only_static_members ❌ Classes with static members don't pollute the global namespace. Avoid defining a class that contains only static members.
avoid_escaping_inner_quotes ❌ Too pedantic. Avoid escaping inner quotes by converting surrounding quotes.
avoid_function_literals_in_foreach_calls ❌ Disabled because this rule decreases productivity by disturbing flow. Avoid using forEach with a function literal.
avoid_equals_and_hash_code_on_mutable_classes ❌ @immutable depends on meta. Avoid overloading operator == and hashCode on classes not marked @immutable.
avoid_positional_boolean_parameters ❌ Too pedantic. Avoid positional boolean parameters.
avoid_print ❌ Too pedantic. Avoid print calls in production code.
avoid_redundant_argument_values ❌ Too pedantic. Avoid redundant argument values.
avoid_renaming_method_parameters ❌ Too pedantic. Don't rename parameters of overridden methods.
avoid_setters_without_getters ❌ Too pedantic. Avoid setters without getters.
avoid_types_on_closure_parameters ❌ Too pedantic. Avoid annotating types for function expression parameters.
avoid_unnecessary_containers ❌ Disabled because this rule decreases productivity by disturbing flow. Avoid unnecessary containers.
camel_case_types ❌ Underscores can be useful in generated code. Name types using UpperCamelCase.
cascade_invocations ❌ Too pedantic. Cascade consecutive method invocations on the same reference.
constant_identifier_names ❌ Too pedantic. Prefer using lowerCamelCase for constant names.
deprecated_consistency ❌ Too pedantic. Missing deprecated annotation.
diagnostic_describe_all_properties ❌ Too pedantic. DO reference all public properties in debug methods.
flutter_style_todos ❌ Too pedantic. Use Flutter TODO format: // TODO(username): message, https://URL-to-issue.
do_not_use_environment ❌ Too pedantic. Do not use environment declared variables.
leading_newlines_in_multiline_strings ❌ Too pedantic. Start multiline strings with a newline.
library_private_types_in_public_api ❌ Too pedantic. Avoid using private types in public APIs.
lines_longer_than_80_chars ❌ Too pedantic. Avoid lines longer than 80 characters.
missing_whitespace_between_adjacent_strings ❌ Too pedantic. Missing whitespace between adjacent strings.
non_constant_identifier_names ❌ Too pedantic. Name non-constant identifiers using lowerCamelCase.
no_runtimeType_toString ❌ Too pedantic. Avoid calling toString() on runtimeType.
one_member_abstracts ❌ Too pedantic. Avoid defining a one-member abstract class when a simple function will do.
prefer_const_literals_to_create_immutables ❌ Too pedantic. Prefer const literals as parameters of constructors on @immutable classes.
prefer_constructors_over_static_methods ❌ Too pedantic. Prefer defining constructors instead of static methods to create instances.
prefer_double_quotes ❌ Too pedantic. Prefer double quotes where they won't require escape sequences.
prefer_expression_function_bodies ❌ Too pedantic. Use => for short members whose body is a single return statement.
prefer_interpolation_to_compose_strings ❌ Too pedantic. Use interpolation to compose strings and values.
prefer_int_literals ❌ Too pedantic. Prefer int literals over double literals.
prefer_is_not_operator ❌ Too pedantic. Prefer is! operator.
public_member_api_docs ❌ Too pedantic. Document all public members.
sort_constructors_first ❌ Too pedantic. Sort constructor declarations before other members.
super_goes_last ❌ Deprecated Place the super call last in a constructor initialization list.
unnecessary_brace_in_string_interps ❌ Too pedantic. Avoid using braces in interpolation when not needed.
unnecessary_final ❌ final tells the reader 'This variable won't be mutated.' Don't use final for local variables.
unnecessary_lambdas ❌ In rare cases it is possible for this to introduce bugs. Don't create a lambda when a tear-off will do.
unnecessary_null_checks ❌ Too pedantic. Unnecessary null checks.
unnecessary_raw_strings ❌ Too pedantic. Unnecessary raw string.
unnecessary_string_escapes ❌ Too pedantic. Remove unnecessary backslashes in strings.
unnecessary_string_interpolations ❌ Too pedantic. Unnecessary string interpolation.
use_if_null_to_convert_nulls_to_bools ❌ Too pedantic. Use if-null operators to convert nulls to bools.
use_key_in_widget_constructors ❌ Too pedantic. Use key in widget constructors.
use_late_for_private_fields_and_variables ❌ Too pedantic. Use late for private members with a non-nullable type.
use_named_constants ❌ There could be multiple constants with the same value but different identifiers. Use predefined named constants.
use_raw_strings ❌ Too pedantic. Use raw string to avoid escapes.
use_setters_to_change_properties ❌ Too pedantic. Use a setter for operations that conceptually change a property.
null_check_on_nullable_type_parameter ❌ Too many false positives. Don't use null check on a potentially nullable type parameter.
require_trailing_commas ❌ Too pedantic. Use trailing commas for all function calls and declarations.
avoid_field_initializers_in_const_classes ❌ Too pedantic. Avoid field initializers in const classes.
conditional_uri_does_not_exist âś… No comment. Missing conditional import.
depend_on_referenced_packages ❌ Disabled because this rule decreases productivity by disturbing flow. Depend on referenced packages.
eol_at_end_of_file ❌ Too pedantic. Put a single newline at end of file.
no_leading_underscores_for_library_prefixes ❌ Too pedantic. Avoid leading underscores for library prefixes.
no_leading_underscores_for_local_identifiers ❌ Too pedantic. Avoid leading underscores for local identifiers.
secure_pubspec_urls âś… No comment. Use secure urls in pubspec.yaml.
sized_box_shrink_expand ❌ Disabled because this rule decreases productivity by disturbing flow. Use SizedBox shrink and expand named constructors.
unnecessary_constructor_name âś… No comment. Unnecessary .new constructor name.
unnecessary_late âś… No comment. Don't specify the late modifier when it is not needed.
use_decorated_box ❌ Disabled because this rule decreases productivity by disturbing flow. Use DecoratedBox.
use_test_throws_matchers ❌ Too pedantic. Use throwsA matcher instead of fail().
use_colored_box âś… No comment. Use ColoredBox.
use_enums âś… No comment. Use enums rather than classes that behave like enums.
use_super_parameters ❌ Super parameters make inheritance more convenient, but inheritance should be avoided and composition should be preferred. Even if you need inheritance, you should declare an interface and mixins, and not use super constructors. Use super-initializer parameters where possible.
unnecessary_library_directive ❌ Too pedantic. Avoid library directives unless they have documentation comments or annotations.
collection_methods_unrelated_type âś… No comment. Invocation of various collection methods with arguments of unrelated types.
combinators_ordering ❌ Too pedantic. Sort combinator names alphabetically.
dangling_library_doc_comments ❌ Too pedantic. Attach library doc comments to library directives.
discarded_futures âś… No comment. Don't invoke asynchronous functions in non-async blocks.
implicit_call_tearoffs âś… No comment. Explicitly tear-off call methods when using an object as a Function.
library_annotations ❌ Too pedantic. Attach library annotations to library directives.
unnecessary_null_aware_operator_on_extension_on_nullable âś… No comment. Unnecessary null aware operator on extension on a nullable type.
unnecessary_to_list_in_spreads âś… No comment. Unnecessary toList() in spreads.
unreachable_from_main ❌ Too pedantic. Unreachable top-level members in executable libraries.
use_string_in_part_of_directives âś… No comment. Use string in part of directives.

And here's the whole analysis options file:

# ===============================================================
# ======= This file was generated by extra_pedantic_extra =======
# ===============================================================
analyzer:
  # strong-mode:
    # https://github.com/dart-lang/language/tree/master/resources/type-system
    # implicit-casts: false
    # implicit-dynamic: false
  language:
    # https://github.com/dart-lang/language/tree/master/resources/type-system
    strict-inference: true
    strict-raw-types: true
    strict-casts: true
  # enable-experiment:
    # https://github.com/dart-lang/sdk/blob/main/tools/experimental_features.yaml

linter:
  # All rules: https://github.com/dart-lang/linter/blob/master/lib/src/rules.dart
  rules:
    - unnecessary_parenthesis # No comment.
    - annotate_overrides # No comment.
    - avoid_null_checks_in_equality_operators # No comment.
    - prefer_collection_literals # No comment.
    - prefer_conditional_assignment # No comment.
    - prefer_final_fields # No comment.
    - prefer_for_elements_to_map_fromIterable # No comment.
    - prefer_generic_function_type_aliases # No comment.
    - prefer_if_null_operators # No comment.
    - prefer_spread_collections # No comment.
    - use_function_type_syntax_for_parameters # No comment.
    - avoid_empty_else # No comment.
    - avoid_init_to_null # No comment.
    - avoid_relative_lib_imports # No comment.
    - avoid_return_types_on_setters # No comment.
    - avoid_shadowing_type_parameters # No comment.
    - avoid_types_as_parameter_names # No comment.
    - curly_braces_in_flow_control_structures # No comment.
    - empty_catches # No comment.
    - empty_constructor_bodies # No comment.
    - library_names # No comment.
    - library_prefixes # No comment.
    - no_duplicate_case_values # No comment.
    - null_closures # No comment.
    - prefer_contains # No comment.
    - prefer_equal_for_default_values # No comment.
    - prefer_is_empty # No comment.
    - prefer_is_not_empty # No comment.
    - prefer_iterable_whereType # No comment.
    - recursive_getters # No comment.
    - slash_for_doc_comments # No comment.
    - type_init_formals # No comment.
    - unawaited_futures # No comment.
    - unnecessary_const # No comment.
    - unnecessary_new # No comment.
    - unnecessary_null_in_if_null_operators # No comment.
    - unrelated_type_equality_checks # No comment.
    - use_rethrow_when_possible # No comment.
    - valid_regexps # No comment.
    - control_flow_in_finally # No comment.
    - empty_statements # No comment.
    - prefer_final_locals # No comment.
    - throw_in_finally # No comment.
    - await_only_futures # No comment.
    - cancel_subscriptions # No comment.
    - close_sinks # No comment.
    - hash_and_equals # No comment.
    - implementation_imports # No comment.
    - package_api_docs # No comment.
    - package_names # No comment.
    - package_prefixed_library_names # No comment.
    - test_types_in_equals # No comment.
    - unnecessary_getters_setters # No comment.
    - void_checks # No comment.
    - type_annotate_public_apis # No comment.
    - avoid_slow_async_io # No comment.
    - iterable_contains_unrelated_type # No comment.
    - list_remove_unrelated_type # No comment.
    - literal_only_boolean_expressions # No comment.
    - no_adjacent_strings_in_list # No comment.
    - directives_ordering # No comment.
    - only_throw_errors # No comment.
    - prefer_asserts_in_initializer_lists # No comment.
    - prefer_const_constructors # No comment.
    - prefer_const_constructors_in_immutables # No comment.
    - prefer_typing_uninitialized_variables # No comment.
    - unnecessary_null_aware_assignments # No comment.
    - unnecessary_overrides # No comment.
    - use_string_buffers # No comment.
    - use_full_hex_values_for_flutter_colors # No comment.
    - prefer_inlined_adds # No comment.
    - always_declare_return_types # No comment.
    - prefer_const_declarations # No comment.
    - prefer_null_aware_operators # No comment.
    - always_put_required_named_parameters_first # No comment.
    - avoid_catching_errors # No comment.
    - avoid_double_and_int_checks # No comment.
    - avoid_implementing_value_types # No comment.
    - avoid_js_rounded_ints # No comment.
    - avoid_returning_null_for_future # No comment.
    - avoid_returning_null_for_void # No comment.
    - avoid_returning_this # No comment.
    - avoid_single_cascade_in_expression_statements # No comment.
    - avoid_unused_constructor_parameters # No comment.
    - avoid_void_async # No comment.
    - join_return_with_assignment # No comment.
    - parameter_assignments # No comment.
    - prefer_final_in_for_each # No comment.
    - prefer_initializing_formals # No comment.
    - provide_deprecation_message # No comment.
    - sort_pub_dependencies # No comment.
    - sort_unnamed_constructors_first # No comment.
    - unnecessary_await_in_return # No comment.
    - unsafe_html # No comment.
    - file_names # No comment.
    - cast_nullable_to_non_nullable # No comment.
    - exhaustive_cases # No comment.
    - prefer_relative_imports # No comment.
    - tighten_type_of_initializing_formals # No comment.
    - avoid_dynamic_calls # No comment.
    - avoid_catches_without_on_clauses # No comment.
    - avoid_type_to_string # No comment.
    - avoid_web_libraries_in_flutter # No comment.
    - no_default_cases # No comment.
    - no_logic_in_create_state # No comment.
    - overridden_fields # No comment.
    - prefer_asserts_with_message # No comment.
    - prefer_mixin # No comment.
    - prefer_null_aware_method_calls # No comment.
    - unnecessary_nullable_for_final_variable_declarations # No comment.
    - unnecessary_statements # No comment.
    - use_build_context_synchronously # No comment.
    - use_is_even_rather_than_modulo # No comment.
    - comment_references # No comment.
    - noop_primitive_operations # No comment.
    - prefer_final_parameters # This makes it easier to refactor code.
    - unnecessary_null_aware_operator_on_extension_on_nullable # No comment.
    - unnecessary_to_list_in_spreads # No comment.
    - implicit_call_tearoffs # No comment.
    - discarded_futures # No comment.
    - collection_methods_unrelated_type # No comment.
    - use_enums # No comment.
    - use_colored_box # No comment.
    - unnecessary_late # No comment.
    - unnecessary_constructor_name # No comment.
    - secure_pubspec_urls # No comment.
    - conditional_uri_does_not_exist # No comment.
    - use_string_in_part_of_directives # No comment.
    # - prefer_adjacent_string_concatenation # No comment.
    # - prefer_single_quotes # Too pedantic.
    # - always_put_control_body_on_new_line # Too pedantic.
    # - always_specify_types # Too pedantic.
    # - avoid_as # Too pedantic.
    # - unnecessary_this # Too many false positives.
    # - prefer_bool_in_asserts # No comment.
    # - use_to_and_as_if_applicable # Too pedantic.
    # - sort_child_properties_last # Too pedantic.
    # - prefer_function_declarations_over_variables # With variables, the return type can be omitted safely which is useful in FP-style code.
    # - always_use_package_imports # Prefer relative imports
    # - avoid_annotating_with_dynamic # It is better to always be explicit about dynamic.
    # - avoid_bool_literals_in_conditional_expressions # bool literals in conditional expressions make it easier to reason about them. X ? Y : Z is easier for humans than e.g. X || Z
    # - avoid_classes_with_only_static_members # Classes with static members don't pollute the global namespace.
    # - avoid_escaping_inner_quotes # Too pedantic.
    # - avoid_function_literals_in_foreach_calls # Disabled because this rule decreases productivity by disturbing flow.
    # - omit_local_variable_types # Too pedantic.
    # - avoid_positional_boolean_parameters # Too pedantic.
    # - avoid_print # Too pedantic.
    # - avoid_redundant_argument_values # Too pedantic.
    # - avoid_renaming_method_parameters # Too pedantic.
    # - avoid_setters_without_getters # Too pedantic.
    # - avoid_types_on_closure_parameters # Too pedantic.
    # - avoid_unnecessary_containers # Disabled because this rule decreases productivity by disturbing flow.
    # - camel_case_types # Underscores can be useful in generated code.
    # - cascade_invocations # Too pedantic.
    # - constant_identifier_names # Too pedantic.
    # - deprecated_consistency # Too pedantic.
    # - diagnostic_describe_all_properties # Too pedantic.
    # - flutter_style_todos # Too pedantic.
    # - do_not_use_environment # Too pedantic.
    # - leading_newlines_in_multiline_strings # Too pedantic.
    # - library_private_types_in_public_api # Too pedantic.
    # - lines_longer_than_80_chars # Too pedantic.
    # - missing_whitespace_between_adjacent_strings # Too pedantic.
    # - non_constant_identifier_names # Too pedantic.
    # - no_runtimeType_toString # Too pedantic.
    # - one_member_abstracts # Too pedantic.
    # - prefer_const_literals_to_create_immutables # Too pedantic.
    # - prefer_constructors_over_static_methods # Too pedantic.
    # - prefer_double_quotes # Too pedantic.
    # - prefer_expression_function_bodies # Too pedantic.
    # - prefer_interpolation_to_compose_strings # Too pedantic.
    # - prefer_int_literals # Too pedantic.
    # - prefer_is_not_operator # Too pedantic.
    # - public_member_api_docs # Too pedantic.
    # - sort_constructors_first # Too pedantic.
    # - super_goes_last # Deprecated
    # - unnecessary_brace_in_string_interps # Too pedantic.
    # - unnecessary_final # final tells the reader 'This variable won't be mutated.'
    # - unnecessary_lambdas # In rare cases it is possible for this to introduce bugs.
    # - unnecessary_null_checks # Too pedantic.
    # - unnecessary_raw_strings # Too pedantic.
    # - unnecessary_string_escapes # Too pedantic.
    # - unnecessary_string_interpolations # Too pedantic.
    # - use_if_null_to_convert_nulls_to_bools # Too pedantic.
    # - use_key_in_widget_constructors # Too pedantic.
    # - use_late_for_private_fields_and_variables # Too pedantic.
    # - use_named_constants # There could be multiple constants with the same value but different identifiers.
    # - use_raw_strings # Too pedantic.
    # - use_setters_to_change_properties # Too pedantic.
    # - null_check_on_nullable_type_parameter # Too many false positives.
    # - require_trailing_commas # Too pedantic.
    # - avoid_field_initializers_in_const_classes # Too pedantic.
    # - camel_case_extensions # Disabled because an underscore is useful to represent domains in generated code.
    # - depend_on_referenced_packages # Disabled because this rule decreases productivity by disturbing flow.
    # - eol_at_end_of_file # Too pedantic.
    # - no_leading_underscores_for_library_prefixes # Too pedantic.
    # - no_leading_underscores_for_local_identifiers # Too pedantic.
    # - prefer_void_to_null # Obsolete because of NNBD.
    # - sized_box_shrink_expand # Disabled because this rule decreases productivity by disturbing flow.
    # - always_require_non_null_named_parameters # Obsolete because of NNBD.
    # - prefer_foreach # Disabled because this rule decreases productivity by disturbing flow.
    # - use_decorated_box # Disabled because this rule decreases productivity by disturbing flow.
    # - use_test_throws_matchers # Too pedantic.
    # - prefer_if_elements_to_conditional_expressions # Disabled because this rule decreases productivity by disturbing flow.
    # - avoid_returning_null # Obsolete because of NNBD.
    # - use_super_parameters # Super parameters make inheritance more convenient, but inheritance should be avoided and composition should be preferred. Even if you need inheritance, you should declare an interface and mixins, and not use super constructors.
    # - unnecessary_library_directive # Too pedantic.
    # - avoid_final_parameters # No comment.
    # - combinators_ordering # Too pedantic.
    # - dangling_library_doc_comments # Too pedantic.
    # - avoid_private_typedef_functions # Too pedantic.
    # - avoid_multiple_declarations_per_line # Has false positives.
    # - library_annotations # Too pedantic.
    # - sized_box_for_whitespace # Disabled because this rule decreases productivity by disturbing flow.
    # - invariant_booleans # Too many false positives.
    # - unreachable_from_main # Too pedantic.
    # - avoid_equals_and_hash_code_on_mutable_classes # @immutable depends on meta.