very_good_analysis

v6.0.0

Lint rules for Dart and Flutter used internally at Very Good Ventures.

Package archive: https://pubdev.letsnova.ru/api/archives/very_good_analysis/6.0.0.tar.gz

Installdart pub add very_good_analysis

Readme

Very Good Analysis

Very Good Ventures Very Good Ventures

Developed with 💙 by Very Good Ventures 🦄

ci pub package License: MIT style: very good analysis


This package provides lint rules for Dart and Flutter which are used at Very Good Ventures. For more information, see the complete list of options.

Note: This package was heavily inspired by pedantic.

Usage

To use the lints, add as a dev dependency in your pubspec.yaml:

dart pub add dev:very_good_analysis
                # or
                flutter pub add dev:very_good_analysis
                

Then, add an include in analysis_options.yaml:

include: package:very_good_analysis/analysis_options.yaml
                

This will ensure you always use the latest version of the lints. If you wish to restrict the lint version, specify a version of analysis_options.yaml instead:

include: package:very_good_analysis/analysis_options.6.0.0.yaml
                

Suppressing Lints

There may be cases where specific lint rules are undesirable. Lint rules can be suppressed at the line, file, or project level.

An example use case for suppressing lint rules at the file level is suppressing the prefer_const_constructors in order to achieve 100% code coverage. This is due to the fact that const constructors are executed before the tests are run, resulting in no coverage collection.

Line Level

To suppress a specific lint rule for a specific line of code, use an ignore comment directly above the line:

// ignore: public_member_api_docs
                class A {}
                

File Level

To suppress a specific lint rule of a specific file, use an ignore_for_file comment at the top of the file:

// ignore_for_file: public_member_api_docs
                
                class A {}
                
                class B {}
                

Project Level

To suppress a specific lint rule for an entire project, modify analysis_options.yaml:

include: package:very_good_analysis/analysis_options.yaml
                linter:
                  rules:
                    public_member_api_docs: false
                

Badge

To indicate your project is using very_good_analysis → style: very good analysis

[![style: very good analysis](https://img.shields.io/badge/style-very_good_analysis-B22C89.svg)](https://pub.dev/packages/very_good_analysis)
                

Excluded rules

Below is a list of rules that are not enabled by default together with the reason on why they have been excluded:

Rule Reason
always_put_control_body_on_new_line Can conflict with the Dart formatter
always_specify_types Incompatible with omit_local_variable_types
annotate_redeclares Experimental
avoid_annotating_with_dynamic Not specified
avoid_catches_without_on_clauses Has unresolved false positives
avoid_classes_with_only_static_members Not specified
avoid_implementing_value_types Not specified
avoid_types_on_closure_parameters Not specified
close_sinks Has unresolved false positives
deprecated_member_use_from_same_package Not specified
diagnostic_describe_all_properties Not specified
discarded_futures Has unresolved false positives
do_not_use_environment Not specified
matching_super_parameters Not specified
no_literal_bool_comparisons Not specified
prefer_double_quotes Incompatible with prefer_single_quotes
prefer_expression_function_bodies Not specified
prefer_final_parameters Not specified
prefer_foreach Not specified
prefer_mixin Not specified
prefer_relative_imports Incompatible with always_use_package_imports
type_literal_in_constant_pattern Not specified
unnecessary_final Not specified
unnecessary_library_name Pending recommendation
unnecessary_null_aware_operator_on_extension_on_nullable Not specified
unreachable_from_main Not specified
unsafe_html Not specified
use_decorated_box Has unresolved malfunctions

Changelog

6.0.0

  • chore: release 6.0.0-dev.1

6.0.0-dev.1

5.1.0

  • fix: remove deprecated iterable_contains_unrelated_type lint
  • fix: remove deprecated list_remove_unrelated_type lint
  • fix(docs): full list of rules
  • feat: type equality checks should be warnings/errors

5.0.0+1

  • docs: minor updates to documentation in README.md

5.0.0

4.0.0+1

  • docs: minor updates to documentation in README.md

4.0.0

3.1.0

3.0.2

  • fix: remove deprecated invariant_booleans lint
  • fix: deprecate unawaited (use unawaited from dart:async instead).

3.0.1

  • feat: use analyzer language modes instead of deprecated strong-mode
    language:
                      strict-casts: true
                      strict-inference: true
                      strict-raw-types: true
                    

3.0.0

2.4.0

2.3.0

2.2.0

  • feat: additional lint rules:
    • always_use_package_imports
    • avoid_returning_null_for_future
    • avoid_slow_async_io
    • avoid_type_to_string

2.1.2

  • refactor: remove deprecated pedantic dependency
  • ci: improvements to ensure max pub score
  • docs: minor documentation and package description updates

2.1.1

  • docs: update README to include latest version
  • docs: reword package description
  • docs: consolidate README links

2.1.0

  • feat: update sdk constraint to v2.12.0 stable
  • feat: additional lint rules:
    • avoid_print
    • avoid_returning_null_for_void
    • avoid_single_cascade_in_expression_statements
    • avoid_unnecessary_containers
    • avoid_web_libraries_in_flutter
    • curly_braces_in_flow_control_structures
    • exhaustive_cases
    • file_names
    • no_logic_in_create_state
    • prefer_const_constructors_in_immutables
    • prefer_const_declarations
    • prefer_const_literals_to_create_immutables
    • prefer_function_declarations_over_variables
    • prefer_inlined_adds
    • prefer_is_not_operator
    • prefer_null_aware_operators
    • prefer_void_to_null
    • provide_deprecation_message
    • sized_box_for_whitespace
    • unnecessary_overrides
    • unnecessary_string_escapes
    • unnecessary_string_interpolations
    • use_full_hex_values_for_flutter_colors
    • void_checks

2.0.3

  • feat: additional linter rule:
    • sort_child_properties_last

2.0.2

  • feat: additional linter rule:
    • use_key_in_widget_constructors

2.0.1

  • feat: additional linter rule:
    • avoid_dynamic_calls

2.0.0

  • feat: stable null safe release

2.0.0-nullsafety.0

  • chore: migrate to null safety

1.0.4

  • docs: README and metadata updates

1.0.3

  • feat: additional linter rules
    • avoid_print
    • avoid_unnecessary_containers
    • prefer_final_in_for_each
    • prefer_final_locals
    • prefer_const_declarations
    • sized_box_for_whitespace

1.0.2

  • feat: add test/.test_coverage.dart to the list of ignored files

1.0.1

  • docs: README improvements
  • docs: inline documentation improvements

1.0.0