Very Good Analysis

February 13, 2026 ยท View on GitHub

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

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:

RuleReason
always_put_control_body_on_new_lineCan conflict with the Dart formatter
always_specify_typesIncompatible with omit_local_variable_types
annotate_redeclaresExperimental
avoid_annotating_with_dynamicNot specified
avoid_classes_with_only_static_membersNot specified
avoid_futureor_voidExperimental
avoid_implementing_value_typesWe need to implement value types for mocks/fakes in tests
avoid_null_checks_in_equality_operatorsHas been deprecated and will be removed
close_sinksHas unresolved false positives
diagnostic_describe_all_propertiesNot specified
do_not_use_environmentNot specified
library_namesSuperseded by unnecessary_library_name
omit_obvious_local_variable_typesExperimental
omit_obvious_property_typesIncompatible with type_annotate_public_apis
package_prefixed_library_namesBroken; superseded by unnecessary_library_name
prefer_double_quotesIncompatible with prefer_single_quotes
prefer_expression_function_bodiesNot specified
prefer_final_parametersIncompatible with avoid_final_parameters
prefer_for_elements_to_map_fromiterableNot specified
prefer_relative_importsIncompatible with always_use_package_imports
prefer_void_to_nullHas unresolved false positives
specify_nonobvious_local_variable_typesExperimental
unnecessary_asyncExperimental
unnecessary_finalIncompatible with prefer_final_locals
unsafe_varianceExperimental
use_decorated_boxHas unresolved malfunctions