Skip to content

refactor(crashlytics): migrate to nnbd #4715

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Jan 22, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
40c5b90
chore(firebase_crashytics): add linting rules
russellwheatley Jan 18, 2021
626c579
chore(firebase_crashlytics): fix lint issues
russellwheatley Jan 18, 2021
c554ae4
refactor(firebase_crashlytics): platform_interface nnbd migration
russellwheatley Jan 19, 2021
4e20948
refactor(firebase_crashlytics): nnbd migration for main pkg
russellwheatley Jan 20, 2021
02aa3e9
tests(firebase_crashlytics): removed unnecessary tests
russellwheatley Jan 20, 2021
7657949
chore(firebase_crashlytics): update changelog
russellwheatley Jan 20, 2021
ba83f01
chore(firebase_crashlytics): update example linting
russellwheatley Jan 20, 2021
1315537
format: run formatter
russellwheatley Jan 20, 2021
d498d19
chore(firebase_crashlytics): make prop nullable
russellwheatley Jan 20, 2021
07e9b30
chore(firebase_crashlytics): rm todo & 'late' nnbd work
russellwheatley Jan 20, 2021
4e4897c
fix(firebase_crashlytics): regex bug
russellwheatley Jan 20, 2021
cf1b569
tests(firebase_crashlytics): fix failing tests
russellwheatley Jan 20, 2021
ab3f3e0
chore(firebase_crashlytics): remove 'late' keyword
russellwheatley Jan 20, 2021
4f5e225
tests(crashlytics): delete unnecessary tests
russellwheatley Jan 20, 2021
6c54302
format: run formatter
russellwheatley Jan 20, 2021
63438ad
tests(crashlytics): imrpve test
russellwheatley Jan 21, 2021
ad3e5a4
chore(crashlytics): PR feedback update
russellwheatley Jan 21, 2021
bc6c02b
tests(crashlytics): rm unnecessary test
russellwheatley Jan 21, 2021
32a5136
tests(crashlytics): wrong return type
russellwheatley Jan 21, 2021
70d4988
chore(crashlytics): stackTrace optional
russellwheatley Jan 21, 2021
ca13ca5
chore(crashlytics): pr review. update exceptions
russellwheatley Jan 21, 2021
5e8b021
tests(crashlytics): wrong return type
russellwheatley Jan 21, 2021
16451e8
Merge branch 'master' into @russell/crashlytics-nnbd
russellwheatley Jan 21, 2021
1e08163
chore(crashlytics): nnbd dependency bumps
russellwheatley Jan 21, 2021
beb489a
chore(crashlytics): revert test version
russellwheatley Jan 21, 2021
046cbae
tests(crashlytics): removed broken test
russellwheatley Jan 21, 2021
0e548ac
format: run formatter
russellwheatley Jan 21, 2021
2c5fca3
Merge branch 'master' into @russell/crashlytics-nnbd
Salakar Jan 22, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 184 additions & 0 deletions packages/firebase_crashlytics/all_lint_rules.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# in the LICENSE file.

linter:
rules:
- always_declare_return_types
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_require_non_null_named_parameters
- always_specify_types
- always_use_package_imports
- annotate_overrides
- avoid_annotating_with_dynamic
- avoid_as
- avoid_bool_literals_in_conditional_expressions
- avoid_catches_without_on_clauses
- avoid_catching_errors
- avoid_classes_with_only_static_members
- avoid_double_and_int_checks
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_function_literals_in_foreach_calls
- avoid_implementing_value_types
- avoid_init_to_null
- avoid_js_rounded_ints
- avoid_null_checks_in_equality_operators
- avoid_positional_boolean_parameters
- avoid_print
- avoid_private_typedef_functions
- avoid_redundant_argument_values
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_returning_this
- 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
- avoid_unnecessary_containers
- avoid_unused_constructor_parameters
- avoid_void_async
- avoid_web_libraries_in_flutter
- await_only_futures
- camel_case_extensions
- camel_case_types
- cancel_subscriptions
- cascade_invocations
- cast_nullable_to_non_nullable
- close_sinks
- comment_references
- constant_identifier_names
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- diagnostic_describe_all_properties
- directives_ordering
- do_not_use_environment
- empty_catches
- empty_constructor_bodies
- empty_statements
- exhaustive_cases
- file_names
- flutter_style_todos
- hash_and_equals
- implementation_imports
- invariant_booleans
- iterable_contains_unrelated_type
- join_return_with_assignment
- leading_newlines_in_multiline_strings
- library_names
- library_prefixes
- lines_longer_than_80_chars
- list_remove_unrelated_type
- literal_only_boolean_expressions
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_default_cases
- no_duplicate_case_values
- no_logic_in_create_state
- no_runtimeType_toString
- non_constant_identifier_names
- null_check_on_nullable_type_parameter
- null_closures
- omit_local_variable_types
- one_member_abstracts
- only_throw_errors
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- parameter_assignments
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_asserts_with_message
- 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
- prefer_contains
- prefer_double_quotes
- prefer_equal_for_default_values
- prefer_expression_function_bodies
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
- 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
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_iterable_whereType
- prefer_mixin
- 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
- recursive_getters
- sized_box_for_whitespace
- slash_for_doc_comments
- sort_child_properties_last
- sort_constructors_first
- sort_pub_dependencies
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
- type_annotate_public_apis
- type_init_formals
- unawaited_futures
- unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_final
- unnecessary_getters_setters
- unnecessary_lambdas
- 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
- unnecessary_statements
- unnecessary_string_escapes
- unnecessary_string_interpolations
- unnecessary_this
- unrelated_type_equality_checks
- unsafe_html
- use_full_hex_values_for_flutter_colors
- use_function_type_syntax_for_parameters
- use_is_even_rather_than_modulo
- use_key_in_widget_constructors
- use_late_for_private_fields_and_variables
- use_raw_strings
- use_rethrow_when_possible
- use_setters_to_change_properties
- use_string_buffers
- use_to_and_as_if_applicable
- valid_regexps
- void_checks
92 changes: 92 additions & 0 deletions packages/firebase_crashlytics/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# in the LICENSE file.

include: all_lint_rules.yaml
analyzer:
# TODO(rrousselGit): disable implicit-cast/implicit-dynamic
errors:
# Otherwise cause the import of all_lint_rules to warn because of some rules conflicts.
# We explicitly enabled even conflicting rules and are fixing the conflict
# in this file
included_file_warning: ignore

linter:
rules:
## Disabled rules because the repository doesn't respect them (yet)

always_put_control_body_on_new_line: false
comment_references: false
prefer_constructors_over_static_methods: false
prefer_final_fields: false
prefer_final_locals: false
omit_local_variable_types: false
avoid_equals_and_hash_code_on_mutable_classes: false

#############

# Personal preference. I don't find it more readable
cascade_invocations: false

# Conflicts with `prefer_single_quotes`
# Single quotes are easier to type and don't compromise on readability.
prefer_double_quotes: false

# Conflicts with `omit_local_variable_types` and other rules.
# As per Dart guidelines, we want to avoid unnecessary types to make the code
# more readable.
# See https://dart.dev/guides/language/effective-dart/design#avoid-type-annotating-initialized-local-variables
always_specify_types: false

# Incompatible with `prefer_final_locals`
# Having immutable local variables makes larger functions more predictible
# so we will use `prefer_final_locals` instead.
unnecessary_final: false

# Not quite suitable for Flutter, which may have a `build` method with a single
# return, but that return is still complex enough that a "body" is worth it.
prefer_expression_function_bodies: false

# Conflicts with the convention used by flutter, which puts `Key key`
# and `@required Widget child` last.
always_put_required_named_parameters_first: false

# `as` is not that bad (especially with the upcoming non-nullable types).
# Explicit exceptions is better than implicit exceptions.
avoid_as: false

# This project doesn't use Flutter-style todos
flutter_style_todos: false

# There are situations where we voluntarily want to catch everything,
# especially as a library.
avoid_catches_without_on_clauses: false

# Boring as it sometimes force a line of 81 characters to be split in two.
# As long as we try to respect that 80 characters limit, going slightly
# above is fine.
lines_longer_than_80_chars: false

# Conflicts with disabling `implicit-dynamic`
avoid_annotating_with_dynamic: false

# conflicts with `prefer_relative_imports`
always_use_package_imports: false

# Disabled for now until we have NNBD as it otherwise conflicts with `missing_return`
no_default_cases: false

# False positive, null checks don't need a message
prefer_asserts_with_message: false

# Cumbersome with `context.select`
avoid_types_on_closure_parameters: false

# Too many false positive (builders)
diagnostic_describe_all_properties: false

# false positives (setter-like functions)
avoid_positional_boolean_parameters: false

# Does not apply to providers
prefer_const_constructors_in_immutables: false
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.4.1-nullsafety.0

- **REFACTOR**: migrate to NNBD.

## 0.4.0+1

- **REFACTOR**: updated crashlytics e2e test library.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# in the LICENSE file.

include: ../../analysis_options.yaml

linter:
rules:
public_member_api_docs: false
avoid_print: false
Loading