Viewing version 11.0.0. Open the latest package page.

very_good_analysis

11.0.0

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

Download archive

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.10.0.0.yaml

Formatter

In addition to lint rules, this package configures the Dart formatter. Trailing commas are set to automate, which lets the formatter decide when to add or remove trailing commas to keep code readable:

formatter:
  trailing_commas: automate

If you prefer to manage trailing commas yourself, override this setting in your analysis_options.yaml:

include: package:very_good_analysis/analysis_options.yaml
formatter:
  trailing_commas: preserve

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_classes_with_only_static_members Not specified
avoid_futureor_void Experimental
avoid_implementing_value_types We need to implement value types for mocks/fakes in tests
avoid_null_checks_in_equality_operators Has been deprecated and will be removed
avoid_private_typedef_functions Deprecated
close_sinks Has unresolved false positives
diagnostic_describe_all_properties Not specified
do_not_use_environment Not specified
initialize_in_field_declaration Not specified
library_names Superseded by unnecessary_library_name
no_dynamic_casts Not specified
no_raw_types Not specified
no_runtimetype_tostring Not specified
omit_obvious_local_variable_types Experimental
omit_obvious_property_types Incompatible with type_annotate_public_apis
one_member_abstracts Deprecated
package_prefixed_library_names Broken; superseded by unnecessary_library_name
prefer_double_quotes Incompatible with prefer_single_quotes
prefer_expression_function_bodies Not specified
prefer_final_parameters Incompatible with avoid_final_parameters
prefer_for_elements_to_map_fromiterable Not specified
prefer_iterable_wheretype Not specified
prefer_relative_imports Incompatible with always_use_package_imports
prefer_void_to_null Has unresolved false positives
specify_nonobvious_local_variable_types Experimental
unnecessary_async Experimental
unnecessary_await_in_return Deprecated
unnecessary_const_in_enum_constructor Not specified
unnecessary_final Incompatible with prefer_final_locals
unreachable_from_main Not specified
unsafe_variance Experimental
use_decorated_box Has unresolved malfunctions
use_if_null_to_convert_nulls_to_bools Not specified
use_primary_constructors Not specified
var_with_no_type_annotation Not specified
Changelog

Changelog

11.0.0 (2026-09-03)

Miscellaneous Chores

11.0.0-rc.1 (2026-08-17)

Features

10.3.0 (2026-06-18)

Miscellaneous Chores

10.3.0-rc.1 (2026-06-02)

Features

Miscellaneous Chores

10.2.0 (2026-02-13)

Features

10.1.0 (2026-02-02)

Miscellaneous Chores

10.1.0-rc.2 (2025-12-09)

Miscellaneous Chores

  • remove prefer_expression_function_bodies (#187) (0afe5a0)

10.1.0-rc.1 (2025-11-27)

Docs

Features

Bug Fixes

  • docs: update documentation based on markdownlint (#172) (b644968)

10.0.0 (2025-08-22)

Features

Docs

  • update CONTRIBUTING.md to explain how to add new lint rules (#156) (447051a)

10.0.0-rc.2 (2025-09-19)

Miscellaneous Chores

Docs

10.0.0-rc.1 (2025-09-08)

Miscellaneous Chores

  • remove diagnostic_describe_all_properties (#166) (7542279)

9.0.0

  • chore(deps): bump peter-evans/create-pull-request from 7.0.6 to 7.0.8 139
  • chore: release 9.0.0-rc.1 154

9.0.0-rc.1

  • feat: support Dart 3.8.0 152

8.0.0

  • chore: release 8.0.0-rc.1
  • fix: remove omit_obvious_property_types as it conflicts with type_annotate_public_apis 148

8.0.0-rc.1

  • feat: add omit_obvious_property_types 143
  • feat: add specify_nonobvious_property_types 143
  • feat: add strict_top_level_inference 143
  • feat: add unnecessary_underscores 143
  • feat: remove require_trailing_commas 143

7.0.0

  • chore: release 7.0.0-dev.1

7.0.0-dev.1

  • feat: add document_ignores 125
  • feat: remove avoid_null_checks_in_equality_operators 124
  • feat: add avoid_catches_without_on_clauses 123
  • feat: add invalid_runtime_check_with_js_interop_types 122
  • feat: add unintended_html_in_doc_comment 121
  • chore: Remove the package_api_docs lint in next release 118
  • feat: update lints for Dart 3.5 111
  • docs: update exclusion reasons 109
  • docs: update commands in contributing 110

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

Installing

export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add 'very_good_analysis:11.0.0'
pubspec.yaml
name: very_good_analysis
version: 11.0.0
description: Lint rules for Dart and Flutter used internally at Very Good Ventures.
repository: https://github.com/VeryGoodOpenSource/very_good_analysis
issue_tracker: https://github.com/VeryGoodOpenSource/very_good_analysis/issues
homepage: https://github.com/VeryGoodOpenSource/very_good_analysis
documentation: https://github.com/VeryGoodOpenSource/very_good_analysis
topics: [lints, analyzer, analysis]

environment:
  sdk: ^3.13.0

Version history

VersionPublishedArchiveSHA-256
1.0.0On demandDownload452570cc…0a55e3
1.0.1On demandDownload414add6e…09a3d6
1.0.2On demandDownload1f7f81c6…036146
1.0.3On demandDownload2ef53b58…bd48c1
1.0.4On demandDownload3b0beb53…372642
2.0.0-nullsafety.0On demandDownload91347aca…9850fa
2.0.0On demandDownloadb09ed389…cf2630
2.0.1On demandDownload8d398586…0800af
2.0.3On demandDownload12644acd…6d3f0f
2.1.0On demandDownload8bd2dc57…c7cf02
2.1.1On demandDownload034044d3…720345
2.1.2On demandDownloadcb21f96e…8e6d41
2.2.0On demandDownloadba370b08…de56c9
2.3.0On demandDownloadffafc655…46428f
2.4.0On demandDownloadcecd7a0e…5911ee
3.0.0On demandDownloadf50468aa…90358d
3.0.1On demandDownload396bf7de…e921d9
3.0.2On demandDownload88868b04…0913cd
3.1.0On demandDownload4815adc7…81e5e2
4.0.0On demandDownloadb3c9f971…1be488
4.0.0+1On demandDownloadebc48c51…b40b08
5.0.0On demandDownload5f77d7c0…2453bb
5.0.0+1On demandDownload5e4ea72d…4508b8
5.1.0On demandDownload9ae7f3a3…58a4b8
6.0.0-dev.1On demandDownloadf847f770…892d47
6.0.0On demandDownload1fb637c0…3a8629
7.0.0-dev.1On demandDownloadc496e0f4…c1db74
7.0.0On demandDownload62d2b86d…035c63
8.0.0-rc.1On demandDownloadf789d414…184dc6
8.0.0On demandDownloadc529563b…f551a7
9.0.0-rc.1On demandDownload8ff68839…7cf9df
9.0.0On demandDownloade479fbc0…e1e382
10.0.0-rc.1On demandDownload2dea1654…a466fa
10.0.0-rc.2On demandDownload3c9d43c2…2d56e8
10.0.0On demandDownload96245839…7f1e3a
10.1.0-rc.1On demandDownloadb6b5fdc9…275af7
10.1.0-rc.2On demandDownloada75193c3…165321
10.1.0On demandDownload27927d11…d731d0
10.2.0On demandDownloadd1cb1d66…a972e0
10.3.0-rc.1On demandDownloadd52ce9c7…b34ed0
10.3.0Cached · Upstream SHA-256 matchedDownload481af67a…12b33d
11.0.0-rc.1On demandDownloadf69b70a2…176bd5
11.0.0Cached · Upstream SHA-256 matchedDownload0bd5eb8d…c7f6d3

Dependencies

No direct dependencies declared.