Skip to content
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

Fix avoid-late if initialized #71

Merged

Conversation

maxxlab
Copy link
Contributor

@maxxlab maxxlab commented Nov 15, 2023

No description provided.

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
Copy link
Collaborator

@yurii-prykhodko-solid yurii-prykhodko-solid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The issue in question calls for customization, meaning we need to read configs from resolved yaml and allow/disallow initialized late variables dynamically.

maxxlab and others added 3 commits November 15, 2023 16:19
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
maxxlab and others added 2 commits November 15, 2023 18:08
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
Copy link
Collaborator

@yurii-prykhodko-solid yurii-prykhodko-solid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

almost there

maxxlab and others added 2 commits November 15, 2023 19:29
…ers.dart

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
lib/lints/avoid_late_keyword/models/_config_parser.dart Outdated Show resolved Hide resolved
Comment on lines 58 to 60
config.parameters.ignoredTypes.contains(
// ignore: deprecated_member_use
node.declaredElement2?.type.getDisplayString(withNullability: false),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way to solve this without using deprecated APIs?
Also, this checks for exact match, not subtypes.

Comment on lines 8 to 9
flutter:
sdk: flutter
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can declare your own classes with same names for test purpose instead of pulling in the entire Flutter SDK as a dependency. See https://github.com/solid-software/solid_lints/pull/74/files#diff-f77bef8e8287cf15cac0245e3c6046109cd594bb0238e8bb61c991070521ab47

maxxlab and others added 3 commits November 16, 2023 18:44
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
…ers.dart

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
Copy link
Collaborator

@yurii-prykhodko-solid yurii-prykhodko-solid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a little more

// ignore_for_file: prefer_const_declarations, unused_local_variable, prefer_match_file_name
// ignore_for_file: avoid_global_state

import 'package:flutter/material.dart';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove Flutter SDK dependency.

Comment on lines 8 to 9
flutter:
sdk: flutter
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
flutter:
sdk: flutter

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I did it yesterday but create PR only today

/// Check "late" keyword fail
///
/// `avoid_late_keyword`
/// allow_initialized option enabled
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's also test allow_initialized == false + ignored types.

Copy link
Collaborator

@yurii-prykhodko-solid yurii-prykhodko-solid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, great work!

@yurii-prykhodko-solid yurii-prykhodko-solid merged commit 6aae62c into solid-software:release-v0.1.0 Nov 17, 2023
1 check passed
@maxxlab maxxlab deleted the avoid_late_feature branch November 17, 2023 10:29
illia-romanenko added a commit that referenced this pull request Nov 20, 2023
* Bump version to `0.1.0`

* Pull changes from `solid-metrics` repository

* Update .gitignore

Co-authored-by: Yuri Prykhodko <40931732+solid-yuriiprykhodko@users.noreply.github.com>

* Update example/lib/solid_lints_example.dart

Co-authored-by: Yuri Prykhodko <40931732+solid-yuriiprykhodko@users.noreply.github.com>

* Update `CHANGELOG.md`

* Add code checks with GitHub Actions

* Add support for the number of parameters metric

* Remove DCM references

* Change lint message

* Simplify configuration and remove redundant code

* Fix code comments

* Add missing tests

* Add `lines_of_code` lint

* Fix rule name

* Add test and fix an edge case

* Update lint to match the specification

* Add `avoid_non_null_assertion` lint

* Add missing comment

* Add `avoid_late_keyword` lint

* Update problem message

* Add `avoid_global_state` lint

* Fix failing tests

* Add `avoid_returning_widgets` lint

* Use pattern-matching

* Simplify `isWidgetReturned`

* Update lib/lints/avoid_returning_widgets/avoid_returning_widgets_rule.dart

Co-authored-by: Yuri Prykhodko <40931732+solid-yuriiprykhodko@users.noreply.github.com>

* Cleanup of `getLintRules`

* Fix comment

* rename MetricRule -> RuleConfig

* add a sceleton for the double-literal-format rule

* implement the double-literal-format rule

* fix review warnings

* implement quick-fix for the double-literal-format rule

* fix lint warnings

* add avoid-unnecessary-type-assertions rule ('is' part)

* fix lint warning

* add avoid-unnecessary-type-assertions rule ('whereType' part)

* add quick-fix for unnecessary operator is

* add quick-fix for unnecessary whereType

* fix review warnings; fix a bug

* add utility class for type chekcking methods

* add constants for is and whereType names

* add needed comments

* rewrite _isUnnecessaryWhereType with pattern matching

* rewrite _areGenericsWithSameTypeArgs with pattern matching

* refactoring: move a castTypeInHierarchy to TypeCast class

* implement "avoid unnecessary setstate" rule (#44)

* implement "avoid unnecessary setstate" rule

* fix pr comments

* added idea files to gitignore

* fix pr comments

* Fix merge conflict

* Fix tests and improve GitHub workflow

* Fix workflow file

* Fix conflicts after merge

* Remove non-existing import

* Add missing rule to tests and remove unnecessary GitHub actions step

---------

Co-authored-by: Yaroslav Laptiev <yaroslav.laptiev@wmg.com>
Co-authored-by: vladimir-beloded <x-volodymyr.beloded@transcarent.com>

* Add avoid_unnecessary_type_casts_rule

* Refactor types_utils, extract common methods

* Add fix for avoid_unnecessary_type_casts_rule

* Add AvoidUnnecessaryTypeCastsRule.createRule to solid_lints.dart

* Fix 'quickFix' for avoid-unnecessary-type-casts

* Add tests for avoid-unnecessary-type-casts

* Fix formatting

* Add more test cases

* Group code for more readability

* Switch to getters, refactor areGenericsWithSameTypeArgs

* Avoid unrelated type assertions (#48)

* Add avoid-unrelated-type-assertions rule

* Add tests for avoid-unrelated-type-assertions rule

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>

* Feature/newline before return (#52)

* Add newline-before-return rule

* Fix typos, remove unnecessary negation

* Add tests for newline-before-return

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>

* Fixes Issue #54 multiple rule reporting (#55)

* Fix newline-before-return

* Fix avoid-unrelated-type-assertions

* Fix avoid-unnecessary-type-casts

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>

* Feature/no empty block (#53)

* Add no-empty-block rule

* Add tests no-empty-block rule

* Add cyclomatic tests case, fix formatting

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>

* Add no equal then else rule (#56)

* Add no-equal-then-else rule

* Add tests for no-equal-then-else rule

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>

* Feature/member ordering (#51)

* Add required models for member-ordering rule

* Add member-ordering rule

* Add MIT License comments

* Fix parser type mismatch

* Add tests for member-ordering and enable rule

* Organize imports, ignore member-ordering in unrelated test

* Group *_member_group.dart into one directory

* Add more test cases

* Add more test cases

* Add alphabetize test cases

* Add tests for alphabetical-by-type option

* Ignore no-empty-block in test

* Ignore member-ordering in test

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>

* Add avoid unused parameters rule (#49)

* Add avoid-unused-parameters rule

* Add tests for avoid-unused-parameters rule

* Fix function name, remove null check operator and remove negation

* Fix multiple reporting

* Add more test cases

* Fix formatting

* Rename method

* Add constructors and factories unused params handling

* Fix constructors with named field parameters

* Simplify rule run method

* Fix tests

* Fix tests after merge

* Fix tests after merge

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>

* Added no magic number rule (#57)

* Add no-magic-number rule

* Add tests for no-magic-number rule

* Fix import lost in merge

* Ignore no-magic-number in test

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>

* Added prefer condtional expressions rule and fix (#59)

* Add prefer-conditional-expressions rule and fix

* Add tests for prefer-conditional-expressions rule

* fix nested test plugin path

* Fix tests after merge

* Update lint_test/prefer_conditional_expressions_ignore_nested_test/prefer_conditional_expressions_ignore_nested_test.dart

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Added prefer first rule (#60)

* Add prefer-conditional-expressions rule and fix

* Add tests for prefer-conditional-expressions rule

* fix nested test plugin path

* Fix tests after merge

* Add prefer-first rule and fix

* Add tests for prefer-first rule

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Add prefer last rule (#61)

* Add prefer-conditional-expressions rule and fix

* Add tests for prefer-conditional-expressions rule

* fix nested test plugin path

* Fix tests after merge

* Add prefer-first rule and fix

* Add tests for prefer-first rule

* Add prefer-last rule & fix

* Add tests for prefer-last rule

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Add prefer match file name (#62)

* Add prefer-conditional-expressions rule and fix

* Add tests for prefer-conditional-expressions rule

* fix nested test plugin path

* Fix tests after merge

* Add prefer-first rule and fix

* Add tests for prefer-first rule

* Add prefer-last rule & fix

* Add tests for prefer-last rule

* Add prefer-match-file-name rule

* Add tests for prefer-match-file-name rule

* Typos, naming

* Typos, naming

* rm todo comment

* Update lint_test/prefer_match_file_name_test.dart

* Update lint_test/prefer_match_file_name_test.dart

---------

Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
Co-authored-by: Yurii Prykhodko <yurii.prykhodko@solid.software>

* Rename custom lints to use snake_case (#66)

* Rename custom lints to use snake_case

* Rename missed parameter

---------

Co-authored-by: vladimir-beloded <x-volodymyr.beloded@transcarent.com>

* Take into account the constructor initializer in the avoid_unused_parameters rule (#67)

Co-authored-by: vladimir-beloded <x-volodymyr.beloded@transcarent.com>

* Fix linter issues

* Bump custom_lint_builder version

* Update LICENSE to include third party code license

* Allow magic numbers for default values (#72)

* Allow magic numbers for default values

* More tests

---------

Co-authored-by: vladimir-beloded <x-volodymyr.beloded@transcarent.com>

* Ignore magic number in constructor initializer (#73)

* Ignore magic number in constructor initializer

* Minor naming improvement

---------

Co-authored-by: vladimir-beloded <x-volodymyr.beloded@transcarent.com>

* Remove DCM steps from readme

* Fix avoid-late if initialized (#71)

* Implement proper-super-calls (#77)

* Fix avoid-late if initialized

* Update lint_test/avoid_late_keyword_test.dart

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Custom avoid-late

* Fix naming

* Apply suggestions from code review

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Avoid late simplified

* Update lib/lints/avoid_late_keyword/models/avoid_late_keyword_parameters.dart

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Avoid-late ignored_types

* Avoid-late ignored_types formatted

* Update lib/lints/avoid_late_keyword/models/avoid_late_keyword_parameters.dart

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Avoid-late ignored_types fix

* Avoid-late ignored_types Fix

* Avoid-late allow_initialized testcases

* Update lint_test/avoid_late_keyword_allow_initialized_test/pubspec.yaml

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Update lib/lints/avoid_late_keyword/models/avoid_late_keyword_parameters.dart

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Allow subclasses for avoid-late whitelist

* Fix naming

* Short-circuit of there's no ignored types

* Short-circuit earlier

* Update lib/lints/avoid_late_keyword/avoid_late_keyword_rule.dart

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Avoid-late ignored_types tests

* Avoid-late add testcases

* Proper-super-calls impl

* Proper-super-calls format

* Apply suggestions from code review

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Proper-super-calls refactoring

* Update lib/lints/proper_super_calls/proper_super_calls_rule.dart

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>

* Proper-super-keyword annotation check

* Proper-super-keyword format

* Proper-super-calls cleanup

---------

Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
Co-authored-by: Yurii Prykhodko <yurii.prykhodko@solid.software>

* Ignore magic numbers in widget parameters (#74)

* Ignore magic numbers in widget parameters

* Add lint parameter to ignore magic numbers in widget params

* Improve the allowed_in_widget_params parameter to exclude magic numbers in nested objects of Widget parameters

* Add tests for disabled allowed_in_widget_params lint parameter

* Remove unnecessary dependency

---------

Co-authored-by: vladimir-beloded <x-volodymyr.beloded@transcarent.com>

* Set default severity level to warning (#78)

Co-authored-by: vladimir-beloded <x-volodymyr.beloded@transcarent.com>

---------

Co-authored-by: Nikodem Bernat <n.bernat@outlook.com>
Co-authored-by: Vadym Khokhlov <xvadima@ukr.net>
Co-authored-by: Yaroslav <43727448+laptevw@users.noreply.github.com>
Co-authored-by: Yaroslav Laptiev <yaroslav.laptiev@wmg.com>
Co-authored-by: vladimir-beloded <x-volodymyr.beloded@transcarent.com>
Co-authored-by: Denis Bogatirov <denis.bohatyrov@computools.com>
Co-authored-by: DenisBogatirov <denis.bogatirov@gmail.com>
Co-authored-by: Yurii Prykhodko <144313329+yurii-prykhodko-solid@users.noreply.github.com>
Co-authored-by: solid-vovabeloded <41615621+solid-vovabeloded@users.noreply.github.com>
Co-authored-by: Illia Romanenko <442086+illia-romanenko@users.noreply.github.com>
Co-authored-by: maxxlab <42914015+maxxlab@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants