at main 5.6 kB view raw
1# Enhanced analysis_options.yaml with stricter rules 2# Recommended for production Flutter apps 3 4include: package:flutter_lints/flutter.yaml 5 6analyzer: 7 # Treat missing required parameters as errors 8 errors: 9 missing_required_param: error 10 missing_return: error 11 invalid_annotation_target: ignore 12 13 exclude: 14 - '**/*.g.dart' 15 - '**/*.freezed.dart' 16 - '**/generated/**' 17 - 'packages/atproto_oauth_flutter/**' 18 19linter: 20 rules: 21 # Error rules - these prevent bugs 22 - avoid_empty_else 23 - avoid_print 24 - avoid_relative_lib_imports 25 - avoid_returning_null_for_future 26 - avoid_slow_async_io 27 - avoid_types_as_parameter_names 28 - cancel_subscriptions 29 - close_sinks 30 - comment_references 31 - literal_only_boolean_expressions 32 - no_adjacent_strings_in_list 33 - test_types_in_equals 34 - throw_in_finally 35 - unnecessary_statements 36 - unrelated_type_equality_checks 37 - unsafe_html 38 - valid_regexps 39 40 # Style rules - these improve code quality 41 - always_declare_return_types 42 - always_put_control_body_on_new_line 43 - always_require_non_null_named_parameters 44 - annotate_overrides 45 - avoid_annotating_with_dynamic 46 - avoid_bool_literals_in_conditional_expressions 47 - avoid_catches_without_on_clauses 48 - avoid_catching_errors 49 - avoid_double_and_int_checks 50 - avoid_field_initializers_in_const_classes 51 - avoid_function_literals_in_foreach_calls 52 - avoid_implementing_value_types 53 - avoid_js_rounded_ints 54 - avoid_null_checks_in_equality_operators 55 - avoid_positional_boolean_parameters 56 - avoid_private_typedef_functions 57 - avoid_redundant_argument_values 58 - avoid_renaming_method_parameters 59 - avoid_return_types_on_setters 60 - avoid_returning_null 61 - avoid_returning_null_for_void 62 - avoid_setters_without_getters 63 - avoid_shadowing_type_parameters 64 - avoid_single_cascade_in_expression_statements 65 - avoid_unnecessary_containers 66 - avoid_unused_constructor_parameters 67 - avoid_void_async 68 - await_only_futures 69 - camel_case_extensions 70 - camel_case_types 71 - cascade_invocations 72 - cast_nullable_to_non_nullable 73 - constant_identifier_names 74 - curly_braces_in_flow_control_structures 75 - directives_ordering 76 - empty_catches 77 - empty_constructor_bodies 78 - exhaustive_cases 79 - file_names 80 - implementation_imports 81 - join_return_with_assignment 82 - leading_newlines_in_multiline_strings 83 - library_names 84 - library_prefixes 85 - lines_longer_than_80_chars # 80-char line limit 86 - missing_whitespace_between_adjacent_strings 87 - no_runtimeType_toString 88 - non_constant_identifier_names 89 - null_check_on_nullable_type_parameter 90 - null_closures 91 - omit_local_variable_types 92 - one_member_abstracts 93 - only_throw_errors 94 - overridden_fields 95 - package_api_docs 96 - package_names 97 - package_prefixed_library_names 98 - parameter_assignments 99 - prefer_adjacent_string_concatenation 100 - prefer_asserts_in_initializer_lists 101 - prefer_collection_literals 102 - prefer_conditional_assignment 103 - prefer_const_constructors 104 - prefer_const_constructors_in_immutables 105 - prefer_const_declarations 106 - prefer_const_literals_to_create_immutables 107 - prefer_constructors_over_static_methods 108 - prefer_contains 109 - prefer_equal_for_default_values 110 - prefer_final_fields 111 - prefer_final_in_for_each 112 - prefer_final_locals 113 - prefer_for_elements_to_map_fromIterable 114 - prefer_foreach 115 - prefer_function_declarations_over_variables 116 - prefer_generic_function_type_aliases 117 - prefer_if_elements_to_conditional_expressions 118 - prefer_if_null_operators 119 - prefer_initializing_formals 120 - prefer_inlined_adds 121 - prefer_int_literals 122 - prefer_interpolation_to_compose_strings 123 - prefer_is_empty 124 - prefer_is_not_empty 125 - prefer_is_not_operator 126 - prefer_iterable_whereType 127 - prefer_null_aware_operators 128 - prefer_single_quotes # Use 'string' instead of "string" 129 - prefer_spread_collections 130 - prefer_typing_uninitialized_variables 131 - prefer_void_to_null 132 - provide_deprecation_message 133 - recursive_getters 134 - require_trailing_commas # Trailing commas for better diffs 135 - sized_box_for_whitespace 136 - slash_for_doc_comments 137 - sort_child_properties_last 138 - sort_constructors_first 139 - sort_unnamed_constructors_first 140 - tighten_type_of_initializing_formals 141 - type_annotate_public_apis 142 - unawaited_futures 143 - unnecessary_await_in_return 144 - unnecessary_brace_in_string_interps 145 - unnecessary_const 146 - unnecessary_getters_setters 147 - unnecessary_lambdas 148 - unnecessary_new 149 - unnecessary_null_aware_assignments 150 - unnecessary_null_checks 151 - unnecessary_null_in_if_null_operators 152 - unnecessary_nullable_for_final_variable_declarations 153 - unnecessary_overrides 154 - unnecessary_parenthesis 155 - unnecessary_raw_strings 156 - unnecessary_string_escapes 157 - unnecessary_string_interpolations 158 - unnecessary_this 159 - use_enums 160 - use_full_hex_values_for_flutter_colors 161 - use_function_type_syntax_for_parameters 162 - use_if_null_to_convert_nulls_to_bools 163 - use_is_even_rather_than_modulo 164 - use_key_in_widget_constructors 165 - use_late_for_private_fields_and_variables 166 - use_named_constants 167 - use_raw_strings 168 - use_rethrow_when_possible 169 - use_setters_to_change_properties 170 - use_string_buffers 171 - use_test_throws_matchers 172 - use_to_and_as_if_applicable 173 - void_checks