dart-code-checker / dart-code-metrics

Software analytics tool that helps developers analyse and improve software quality.
https://dcm.dev
Other
860 stars 265 forks source link

[BUG] Getting `avoid-collection-methods-with-unrelated-types` error for a valid code #1204

Closed saileshbro closed 1 year ago

saileshbro commented 1 year ago

Environment and configuration

DCM version: ^5.6.0 Dart SDK version: 2.19.3

Configuration ```yaml include: package:very_good_analysis/analysis_options.yaml dart_code_metrics: metrics-exclude: - test/** - "**/*.router.dart" - "**/*.gen.dart" - "**/*.locator.dart" - "**/*.freezed.dart" - "**/*.config.dart" - "**/*.logger.dart" - "**/*.form.dart" - "**/*.mocks.dart" - "**/*.g.dart" - "**/firebase_options*.dart" rules: - no-boolean-literal-compare - prefer-trailing-comma - no-equal-then-else - always-remove-listener: severity: warning - avoid-returning-widgets - prefer-const-border-radius: severity: warning - prefer-correct-edge-insets-constructor: severity: warning - avoid-collection-methods-with-unrelated-types - avoid-duplicate-exports - avoid-global-state - avoid-missing-enum-constant-in-map - avoid-redundant-async - avoid-unnecessary-type-casts: severity: warning - avoid-unrelated-type-assertions - avoid-unused-parameters: severity: warning - binary-expression-operand-order - double-literal-format - prefer-immediate-return: severity: warning - prefer-iterable-of: severity: warning - prefer-last: severity: warning analyzer: plugins: - dart_code_metrics errors: missing_required_param: error missing_return: error must_be_immutable: error parameter_assignments: error sort_pub_dependencies: ignore sort_unnamed_constructors_first: warning avoid_renaming_method_parameters: warning unnecessary_getters_setters: ignore directives_ordering: ignore todo: ignore library_private_types_in_public_api: ignore no_leading_underscores_for_local_identifiers: ignore public_member_api_docs: ignore omit_local_variable_types: ignore lines_longer_than_80_chars: ignore unawaited_futures: ignore unnecessary_lambdas: warning avoid_equals_and_hash_code_on_mutable_classes: warning avoid_positional_boolean_parameters: ignore use_setters_to_change_properties: ignore prefer_constructors_over_static_methods: warning exclude: - "**/*.router.dart" - "**/*.gen.dart" - "**/*.locator.dart" - "**/*.freezed.dart" - "**/*.config.dart" - "**/*.logger.dart" - "**/*.form.dart" - "**/*.mocks.dart" - "**/*.g.dart" ```

What did you do?

  final List<String> _selectedFriends = [];

  bool get isFriendsSelected => _selectedFriends.isNotEmpty;

  bool isSelected(Friend friend) => _selectedFriends.contains(friend.ref.id);

  void onFriendSelected(Friend friend) {
    final value = !isSelected(friend);
    if (value) {
      _selectedFriends.add(friend.ref.id);
    } else {
      _selectedFriends.remove(friend.ref.id);
    }
    notifyListeners();
  }

What did you expect to happen?

I am getting a linting error for Avoid collection methods with unrelated types., with a valid dart code. It should not show the linting error for this piece of code.

image

What actually happened?

Avoid collection methods with unrelated types.
dart[avoid-collection-methods-with-unrelated-types](https://dcm.dev/docs/individuals/rules/common/avoid-collection-methods-with-unrelated-types)

Participation

Additional comments

No response

incendial commented 1 year ago

@saileshbro can you hover on the id field and show the type?

saileshbro commented 1 year ago

@incendial id is String

image
saileshbro commented 1 year ago

@incendial I think this happens specially after i run build_runner

incendial commented 1 year ago

@saileshbro could you provide a repro?

github-actions[bot] commented 1 year ago

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this issue for now. Please don't hesitate to comment on the issue if you have any more information for us; we will reopen it right away! Thanks for your contribution!