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

Apply very_good_analysis 3.0.0+ lint rules #104

Closed
navispatial opened this issue May 14, 2022 · 3 comments
Closed

Apply very_good_analysis 3.0.0+ lint rules #104

navispatial opened this issue May 14, 2022 · 3 comments
Labels
🌎 geodata Related to the code package "geodata" 🌐 geobase Related to the code package "geobase" 🌐 geocore Related to the code package "geocore" refactoring

Comments

@navispatial
Copy link
Member

Following Flutter 3.0 and Dart 2.17 releases very_good_analysis has been updated to 3.0.0 version.

Previously updates to lint rules on this repository were applied on #36.

@navispatial navispatial added 🌐 geocore Related to the code package "geocore" 🌎 geodata Related to the code package "geodata" refactoring 🌐 geobase Related to the code package "geobase" labels May 14, 2022
@navispatial
Copy link
Member Author

Updated very_good_analysis to 3.0.0 and minor changes on analysis_options.yaml:

# Analysis options / lint rules (2022-05-14 / "packages edition")
#
# Documentation (official for Dart)
#     https://pub.dev/packages/lints
#     https://dart.dev/guides/language/analysis-options
#     https://dart-lang.github.io/linter/lints/
#
# Documentation (official for Flutter)
#     https://pub.dev/packages/flutter_lints
#
# Getting started (before new official Dart and Flutter lints announced!)
#     https://dash-overflow.net/articles/getting_started/
#         Some of comments originated from this blog.
#     https://rydmike.com/blog => My Flutter Linting Preferences (Jan 10, 2021)
#         Some of comments originated from this blog.
#
# Comparisons of different lints
#     https://twitter.com/RydMike/status/1426310690965532678
#         Updated lint rules comparison (Aug 14, 2021)
#         Notes about "very_good_analysis" 2.3.0+
#
# Applied package
#     https://pub.dev/packages/very_good_analysis
#     3.0.0+

include: package:very_good_analysis/analysis_options.yaml

analyzer:
  exclude:
    # Ignore warnings of files generated by json_serializable, built_value etc.
    - "**/*.g.dart"

    # Ignore warnings of files generated by Freezed.
    - "**/*.freezed.dart"

  language:
    # See => https://github.com/dart-lang/language/blob/master/resources/type-system/strict-raw-types.md
    strict-raw-types: true

# Note this are enabled already by "very_good_analysis" but good to note here:
#  strong-mode:
#    implicit-casts: false
#    implicit-dynamic: false

# Some rules that were enabled by "very_good_analysis" disabled here
linter:
  rules:
    # "DO avoid relative imports for files in lib/."
    # What's wrong with relative imports between source code inside lib.
    # So disable this rule. However "avoid_relative_lib_imports" is enabled.
    always_use_package_imports: false

    # "AVOID returning null from members whose return type is bool, double, int,
    #  or num."
    # As dart-lint is commenting, this rule has lost it's meaning after proper
    # null-safety support on Dart. And there are valid cases for returning nulls
    # even for primitive types.
    avoid_returning_null: false

    # "PREFER defining constructors instead of static methods to create
    # instances."
    # However official docs say it too, "in most cases, it makes more sense to
    # use a named constructor rather than a static method because it makes
    # instantiation clearer", but still, there are some cases where it makes
    # also sense using static method, so disable this.
    prefer_constructors_over_static_methods: false

    # "DO use int literals rather than the corresponding double literal."
    # It's better to use 0.0 or 342.0 for doubles than 0 and 342.
    # For example in code setting geospatial coordinates, like latitude and
    # longitude, it feels more natural using double literals always.
    prefer_int_literals: false

    # "DO sort constructor declarations before other members."
    # This rule is very opionated. Sometimes for domain data classes with lot
    # of contructors and named factories, it would be nices to put field members
    # first, then constructors. However for most of other cases the rule might
    # be good.
    # See also discussion on lint: https://github.com/passsy/dart-lint/issues/1
    sort_constructors_first: false

    # "DO sort pub dependencies in pubspec.yaml."
    # Yes do sort most of time, but sometimes better to organize logically.
    # For example first sorted list of packages from external vendors, then
    # next sorted list of custom packages.
    sort_pub_dependencies: false

@navispatial
Copy link
Member Author

There were some IDE (?) or lint tool (?) related challenges as described on Dart SDK issue 42910.

Previously there was one analysis_options.yaml on the whole project at the repository root.

The issue was gone when copying analysis_options.yaml to each package folder on this repo:

  • dart/geobase/analysis_options.yaml
  • dart/geocore/analysis_options.yaml
  • dart/geodata/analysis_options.yaml

@navispatial
Copy link
Member Author

Implemented in 25bba86

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🌎 geodata Related to the code package "geodata" 🌐 geobase Related to the code package "geobase" 🌐 geocore Related to the code package "geocore" refactoring
Projects
None yet
Development

No branches or pull requests

1 participant