Skip to content

Instantly share code, notes, and snippets.

@long1eu
Created September 18, 2026 00:15
Show Gist options
  • Select an option

  • Save long1eu/36fea34f43792ff17d61c8175b089d91 to your computer and use it in GitHub Desktop.

Select an option

Save long1eu/36fea34f43792ff17d61c8175b089d91 to your computer and use it in GitHub Desktop.
JSON Schema for Dart analysis_options.yaml — generated from the SDK linter rule list and the analyzer's own option validators, validated against 130 real files. No such schema exists on SchemaStore today (dart-lang/sdk#48554).

A JSON Schema for Dart's analysis_options.yaml

No schema for analysis_options.yaml exists anywhere today. The Dart team declined to ship one in March 2025 and invited the community to do it instead; SchemaStore has 1470 schemas and none of them match this file (verified against the live catalog, 2026-09-18). VS Code's Dart extension contributes no yamlValidation either — its completion comes from the analysis server, so there is nothing to copy.

This repo generates one, and proves it against every analysis_options.yaml on the machine.

tool/build.sh          # regenerate both variants, then validate
tool/verify_rules.sh   # re-check the alias data against a real analyzer

Where each fact comes from

Input Source Why this one
Lint rule names, descriptions, state, SDK version rules.json on SDK main Machine-readable and maintained by the linter team
Option key surface analyzer package 9.0.0 sources, lib/src/analysis_options/analysis_options_file.dart and options_file_validator.dart The code that actually accepts or rejects keys, not prose
Documentation links, rule spellings dart.dev/tools/linter-rules Canonical per-rule doc URLs
Alternate rule spellings dart analyze, run locally See below — the other sources disagree

Prose docs (dart.dev/tools/analysis) were used only as a cross-check. Every option key documented there is in the schema; the schema additionally covers analyzer.cannot-ignore, analyzer.optional-checks, code-style.format, formatter.trailing_commas and the modern top-level plugins, which the page does not document but the analyzer accepts.

Four things that are not what they look like

1. rules.json is not the set of names the analyzer accepts. Three rules are listed there in all-lowercase (prefer_iterable_wheretype), while dart.dev and the Flutter SDK's own analysis_options.yaml files use camelCase (prefer_iterable_whereType). Both spellings work. Putting both in one file yields duplicate_rule, not undefined_lint — proof the analyzer resolves them to the same rule. An enum generated from rules.json alone rejects files that analyze cleanly, including several inside the Flutter SDK. tool/alias_rules.json carries the three extra spellings, with tool/verify_rules.sh to re-prove them.

2. rules.json's sets field is empty for all 264 rules. Core/recommended/flutter membership cannot be read from it. The lints and flutter_lints packages are the real source if that is ever wanted here.

3. dart.dev appears to list 265 rules; it lists 264. The 265th link is /tools/linter-rules/index, which is not a rule. The two sources agree on count.

4. The analyzer has no top-level key validator at all. _AnalyzerTopLevelOptionsValidator checks keys inside analyzer:; nothing checks the top level, so an unknown top-level key is silently ignored. Third-party Dart tooling relies on this and stores its own configuration under a top-level key in analysis_options.yaml — one such tool accounts for the single file in the validation corpus below that the strict variant rejects.

That last one is the only genuine judgment call in this repo, so it is a switch, not a decision baked into the output:

File additionalProperties at top level For
schemas/analysis-options.json allowed The default, and what is prepared for SchemaStore. Matches the analyzer. Will not flag a co-located tool config.
schemas/analysis-options.strict.json rejected Catches analyser: and other typos the analyzer stays silent about. Costs a false positive on any file carrying another tool's config.

Both are generated and both are tested. --strict-top-level picks the second.

What the schema covers

include (string or list — current SDKs merge a list in order), analyzer (errors, exclude, language, enable-experiment, cannot-ignore, optional-checks, plugins, the deprecated strong-mode), linter.rules in both the list form and the map form, formatter (page_width, trailing_commas), code-style.format, and the top-level plugins map.

Every rule carries its description, its sinceDartSdk version and a link to its dart.dev page, so editor hovers are useful:

{
  "const": "avoid_as",
  "description": "REMOVED. Avoid using `as`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_as",
  "deprecationMessage": "The lint rule 'avoid_as' has been removed and no longer has any effect."
}

Deprecated and removed rules are included rather than rejected — the analyzer only warns about them, and rejecting would flag files that still work. deprecationMessage is honoured by the VS Code JSON/YAML language services, which strike the name through.

Empty sections (analyzer: with nothing under it, a bare rules:) parse as YAML null and are accepted; 8 files in the corpus do this.

Validation

tool/validate.py does four things, and the build fails if any of them regress:

  1. the schema is a valid draft-07 schema;
  2. every real analysis_options.yaml under ~/fvm/versions and ~/Projects is accepted — 130 files, 130 accepted;
  3. seven deliberately broken files are rejected, each for the reason recorded in its .expected file, plus the unknown-top-level-key case against the strict variant and the assertion that the default variant accepts it;
  4. five hand-written valid fixtures covering corners the corpus misses.

Failure messages come from jsonschema's best_match, so they point at the offending line rather than at the enclosing anyOf:

at linter/rules/1: 'prefer_const_construtors' is not valid under any of the given schemas
at analyzer/errors/invalid_assignment: 'fatal' is not one of ['ignore', 'false', ...]
at formatter/page_width: 0 is less than the minimum of 1

Regenerating

rules.json is committed so the build is reproducible offline. When the SDK adds rules:

tool/build.sh --refresh      # re-download rules.json, regenerate, revalidate

If a new alias appears, add it to tool/alias_rules.json and prove it with tool/verify_rules.sh <path-to-dart>. That script fails if its own control name is not rejected, so it cannot pass vacuously.

The SchemaStore contribution

Prepared under schemastore/, in the layout that repo uses. Nothing here has been committed, pushed, or opened as a PR.

Prepared file Goes to
schemastore/src/schemas/json/analysis-options.json src/schemas/json/analysis-options.json
schemastore/src/test/analysis-options/*.yaml (5) src/test/analysis-options/
schemastore/src/negative_test/analysis-options/*.yaml (7) src/negative_test/analysis-options/
schemastore/catalog-entry.json one entry in src/api/json/catalog.json

The catalog is ordered by name but not strictly sorted, so insert by neighbour rather than by sort: the entry goes at index 356, after Dagger module and before Dart Build Config (dart-build.json).

Before opening anything, run their prettier over the added files — SchemaStore enforces formatting in CI, and this schema was written by json.dumps, not by their toolchain.

Note the negative tests are the seven that the shipped (permissive) schema rejects. The unknown-top-level-key fixture lives in test/fixtures/invalid-strict/ and is deliberately not part of the contribution, because the shipped schema accepts it on purpose.

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://json.schemastore.org/analysis-options.json",
"title": "Dart analysis options",
"description": "Configuration for the Dart analyzer, linter and formatter, normally written to `analysis_options.yaml`. See https://dart.dev/tools/analysis.",
"type": "object",
"properties": {
"include": {
"description": "Another options file whose settings are merged into this one, as a package URI (`package:lints/recommended.yaml`) or a relative path.\nA list is accepted by current SDKs and each entry is merged in order; older SDKs honoured only a single string.",
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
}
]
},
"analyzer": {
"type": [
"object",
"null"
],
"description": "Static analysis behaviour.",
"properties": {
"exclude": {
"type": [
"array",
"null"
],
"description": "Glob patterns for files excluded from analysis, for example `build/**`.",
"items": {
"type": "string"
}
},
"errors": {
"type": [
"object",
"null"
],
"description": "Severity overrides, keyed by diagnostic code or lint rule name, for example `invalid_assignment: error`.",
"additionalProperties": {
"description": "How this diagnostic is treated: a severity, or whether it is ignored.\n`false` and `ignore` suppress it; `true` and `include` restore the default.",
"anyOf": [
{
"type": "string",
"enum": [
"ignore",
"false",
"include",
"true",
"error",
"info",
"warning"
]
},
{
"type": "boolean",
"description": "Unquoted `true`/`false` in YAML are booleans, and are accepted here."
}
]
}
},
"language": {
"type": [
"object",
"null"
],
"description": "Stricter type-checking modes.",
"properties": {
"strict-casts": {
"type": "boolean",
"description": "Whether implicit casts from `dynamic` are reported. With `true`, a `dynamic` value must be cast explicitly."
},
"strict-inference": {
"type": "boolean",
"description": "Whether types inferred as `dynamic` are reported, where a type annotation could have been written instead."
},
"strict-raw-types": {
"type": "boolean",
"description": "Whether raw types (a generic type used without type arguments) are reported."
}
},
"additionalProperties": false
},
"enable-experiment": {
"type": [
"array",
"null"
],
"description": "Experimental language features to enable by name.",
"items": {
"type": "string"
}
},
"cannot-ignore": {
"type": [
"array",
"null"
],
"description": "Diagnostic codes that may not be suppressed with an `// ignore:` comment.",
"items": {
"type": "string"
}
},
"optional-checks": {
"description": "Additional opt-in checks.",
"anyOf": [
{
"type": "string",
"enum": [
"chrome-os-manifest-checks"
]
},
{
"type": "object",
"properties": {
"chrome-os-manifest-checks": {
"type": "boolean",
"description": "Validate the Chrome OS manifest of an Android app."
},
"propagate-linter-exceptions": {
"type": "boolean",
"description": "Let exceptions thrown by lint rules propagate instead of being caught. Note: current analyzer versions report this key here as unsupported even though it is declared internally."
}
},
"additionalProperties": false
}
]
},
"plugins": {
"description": "Legacy analyzer plugins, by package name. The modern form is the top-level `plugins:` key.",
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "object"
}
]
},
"strong-mode": {
"type": [
"object",
"null"
],
"description": "Deprecated. Use `analyzer.language` instead.",
"deprecationMessage": "The `strong-mode` section is deprecated; use `analyzer.language`.",
"properties": {
"declaration-casts": {
"type": "boolean",
"description": "Removed. Has no effect.",
"deprecationMessage": "Removed. Has no effect."
},
"implicit-casts": {
"type": "boolean",
"description": "Deprecated; use `analyzer.language.strict-casts` instead.",
"deprecationMessage": "Deprecated; use `analyzer.language.strict-casts` instead."
},
"implicit-dynamic": {
"type": "boolean",
"description": "Deprecated; use `analyzer.language.strict-raw-types` instead.",
"deprecationMessage": "Deprecated; use `analyzer.language.strict-raw-types` instead."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"linter": {
"type": [
"object",
"null"
],
"description": "Lint rule selection.",
"properties": {
"rules": {
"description": "Lint rules to enable. Either a list of rule names, or a map of rule name to a boolean. The map form is required if you need to switch a rule off that an included file turned on.",
"anyOf": [
{
"type": "null"
},
{
"type": "array",
"items": {
"type": "string",
"oneOf": [
{
"const": "always_declare_return_types",
"description": "Declare method return types. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_declare_return_types"
},
{
"const": "always_put_control_body_on_new_line",
"description": "Separate the control structure expression from its statement. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_put_control_body_on_new_line"
},
{
"const": "always_put_required_named_parameters_first",
"description": "Put required named parameters first. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_put_required_named_parameters_first"
},
{
"const": "always_require_non_null_named_parameters",
"description": "REMOVED. Specify `@required` on named parameters without defaults. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_require_non_null_named_parameters",
"deprecationMessage": "The lint rule 'always_require_non_null_named_parameters' has been removed and no longer has any effect."
},
{
"const": "always_specify_types",
"description": "Specify type annotations. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_specify_types"
},
{
"const": "always_use_package_imports",
"description": "Avoid relative imports for files in `lib/`. (since Dart 2.10)\n\nhttps://dart.dev/tools/linter-rules/always_use_package_imports"
},
{
"const": "annotate_overrides",
"description": "Annotate overridden members. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/annotate_overrides"
},
{
"const": "annotate_redeclares",
"description": "EXPERIMENTAL. Annotate redeclared members. (since Dart 3.2)\n\nhttps://dart.dev/tools/linter-rules/annotate_redeclares"
},
{
"const": "async_return_with_no_await",
"description": "Return with no await. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/async_return_with_no_await"
},
{
"const": "avoid_annotating_with_dynamic",
"description": "Avoid annotating with `dynamic` when not required. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_annotating_with_dynamic"
},
{
"const": "avoid_as",
"description": "REMOVED. Avoid using `as`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_as",
"deprecationMessage": "The lint rule 'avoid_as' has been removed and no longer has any effect."
},
{
"const": "avoid_bool_literals_in_conditional_expressions",
"description": "Avoid `bool` literals in conditional expressions. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_bool_literals_in_conditional_expressions"
},
{
"const": "avoid_catches_without_on_clauses",
"description": "Avoid catches without on clauses. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_catches_without_on_clauses"
},
{
"const": "avoid_catching_errors",
"description": "Don't explicitly catch `Error` or types that implement it. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_catching_errors"
},
{
"const": "avoid_classes_with_only_static_members",
"description": "Avoid defining a class that contains only static members. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_classes_with_only_static_members"
},
{
"const": "avoid_double_and_int_checks",
"description": "Avoid `double` and `int` checks. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_double_and_int_checks"
},
{
"const": "avoid_dynamic_calls",
"description": "Avoid method calls or property accesses on a `dynamic` target. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/avoid_dynamic_calls"
},
{
"const": "avoid_empty_else",
"description": "Avoid empty statements in else clauses. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_empty_else"
},
{
"const": "avoid_equals_and_hash_code_on_mutable_classes",
"description": "Avoid overloading operator == and hashCode on classes not marked `@immutable`. (since Dart 2.6)\n\nhttps://dart.dev/tools/linter-rules/avoid_equals_and_hash_code_on_mutable_classes"
},
{
"const": "avoid_escaping_inner_quotes",
"description": "Avoid escaping inner quotes by converting surrounding quotes. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/avoid_escaping_inner_quotes"
},
{
"const": "avoid_field_initializers_in_const_classes",
"description": "Avoid field initializers in const classes. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_field_initializers_in_const_classes"
},
{
"const": "avoid_final_parameters",
"description": "Avoid `final` for parameter declarations. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/avoid_final_parameters"
},
{
"const": "avoid_function_literals_in_foreach_calls",
"description": "Avoid using `forEach` with a function literal. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_function_literals_in_foreach_calls"
},
{
"const": "avoid_futureor_void",
"description": "EXPERIMENTAL. Avoid using 'FutureOr<void>' as the type of a result. (since Dart 3.6)\n\nhttps://dart.dev/tools/linter-rules/avoid_futureor_void"
},
{
"const": "avoid_implementing_value_types",
"description": "Don't implement classes that override `==`. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_implementing_value_types"
},
{
"const": "avoid_init_to_null",
"description": "Don't explicitly initialize variables to `null`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_init_to_null"
},
{
"const": "avoid_js_rounded_ints",
"description": "Avoid JavaScript rounded ints. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_js_rounded_ints"
},
{
"const": "avoid_multiple_declarations_per_line",
"description": "Don't declare multiple variables on a single line. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/avoid_multiple_declarations_per_line"
},
{
"const": "avoid_null_checks_in_equality_operators",
"description": "DEPRECATED. Don't check for `null` in custom `==` operators. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_null_checks_in_equality_operators",
"deprecationMessage": "The lint rule 'avoid_null_checks_in_equality_operators' is deprecated."
},
{
"const": "avoid_positional_boolean_parameters",
"description": "Avoid positional boolean parameters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_positional_boolean_parameters"
},
{
"const": "avoid_print",
"description": "Avoid `print` calls in production code. (since Dart 2.5)\n\nhttps://dart.dev/tools/linter-rules/avoid_print"
},
{
"const": "avoid_private_typedef_functions",
"description": "DEPRECATED. Avoid private typedef functions. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_private_typedef_functions",
"deprecationMessage": "The lint rule 'avoid_private_typedef_functions' is deprecated."
},
{
"const": "avoid_redundant_argument_values",
"description": "Avoid redundant argument values. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/avoid_redundant_argument_values"
},
{
"const": "avoid_relative_lib_imports",
"description": "Avoid relative imports for files in `lib/`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_relative_lib_imports"
},
{
"const": "avoid_renaming_method_parameters",
"description": "Don't rename parameters of overridden methods. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_renaming_method_parameters"
},
{
"const": "avoid_return_types_on_setters",
"description": "Avoid return types on setters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_return_types_on_setters"
},
{
"const": "avoid_returning_null",
"description": "REMOVED. Avoid returning null from members whose return type is bool, double, int, or num. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_returning_null",
"deprecationMessage": "The lint rule 'avoid_returning_null' has been removed and no longer has any effect."
},
{
"const": "avoid_returning_null_for_future",
"description": "REMOVED. Avoid returning null for Future. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_returning_null_for_future",
"deprecationMessage": "The lint rule 'avoid_returning_null_for_future' has been removed and no longer has any effect."
},
{
"const": "avoid_returning_null_for_void",
"description": "Avoid returning `null` for `void`. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_returning_null_for_void"
},
{
"const": "avoid_returning_this",
"description": "Avoid returning this from methods just to enable a fluent interface. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_returning_this"
},
{
"const": "avoid_setters_without_getters",
"description": "Avoid setters without getters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_setters_without_getters"
},
{
"const": "avoid_shadowing_type_parameters",
"description": "Avoid shadowing type parameters. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_shadowing_type_parameters"
},
{
"const": "avoid_single_cascade_in_expression_statements",
"description": "Avoid single cascade in expression statements. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_single_cascade_in_expression_statements"
},
{
"const": "avoid_slow_async_io",
"description": "Avoid slow asynchronous `dart:io` methods. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_slow_async_io"
},
{
"const": "avoid_type_to_string",
"description": "Avoid <Type>.toString() in production code since results may be minified. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/avoid_type_to_string"
},
{
"const": "avoid_types_as_parameter_names",
"description": "Avoid types as parameter names. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_types_as_parameter_names"
},
{
"const": "avoid_types_on_closure_parameters",
"description": "Avoid annotating types for function expression parameters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_types_on_closure_parameters"
},
{
"const": "avoid_unnecessary_containers",
"description": "Avoid unnecessary containers. (since Dart 2.7)\n\nhttps://dart.dev/tools/linter-rules/avoid_unnecessary_containers"
},
{
"const": "avoid_unstable_final_fields",
"description": "REMOVED. Avoid overriding a final field to return different values if called multiple times. (since Dart 3.3)\n\nhttps://dart.dev/tools/linter-rules/avoid_unstable_final_fields",
"deprecationMessage": "The lint rule 'avoid_unstable_final_fields' has been removed and no longer has any effect."
},
{
"const": "avoid_unused_constructor_parameters",
"description": "Avoid defining unused parameters in constructors. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_unused_constructor_parameters"
},
{
"const": "avoid_void_async",
"description": "Avoid `async` functions that return `void`. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_void_async"
},
{
"const": "avoid_web_libraries_in_flutter",
"description": "Avoid using web-only libraries outside Flutter web plugin packages. (since Dart 2.6)\n\nhttps://dart.dev/tools/linter-rules/avoid_web_libraries_in_flutter"
},
{
"const": "await_only_futures",
"description": "Await only futures. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/await_only_futures"
},
{
"const": "camel_case_extensions",
"description": "Name extensions using UpperCamelCase. (since Dart 2.6)\n\nhttps://dart.dev/tools/linter-rules/camel_case_extensions"
},
{
"const": "camel_case_types",
"description": "Name types using UpperCamelCase. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/camel_case_types"
},
{
"const": "cancel_subscriptions",
"description": "Cancel instances of `dart:async` `StreamSubscription`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/cancel_subscriptions"
},
{
"const": "cascade_invocations",
"description": "Cascade consecutive method invocations on the same reference. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/cascade_invocations"
},
{
"const": "cast_nullable_to_non_nullable",
"description": "Don't cast a nullable value to a non nullable type. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/cast_nullable_to_non_nullable"
},
{
"const": "close_sinks",
"description": "Close instances of `dart:core` `Sink`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/close_sinks"
},
{
"const": "collection_methods_unrelated_type",
"description": "Invocation of various collection methods with arguments of unrelated types. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/collection_methods_unrelated_type"
},
{
"const": "combinators_ordering",
"description": "Sort combinator names alphabetically. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/combinators_ordering"
},
{
"const": "comment_references",
"description": "Only reference in-scope identifiers in doc comments. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/comment_references"
},
{
"const": "conditional_uri_does_not_exist",
"description": "Missing conditional import. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/conditional_uri_does_not_exist"
},
{
"const": "constant_identifier_names",
"description": "Prefer using lowerCamelCase for constant names. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/constant_identifier_names"
},
{
"const": "control_flow_in_finally",
"description": "Avoid control flow in `finally` blocks. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/control_flow_in_finally"
},
{
"const": "curly_braces_in_flow_control_structures",
"description": "DO use curly braces for all flow control structures. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/curly_braces_in_flow_control_structures"
},
{
"const": "dangling_library_doc_comments",
"description": "Attach library doc comments to library directives. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/dangling_library_doc_comments"
},
{
"const": "depend_on_referenced_packages",
"description": "Depend on referenced packages. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/depend_on_referenced_packages"
},
{
"const": "deprecated_consistency",
"description": "Missing deprecated annotation. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/deprecated_consistency"
},
{
"const": "deprecated_member_use_from_same_package",
"description": "Avoid using deprecated elements from within the package in which they are declared. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/deprecated_member_use_from_same_package"
},
{
"const": "diagnostic_describe_all_properties",
"description": "DO reference all public properties in debug methods. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/diagnostic_describe_all_properties"
},
{
"const": "directives_ordering",
"description": "Adhere to Effective Dart Guide directives sorting conventions. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/directives_ordering"
},
{
"const": "discarded_futures",
"description": "There should be no `Future`-returning calls in synchronous functions unless they are assigned or returned. (since Dart 2.18)\n\nhttps://dart.dev/tools/linter-rules/discarded_futures"
},
{
"const": "do_not_use_environment",
"description": "Do not use environment declared variables. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/do_not_use_environment"
},
{
"const": "document_ignores",
"description": "Document ignore comments. (since Dart 3.5)\n\nhttps://dart.dev/tools/linter-rules/document_ignores"
},
{
"const": "empty_catches",
"description": "Avoid empty catch blocks. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/empty_catches"
},
{
"const": "empty_constructor_bodies",
"description": "Use `;` instead of `{}` for empty constructor bodies. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/empty_constructor_bodies"
},
{
"const": "empty_container_bodies",
"description": "Use `;` instead of `{}` for empty container bodies. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/empty_container_bodies"
},
{
"const": "empty_statements",
"description": "Avoid empty statements. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/empty_statements"
},
{
"const": "enable_null_safety",
"description": "REMOVED. Do use sound null safety. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/enable_null_safety",
"deprecationMessage": "The lint rule 'enable_null_safety' has been removed and no longer has any effect."
},
{
"const": "eol_at_end_of_file",
"description": "Put a single newline at end of file. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/eol_at_end_of_file"
},
{
"const": "exhaustive_cases",
"description": "Define case clauses for all constants in enum-like types. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/exhaustive_cases"
},
{
"const": "file_names",
"description": "Name source files using `lowercase_with_underscores`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/file_names"
},
{
"const": "flutter_style_todos",
"description": "Use Flutter TODO format: // TODO(username): message, https://URL-to-issue. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/flutter_style_todos"
},
{
"const": "future_sync_value",
"description": "For synchronous values, `Future.syncValue` is more performant. (since Dart 3.14)\n\nhttps://dart.dev/tools/linter-rules/future_sync_value"
},
{
"const": "hash_and_equals",
"description": "Always override `hashCode` if overriding `==`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/hash_and_equals"
},
{
"const": "implementation_imports",
"description": "Don't import implementation files from another package. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/implementation_imports"
},
{
"const": "implicit_call_tearoffs",
"description": "Explicitly tear-off `call` methods when using an object as a Function. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/implicit_call_tearoffs"
},
{
"const": "implicit_reopen",
"description": "EXPERIMENTAL. Don't implicitly reopen classes. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/implicit_reopen"
},
{
"const": "initialize_in_field_declaration",
"description": "Initialize the field in the field's initializer. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/initialize_in_field_declaration"
},
{
"const": "invalid_case_patterns",
"description": "EXPERIMENTAL. Use case expressions that are valid in Dart 3.0. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/invalid_case_patterns"
},
{
"const": "invalid_runtime_check_with_js_interop_types",
"description": "Avoid runtime type tests with JS interop types where the result may not be platform-consistent. (since Dart 3.5)\n\nhttps://dart.dev/tools/linter-rules/invalid_runtime_check_with_js_interop_types"
},
{
"const": "invariant_booleans",
"description": "REMOVED. Conditions should not unconditionally evaluate to `true` or to `false`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/invariant_booleans",
"deprecationMessage": "The lint rule 'invariant_booleans' has been removed and no longer has any effect."
},
{
"const": "iterable_contains_unrelated_type",
"description": "REMOVED. Invocation of `Iterable<E>.contains` with references of unrelated types. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/iterable_contains_unrelated_type",
"deprecationMessage": "The lint rule 'iterable_contains_unrelated_type' has been removed and no longer has any effect."
},
{
"const": "join_return_with_assignment",
"description": "Join return statement with assignment when possible. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/join_return_with_assignment"
},
{
"const": "leading_newlines_in_multiline_strings",
"description": "Start multiline strings with a newline. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/leading_newlines_in_multiline_strings"
},
{
"const": "library_annotations",
"description": "Attach library annotations to library directives. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/library_annotations"
},
{
"const": "library_names",
"description": "Name libraries using `lowercase_with_underscores`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/library_names"
},
{
"const": "library_prefixes",
"description": "Use `lowercase_with_underscores` when specifying a library prefix. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/library_prefixes"
},
{
"const": "library_private_types_in_public_api",
"description": "Avoid using private types in public APIs. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/library_private_types_in_public_api"
},
{
"const": "lines_longer_than_80_chars",
"description": "Avoid lines longer than 80 characters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/lines_longer_than_80_chars"
},
{
"const": "list_remove_unrelated_type",
"description": "REMOVED. Invocation of `remove` with references of unrelated types. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/list_remove_unrelated_type",
"deprecationMessage": "The lint rule 'list_remove_unrelated_type' has been removed and no longer has any effect."
},
{
"const": "literal_only_boolean_expressions",
"description": "Boolean expression composed only with literals. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/literal_only_boolean_expressions"
},
{
"const": "matching_super_parameters",
"description": "Use matching super parameter names. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/matching_super_parameters"
},
{
"const": "migrate_design_widgets",
"description": "Design widgets should be imported from Material or Cupertino packages. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/migrate_design_widgets"
},
{
"const": "missing_code_block_language_in_doc_comment",
"description": "A code block is missing a specified language. (since Dart 3.4)\n\nhttps://dart.dev/tools/linter-rules/missing_code_block_language_in_doc_comment"
},
{
"const": "missing_whitespace_between_adjacent_strings",
"description": "Missing whitespace between adjacent strings. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/missing_whitespace_between_adjacent_strings"
},
{
"const": "no_adjacent_strings_in_list",
"description": "Don't use adjacent strings in list. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/no_adjacent_strings_in_list"
},
{
"const": "no_default_cases",
"description": "EXPERIMENTAL. No default cases. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/no_default_cases"
},
{
"const": "no_duplicate_case_values",
"description": "Don't use more than one case with same value. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/no_duplicate_case_values"
},
{
"const": "no_dynamic_casts",
"description": "Avoid implicit casts from `dynamic`. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/no_dynamic_casts"
},
{
"const": "no_leading_underscores_for_library_prefixes",
"description": "Avoid leading underscores for library prefixes. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/no_leading_underscores_for_library_prefixes"
},
{
"const": "no_leading_underscores_for_local_identifiers",
"description": "Avoid leading underscores for local identifiers. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/no_leading_underscores_for_local_identifiers"
},
{
"const": "no_literal_bool_comparisons",
"description": "Don't compare boolean expressions to boolean literals. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/no_literal_bool_comparisons"
},
{
"const": "no_logic_in_create_state",
"description": "Don't put any logic in createState. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/no_logic_in_create_state"
},
{
"const": "no_raw_types",
"description": "Avoid raw types. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/no_raw_types"
},
{
"const": "no_runtimeType_toString",
"description": "Avoid calling `toString()` on `runtimeType`. (since Dart 2.8)\n\nAlternate spelling of `no_runtimetype_tostring`; the analyzer resolves both to the same rule.\n\nhttps://dart.dev/tools/linter-rules/no_runtimetype_tostring"
},
{
"const": "no_runtimetype_tostring",
"description": "Avoid calling `toString()` on `runtimeType`. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/no_runtimetype_tostring"
},
{
"const": "no_self_assignments",
"description": "Don't assign a variable to itself. (since Dart 3.1)\n\nhttps://dart.dev/tools/linter-rules/no_self_assignments"
},
{
"const": "no_wildcard_variable_uses",
"description": "Don't use wildcard parameters or variables. (since Dart 3.1)\n\nhttps://dart.dev/tools/linter-rules/no_wildcard_variable_uses"
},
{
"const": "non_constant_identifier_names",
"description": "Name non-constant identifiers using lowerCamelCase. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/non_constant_identifier_names"
},
{
"const": "noop_primitive_operations",
"description": "Noop primitive operations. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/noop_primitive_operations"
},
{
"const": "null_check_on_nullable_type_parameter",
"description": "Don't use `null` check on a potentially nullable type parameter. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/null_check_on_nullable_type_parameter"
},
{
"const": "null_closures",
"description": "Do not pass `null` as an argument where a closure is expected. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/null_closures"
},
{
"const": "omit_local_variable_types",
"description": "Omit type annotations for local variables. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/omit_local_variable_types"
},
{
"const": "omit_obvious_local_variable_types",
"description": "Omit obvious type annotations for local variables. (since Dart 3.6)\n\nhttps://dart.dev/tools/linter-rules/omit_obvious_local_variable_types"
},
{
"const": "omit_obvious_property_types",
"description": "Omit obvious type annotations for top-level and static variables. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/omit_obvious_property_types"
},
{
"const": "one_member_abstracts",
"description": "DEPRECATED. Avoid defining a one-member abstract class when a simple function will do. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/one_member_abstracts",
"deprecationMessage": "The lint rule 'one_member_abstracts' is deprecated."
},
{
"const": "only_throw_errors",
"description": "Only throw instances of classes extending either Exception or Error. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/only_throw_errors"
},
{
"const": "overridden_fields",
"description": "Don't override fields. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/overridden_fields"
},
{
"const": "package_api_docs",
"description": "REMOVED. Provide doc comments for all public APIs. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/package_api_docs",
"deprecationMessage": "The lint rule 'package_api_docs' has been removed and no longer has any effect."
},
{
"const": "package_names",
"description": "Use `lowercase_with_underscores` for package names. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/package_names"
},
{
"const": "package_prefixed_library_names",
"description": "Prefix library names with the package name and a dot-separated path. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/package_prefixed_library_names"
},
{
"const": "parameter_assignments",
"description": "Don't reassign references to parameters of functions or methods. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/parameter_assignments"
},
{
"const": "prefer_adjacent_string_concatenation",
"description": "Use adjacent strings to concatenate string literals. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_adjacent_string_concatenation"
},
{
"const": "prefer_asserts_in_initializer_lists",
"description": "Prefer putting asserts in initializer lists. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_asserts_in_initializer_lists"
},
{
"const": "prefer_asserts_with_message",
"description": "Prefer asserts with message. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_asserts_with_message"
},
{
"const": "prefer_bool_in_asserts",
"description": "REMOVED. Prefer using a boolean as the assert condition. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_bool_in_asserts",
"deprecationMessage": "The lint rule 'prefer_bool_in_asserts' has been removed and no longer has any effect."
},
{
"const": "prefer_collection_literals",
"description": "Use collection literals when possible. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_collection_literals"
},
{
"const": "prefer_conditional_assignment",
"description": "Prefer using `??=` over testing for `null`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_conditional_assignment"
},
{
"const": "prefer_const_constructors",
"description": "Prefer `const` with constant constructors. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_const_constructors"
},
{
"const": "prefer_const_constructors_in_immutables",
"description": "Prefer declaring `const` constructors on `@immutable` classes. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_const_constructors_in_immutables"
},
{
"const": "prefer_const_declarations",
"description": "Prefer `const` over `final` for declarations. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_const_declarations"
},
{
"const": "prefer_const_literals_to_create_immutables",
"description": "Prefer const literals as parameters of constructors on @immutable classes. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_const_literals_to_create_immutables"
},
{
"const": "prefer_constructors_over_static_methods",
"description": "Prefer defining constructors instead of static methods to create instances. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_constructors_over_static_methods"
},
{
"const": "prefer_contains",
"description": "Use contains for `List` and `String` instances. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_contains"
},
{
"const": "prefer_double_quotes",
"description": "Prefer double quotes where they won't require escape sequences. (since Dart 2.4)\n\nhttps://dart.dev/tools/linter-rules/prefer_double_quotes"
},
{
"const": "prefer_equal_for_default_values",
"description": "REMOVED. Use `=` to separate a named parameter from its default value. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_equal_for_default_values",
"deprecationMessage": "The lint rule 'prefer_equal_for_default_values' has been removed and no longer has any effect."
},
{
"const": "prefer_expression_function_bodies",
"description": "Use => for short members whose body is a single return statement. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_expression_function_bodies"
},
{
"const": "prefer_final_fields",
"description": "Private field could be `final`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_final_fields"
},
{
"const": "prefer_final_in_for_each",
"description": "Prefer final in for-each loop variable if reference is not reassigned. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/prefer_final_in_for_each"
},
{
"const": "prefer_final_locals",
"description": "Prefer final for variable declarations if they are not reassigned. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_final_locals"
},
{
"const": "prefer_final_parameters",
"description": "DEPRECATED. Prefer final for parameter declarations if they are not reassigned. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/prefer_final_parameters",
"deprecationMessage": "The lint rule 'prefer_final_parameters' is deprecated."
},
{
"const": "prefer_for_elements_to_map_fromIterable",
"description": "Prefer `for` elements when building maps from iterables. (since Dart 2.3)\n\nAlternate spelling of `prefer_for_elements_to_map_fromiterable`; the analyzer resolves both to the same rule.\n\nhttps://dart.dev/tools/linter-rules/prefer_for_elements_to_map_fromIterable"
},
{
"const": "prefer_for_elements_to_map_fromiterable",
"description": "Prefer `for` elements when building maps from iterables. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_for_elements_to_map_fromIterable"
},
{
"const": "prefer_foreach",
"description": "Use `forEach` to only apply a function to all the elements. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_foreach"
},
{
"const": "prefer_function_declarations_over_variables",
"description": "Use a function declaration to bind a function to a name. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_function_declarations_over_variables"
},
{
"const": "prefer_generic_function_type_aliases",
"description": "Prefer generic function type aliases. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_generic_function_type_aliases"
},
{
"const": "prefer_if_elements_to_conditional_expressions",
"description": "Prefer if elements to conditional expressions where possible. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_if_elements_to_conditional_expressions"
},
{
"const": "prefer_if_null_operators",
"description": "Prefer using `??` operators. (since Dart 2.4)\n\nhttps://dart.dev/tools/linter-rules/prefer_if_null_operators"
},
{
"const": "prefer_initializing_formals",
"description": "Use initializing formals when possible. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_initializing_formals"
},
{
"const": "prefer_inlined_adds",
"description": "Inline list item declarations where possible. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_inlined_adds"
},
{
"const": "prefer_int_literals",
"description": "Prefer int literals over double literals. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/prefer_int_literals"
},
{
"const": "prefer_interpolation_to_compose_strings",
"description": "Use interpolation to compose strings and values. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_interpolation_to_compose_strings"
},
{
"const": "prefer_is_empty",
"description": "Use `isEmpty` for `Iterable`s and `Map`s. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_is_empty"
},
{
"const": "prefer_is_not_empty",
"description": "Use `isNotEmpty` for `Iterable`s and `Map`s. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_is_not_empty"
},
{
"const": "prefer_is_not_operator",
"description": "Prefer is! operator. (since Dart 2.7)\n\nhttps://dart.dev/tools/linter-rules/prefer_is_not_operator"
},
{
"const": "prefer_iterable_whereType",
"description": "Prefer to use `whereType` on iterable. (since Dart 2.0)\n\nAlternate spelling of `prefer_iterable_wheretype`; the analyzer resolves both to the same rule.\n\nhttps://dart.dev/tools/linter-rules/prefer_iterable_whereType"
},
{
"const": "prefer_iterable_wheretype",
"description": "Prefer to use `whereType` on iterable. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_iterable_whereType"
},
{
"const": "prefer_mixin",
"description": "Prefer using mixins. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/prefer_mixin"
},
{
"const": "prefer_null_aware_method_calls",
"description": "Prefer `null`-aware method calls. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/prefer_null_aware_method_calls"
},
{
"const": "prefer_null_aware_operators",
"description": "Prefer using `null`-aware operators. (since Dart 2.2)\n\nhttps://dart.dev/tools/linter-rules/prefer_null_aware_operators"
},
{
"const": "prefer_relative_imports",
"description": "Prefer relative imports for files in `lib/`. (since Dart 2.6)\n\nhttps://dart.dev/tools/linter-rules/prefer_relative_imports"
},
{
"const": "prefer_single_quotes",
"description": "Only use double quotes for strings containing single quotes. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_single_quotes"
},
{
"const": "prefer_spread_collections",
"description": "Use spread collections when possible. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_spread_collections"
},
{
"const": "prefer_typing_uninitialized_variables",
"description": "Prefer typing uninitialized variables and fields. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_typing_uninitialized_variables"
},
{
"const": "prefer_void_to_null",
"description": "Don't use the Null type, unless you are positive that you don't want void. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/prefer_void_to_null"
},
{
"const": "provide_deprecation_message",
"description": "Provide a deprecation message, via `@Deprecated(\"message\")`. (since Dart 2.2)\n\nhttps://dart.dev/tools/linter-rules/provide_deprecation_message"
},
{
"const": "public_member_api_docs",
"description": "Document all public members. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/public_member_api_docs"
},
{
"const": "recursive_getters",
"description": "Property getter recursively returns itself. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/recursive_getters"
},
{
"const": "remove_deprecations_in_breaking_versions",
"description": "Deprecation in major version. (since Dart 3.10)\n\nhttps://dart.dev/tools/linter-rules/remove_deprecations_in_breaking_versions"
},
{
"const": "require_trailing_commas",
"description": "Use trailing commas for all parameter lists and argument lists. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/require_trailing_commas"
},
{
"const": "secure_pubspec_urls",
"description": "Use secure urls in `pubspec.yaml`. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/secure_pubspec_urls"
},
{
"const": "simple_directive_paths",
"description": "Use simple directive paths. (since Dart 3.12)\n\nhttps://dart.dev/tools/linter-rules/simple_directive_paths"
},
{
"const": "simplify_variable_pattern",
"description": "Avoid unnecessary member names in variable patterns. (since Dart 3.11)\n\nhttps://dart.dev/tools/linter-rules/simplify_variable_pattern"
},
{
"const": "sized_box_for_whitespace",
"description": "`SizedBox` for whitespace. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/sized_box_for_whitespace"
},
{
"const": "sized_box_shrink_expand",
"description": "Use SizedBox shrink and expand named constructors. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/sized_box_shrink_expand"
},
{
"const": "slash_for_doc_comments",
"description": "Prefer using `///` for doc comments. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/slash_for_doc_comments"
},
{
"const": "sort_child_properties_last",
"description": "Sort child properties last in widget instance creations. (since Dart 2.4)\n\nhttps://dart.dev/tools/linter-rules/sort_child_properties_last"
},
{
"const": "sort_constructors_first",
"description": "Sort constructor declarations before other members. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/sort_constructors_first"
},
{
"const": "sort_pub_dependencies",
"description": "Sort pub dependencies alphabetically. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/sort_pub_dependencies"
},
{
"const": "sort_unnamed_constructors_first",
"description": "Sort unnamed constructor declarations first. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/sort_unnamed_constructors_first"
},
{
"const": "specify_nonobvious_local_variable_types",
"description": "Specify non-obvious type annotations for local variables. (since Dart 3.6)\n\nhttps://dart.dev/tools/linter-rules/specify_nonobvious_local_variable_types"
},
{
"const": "specify_nonobvious_property_types",
"description": "Specify non-obvious type annotations for top-level and static variables. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/specify_nonobvious_property_types"
},
{
"const": "strict_top_level_inference",
"description": "Specify type annotations. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/strict_top_level_inference"
},
{
"const": "super_goes_last",
"description": "REMOVED. Place the `super` call last in a constructor initialization list. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/super_goes_last",
"deprecationMessage": "The lint rule 'super_goes_last' has been removed and no longer has any effect."
},
{
"const": "switch_on_type",
"description": "Avoid switch statements on a 'Type'. (since Dart 3.9)\n\nhttps://dart.dev/tools/linter-rules/switch_on_type"
},
{
"const": "test_types_in_equals",
"description": "Test type of argument in `operator ==(Object other)`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/test_types_in_equals"
},
{
"const": "throw_in_finally",
"description": "Avoid `throw` in `finally` block. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/throw_in_finally"
},
{
"const": "tighten_type_of_initializing_formals",
"description": "Tighten type of initializing formal. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/tighten_type_of_initializing_formals"
},
{
"const": "type_annotate_public_apis",
"description": "Type annotate public APIs. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/type_annotate_public_apis"
},
{
"const": "type_init_formals",
"description": "Don't type annotate initializing formals. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/type_init_formals"
},
{
"const": "type_literal_in_constant_pattern",
"description": "Don't use constant patterns with type literals. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/type_literal_in_constant_pattern"
},
{
"const": "unawaited_futures",
"description": "`Future` results in `async` function bodies must be `await`ed or marked `unawaited` using `dart:async`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unawaited_futures"
},
{
"const": "unintended_html_in_doc_comment",
"description": "Use of angle brackets in a doc comment is treated as HTML by Markdown. (since Dart 3.5)\n\nhttps://dart.dev/tools/linter-rules/unintended_html_in_doc_comment"
},
{
"const": "unnecessary_async",
"description": "EXPERIMENTAL. No await no async. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_async"
},
{
"const": "unnecessary_await_in_return",
"description": "DEPRECATED. Unnecessary `await` keyword in return. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_await_in_return",
"deprecationMessage": "The lint rule 'unnecessary_await_in_return' is deprecated."
},
{
"const": "unnecessary_brace_in_string_interps",
"description": "Avoid using braces in interpolation when not needed. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_brace_in_string_interps"
},
{
"const": "unnecessary_breaks",
"description": "Don't use explicit `break`s when a break is implied. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_breaks"
},
{
"const": "unnecessary_const",
"description": "Avoid `const` keyword. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_const"
},
{
"const": "unnecessary_const_in_enum_constructor",
"description": "Don't use an explicit `const` in a generative enum constructor. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_const_in_enum_constructor"
},
{
"const": "unnecessary_constructor_name",
"description": "Unnecessary `.new` constructor name. (since Dart 2.15)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_constructor_name"
},
{
"const": "unnecessary_final",
"description": "Don't use `final` for local variables. (since Dart 2.7)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_final"
},
{
"const": "unnecessary_getters_setters",
"description": "Avoid wrapping fields in getters and setters just to be \"safe\". (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_getters_setters"
},
{
"const": "unnecessary_ignore",
"description": "Don't ignore a diagnostic code that is not produced. (since Dart 3.8)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_ignore"
},
{
"const": "unnecessary_lambdas",
"description": "Don't create a lambda when a tear-off will do. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_lambdas"
},
{
"const": "unnecessary_late",
"description": "Don't specify the `late` modifier when it is not needed. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_late"
},
{
"const": "unnecessary_library_directive",
"description": "Avoid library directives unless they have documentation comments or annotations. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_library_directive"
},
{
"const": "unnecessary_library_name",
"description": "Don't have a library name in a `library` declaration. (since Dart 3.4)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_library_name"
},
{
"const": "unnecessary_new",
"description": "Unnecessary new keyword. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_new"
},
{
"const": "unnecessary_null_aware_assignments",
"description": "Avoid `null` in `null`-aware assignment. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_null_aware_assignments"
},
{
"const": "unnecessary_null_aware_operator_on_extension_on_nullable",
"description": "Unnecessary null aware operator on extension on a nullable type. (since Dart 2.18)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_null_aware_operator_on_extension_on_nullable"
},
{
"const": "unnecessary_null_checks",
"description": "Unnecessary `null` checks. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_null_checks"
},
{
"const": "unnecessary_null_in_if_null_operators",
"description": "Avoid using `null` in `??` operators. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_null_in_if_null_operators"
},
{
"const": "unnecessary_nullable_for_final_variable_declarations",
"description": "Use a non-nullable type for a final variable initialized with a non-nullable value. (since Dart 2.10)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_nullable_for_final_variable_declarations"
},
{
"const": "unnecessary_overrides",
"description": "Don't override a method to do a super method invocation with the same parameters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_overrides"
},
{
"const": "unnecessary_parenthesis",
"description": "Unnecessary parentheses can be removed. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_parenthesis"
},
{
"const": "unnecessary_primary_constructor_body",
"description": "Unnecessary primary constructor bodies can be removed. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_primary_constructor_body"
},
{
"const": "unnecessary_raw_strings",
"description": "Unnecessary raw string. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_raw_strings"
},
{
"const": "unnecessary_statements",
"description": "Avoid using unnecessary statements. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_statements"
},
{
"const": "unnecessary_string_escapes",
"description": "Remove unnecessary backslashes in strings. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_string_escapes"
},
{
"const": "unnecessary_string_interpolations",
"description": "Unnecessary string interpolation. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_string_interpolations"
},
{
"const": "unnecessary_this",
"description": "Don't access members with `this` unless avoiding shadowing. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_this"
},
{
"const": "unnecessary_this_alias",
"description": "EXPERIMENTAL. Use 'this' directly instead of assigning it to a local variable. (since Dart 3.14)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_this_alias"
},
{
"const": "unnecessary_to_list_in_spreads",
"description": "Unnecessary `toList()` in spreads. (since Dart 2.18)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_to_list_in_spreads"
},
{
"const": "unnecessary_type_name_in_constructor",
"description": "Don't use an explicit type name in a constructor. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_type_name_in_constructor"
},
{
"const": "unnecessary_unawaited",
"description": "Unnecessary use of 'unawaited'. (since Dart 3.9)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_unawaited"
},
{
"const": "unnecessary_underscores",
"description": "Unnecessary underscores can be removed. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_underscores"
},
{
"const": "unreachable_from_main",
"description": "Unreachable top-level members in executable libraries. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/unreachable_from_main"
},
{
"const": "unrelated_type_equality_checks",
"description": "Equality operator `==` invocation with references of unrelated types. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unrelated_type_equality_checks"
},
{
"const": "unsafe_html",
"description": "REMOVED. Avoid unsafe HTML APIs. (since Dart 2.4)\n\nhttps://dart.dev/tools/linter-rules/unsafe_html",
"deprecationMessage": "The lint rule 'unsafe_html' has been removed and no longer has any effect."
},
{
"const": "unsafe_variance",
"description": "EXPERIMENTAL. Unsafe type: Has a type variable in a non-covariant position. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/unsafe_variance"
},
{
"const": "use_build_context_synchronously",
"description": "Do not use `BuildContext` across asynchronous gaps. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/use_build_context_synchronously"
},
{
"const": "use_colored_box",
"description": "Use `ColoredBox`. (since Dart 2.17)\n\nhttps://dart.dev/tools/linter-rules/use_colored_box"
},
{
"const": "use_declaring_parameters",
"description": "Use a declaring parameter. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/use_declaring_parameters"
},
{
"const": "use_decorated_box",
"description": "Use `DecoratedBox`. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/use_decorated_box"
},
{
"const": "use_enums",
"description": "Use enums rather than classes that behave like enums. (since Dart 2.17)\n\nhttps://dart.dev/tools/linter-rules/use_enums"
},
{
"const": "use_full_hex_values_for_flutter_colors",
"description": "Prefer an 8-digit hexadecimal integer (for example, 0xFFFFFFFF) to instantiate a Color. (since Dart 2.2)\n\nhttps://dart.dev/tools/linter-rules/use_full_hex_values_for_flutter_colors"
},
{
"const": "use_function_type_syntax_for_parameters",
"description": "Use generic function type syntax for parameters. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/use_function_type_syntax_for_parameters"
},
{
"const": "use_if_null_to_convert_nulls_to_bools",
"description": "DEPRECATED. Use `??` operators to convert `null`s to `bool`s. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/use_if_null_to_convert_nulls_to_bools",
"deprecationMessage": "The lint rule 'use_if_null_to_convert_nulls_to_bools' is deprecated."
},
{
"const": "use_is_even_rather_than_modulo",
"description": "Prefer intValue.isOdd/isEven instead of checking the result of % 2. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/use_is_even_rather_than_modulo"
},
{
"const": "use_key_in_widget_constructors",
"description": "Use key in widget constructors. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/use_key_in_widget_constructors"
},
{
"const": "use_late_for_private_fields_and_variables",
"description": "EXPERIMENTAL. Use late for private members with a non-nullable type. (since Dart 2.10)\n\nhttps://dart.dev/tools/linter-rules/use_late_for_private_fields_and_variables"
},
{
"const": "use_named_constants",
"description": "Use predefined named constants. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/use_named_constants"
},
{
"const": "use_null_aware_elements",
"description": "If-elements testing for null can be replaced with null-aware elements. (since Dart 3.8)\n\nhttps://dart.dev/tools/linter-rules/use_null_aware_elements"
},
{
"const": "use_raw_strings",
"description": "Use raw string to avoid escapes. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/use_raw_strings"
},
{
"const": "use_rethrow_when_possible",
"description": "Use rethrow to rethrow a caught exception. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/use_rethrow_when_possible"
},
{
"const": "use_setters_to_change_properties",
"description": "Use a setter for operations that conceptually change a property. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/use_setters_to_change_properties"
},
{
"const": "use_string_buffers",
"description": "Use string buffers to compose strings. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/use_string_buffers"
},
{
"const": "use_string_in_part_of_directives",
"description": "Use string in part of directives. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/use_string_in_part_of_directives"
},
{
"const": "use_super_parameters",
"description": "EXPERIMENTAL. Use super-initializer parameters where possible. (since Dart 2.17)\n\nhttps://dart.dev/tools/linter-rules/use_super_parameters"
},
{
"const": "use_test_throws_matchers",
"description": "Use throwsA matcher instead of fail(). (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/use_test_throws_matchers"
},
{
"const": "use_to_and_as_if_applicable",
"description": "Start the name of the method with to/_to or as/_as if applicable. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/use_to_and_as_if_applicable"
},
{
"const": "use_truncating_division",
"description": "Use truncating division. (since Dart 3.6)\n\nhttps://dart.dev/tools/linter-rules/use_truncating_division"
},
{
"const": "valid_regexps",
"description": "Use valid regular expression syntax. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/valid_regexps"
},
{
"const": "var_with_no_type_annotation",
"description": "EXPERIMENTAL. Avoid declaring parameters with `var` and no type annotation. (since Dart 3.12)\n\nhttps://dart.dev/tools/linter-rules/var_with_no_type_annotation"
},
{
"const": "void_checks",
"description": "Don't assign to `void`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/void_checks"
}
]
},
"uniqueItems": true
},
{
"type": "object",
"properties": {
"always_declare_return_types": {
"type": [
"boolean",
"null"
],
"description": "Declare method return types. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_declare_return_types"
},
"always_put_control_body_on_new_line": {
"type": [
"boolean",
"null"
],
"description": "Separate the control structure expression from its statement. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_put_control_body_on_new_line"
},
"always_put_required_named_parameters_first": {
"type": [
"boolean",
"null"
],
"description": "Put required named parameters first. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_put_required_named_parameters_first"
},
"always_require_non_null_named_parameters": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Specify `@required` on named parameters without defaults. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_require_non_null_named_parameters",
"deprecationMessage": "The lint rule 'always_require_non_null_named_parameters' has been removed and no longer has any effect."
},
"always_specify_types": {
"type": [
"boolean",
"null"
],
"description": "Specify type annotations. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/always_specify_types"
},
"always_use_package_imports": {
"type": [
"boolean",
"null"
],
"description": "Avoid relative imports for files in `lib/`. (since Dart 2.10)\n\nhttps://dart.dev/tools/linter-rules/always_use_package_imports"
},
"annotate_overrides": {
"type": [
"boolean",
"null"
],
"description": "Annotate overridden members. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/annotate_overrides"
},
"annotate_redeclares": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Annotate redeclared members. (since Dart 3.2)\n\nhttps://dart.dev/tools/linter-rules/annotate_redeclares"
},
"async_return_with_no_await": {
"type": [
"boolean",
"null"
],
"description": "Return with no await. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/async_return_with_no_await"
},
"avoid_annotating_with_dynamic": {
"type": [
"boolean",
"null"
],
"description": "Avoid annotating with `dynamic` when not required. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_annotating_with_dynamic"
},
"avoid_as": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Avoid using `as`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_as",
"deprecationMessage": "The lint rule 'avoid_as' has been removed and no longer has any effect."
},
"avoid_bool_literals_in_conditional_expressions": {
"type": [
"boolean",
"null"
],
"description": "Avoid `bool` literals in conditional expressions. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_bool_literals_in_conditional_expressions"
},
"avoid_catches_without_on_clauses": {
"type": [
"boolean",
"null"
],
"description": "Avoid catches without on clauses. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_catches_without_on_clauses"
},
"avoid_catching_errors": {
"type": [
"boolean",
"null"
],
"description": "Don't explicitly catch `Error` or types that implement it. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_catching_errors"
},
"avoid_classes_with_only_static_members": {
"type": [
"boolean",
"null"
],
"description": "Avoid defining a class that contains only static members. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_classes_with_only_static_members"
},
"avoid_double_and_int_checks": {
"type": [
"boolean",
"null"
],
"description": "Avoid `double` and `int` checks. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_double_and_int_checks"
},
"avoid_dynamic_calls": {
"type": [
"boolean",
"null"
],
"description": "Avoid method calls or property accesses on a `dynamic` target. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/avoid_dynamic_calls"
},
"avoid_empty_else": {
"type": [
"boolean",
"null"
],
"description": "Avoid empty statements in else clauses. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_empty_else"
},
"avoid_equals_and_hash_code_on_mutable_classes": {
"type": [
"boolean",
"null"
],
"description": "Avoid overloading operator == and hashCode on classes not marked `@immutable`. (since Dart 2.6)\n\nhttps://dart.dev/tools/linter-rules/avoid_equals_and_hash_code_on_mutable_classes"
},
"avoid_escaping_inner_quotes": {
"type": [
"boolean",
"null"
],
"description": "Avoid escaping inner quotes by converting surrounding quotes. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/avoid_escaping_inner_quotes"
},
"avoid_field_initializers_in_const_classes": {
"type": [
"boolean",
"null"
],
"description": "Avoid field initializers in const classes. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_field_initializers_in_const_classes"
},
"avoid_final_parameters": {
"type": [
"boolean",
"null"
],
"description": "Avoid `final` for parameter declarations. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/avoid_final_parameters"
},
"avoid_function_literals_in_foreach_calls": {
"type": [
"boolean",
"null"
],
"description": "Avoid using `forEach` with a function literal. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_function_literals_in_foreach_calls"
},
"avoid_futureor_void": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Avoid using 'FutureOr<void>' as the type of a result. (since Dart 3.6)\n\nhttps://dart.dev/tools/linter-rules/avoid_futureor_void"
},
"avoid_implementing_value_types": {
"type": [
"boolean",
"null"
],
"description": "Don't implement classes that override `==`. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_implementing_value_types"
},
"avoid_init_to_null": {
"type": [
"boolean",
"null"
],
"description": "Don't explicitly initialize variables to `null`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_init_to_null"
},
"avoid_js_rounded_ints": {
"type": [
"boolean",
"null"
],
"description": "Avoid JavaScript rounded ints. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_js_rounded_ints"
},
"avoid_multiple_declarations_per_line": {
"type": [
"boolean",
"null"
],
"description": "Don't declare multiple variables on a single line. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/avoid_multiple_declarations_per_line"
},
"avoid_null_checks_in_equality_operators": {
"type": [
"boolean",
"null"
],
"description": "DEPRECATED. Don't check for `null` in custom `==` operators. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_null_checks_in_equality_operators",
"deprecationMessage": "The lint rule 'avoid_null_checks_in_equality_operators' is deprecated."
},
"avoid_positional_boolean_parameters": {
"type": [
"boolean",
"null"
],
"description": "Avoid positional boolean parameters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_positional_boolean_parameters"
},
"avoid_print": {
"type": [
"boolean",
"null"
],
"description": "Avoid `print` calls in production code. (since Dart 2.5)\n\nhttps://dart.dev/tools/linter-rules/avoid_print"
},
"avoid_private_typedef_functions": {
"type": [
"boolean",
"null"
],
"description": "DEPRECATED. Avoid private typedef functions. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_private_typedef_functions",
"deprecationMessage": "The lint rule 'avoid_private_typedef_functions' is deprecated."
},
"avoid_redundant_argument_values": {
"type": [
"boolean",
"null"
],
"description": "Avoid redundant argument values. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/avoid_redundant_argument_values"
},
"avoid_relative_lib_imports": {
"type": [
"boolean",
"null"
],
"description": "Avoid relative imports for files in `lib/`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_relative_lib_imports"
},
"avoid_renaming_method_parameters": {
"type": [
"boolean",
"null"
],
"description": "Don't rename parameters of overridden methods. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_renaming_method_parameters"
},
"avoid_return_types_on_setters": {
"type": [
"boolean",
"null"
],
"description": "Avoid return types on setters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_return_types_on_setters"
},
"avoid_returning_null": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Avoid returning null from members whose return type is bool, double, int, or num. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_returning_null",
"deprecationMessage": "The lint rule 'avoid_returning_null' has been removed and no longer has any effect."
},
"avoid_returning_null_for_future": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Avoid returning null for Future. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_returning_null_for_future",
"deprecationMessage": "The lint rule 'avoid_returning_null_for_future' has been removed and no longer has any effect."
},
"avoid_returning_null_for_void": {
"type": [
"boolean",
"null"
],
"description": "Avoid returning `null` for `void`. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_returning_null_for_void"
},
"avoid_returning_this": {
"type": [
"boolean",
"null"
],
"description": "Avoid returning this from methods just to enable a fluent interface. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_returning_this"
},
"avoid_setters_without_getters": {
"type": [
"boolean",
"null"
],
"description": "Avoid setters without getters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_setters_without_getters"
},
"avoid_shadowing_type_parameters": {
"type": [
"boolean",
"null"
],
"description": "Avoid shadowing type parameters. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_shadowing_type_parameters"
},
"avoid_single_cascade_in_expression_statements": {
"type": [
"boolean",
"null"
],
"description": "Avoid single cascade in expression statements. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_single_cascade_in_expression_statements"
},
"avoid_slow_async_io": {
"type": [
"boolean",
"null"
],
"description": "Avoid slow asynchronous `dart:io` methods. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_slow_async_io"
},
"avoid_type_to_string": {
"type": [
"boolean",
"null"
],
"description": "Avoid <Type>.toString() in production code since results may be minified. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/avoid_type_to_string"
},
"avoid_types_as_parameter_names": {
"type": [
"boolean",
"null"
],
"description": "Avoid types as parameter names. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_types_as_parameter_names"
},
"avoid_types_on_closure_parameters": {
"type": [
"boolean",
"null"
],
"description": "Avoid annotating types for function expression parameters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_types_on_closure_parameters"
},
"avoid_unnecessary_containers": {
"type": [
"boolean",
"null"
],
"description": "Avoid unnecessary containers. (since Dart 2.7)\n\nhttps://dart.dev/tools/linter-rules/avoid_unnecessary_containers"
},
"avoid_unstable_final_fields": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Avoid overriding a final field to return different values if called multiple times. (since Dart 3.3)\n\nhttps://dart.dev/tools/linter-rules/avoid_unstable_final_fields",
"deprecationMessage": "The lint rule 'avoid_unstable_final_fields' has been removed and no longer has any effect."
},
"avoid_unused_constructor_parameters": {
"type": [
"boolean",
"null"
],
"description": "Avoid defining unused parameters in constructors. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/avoid_unused_constructor_parameters"
},
"avoid_void_async": {
"type": [
"boolean",
"null"
],
"description": "Avoid `async` functions that return `void`. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/avoid_void_async"
},
"avoid_web_libraries_in_flutter": {
"type": [
"boolean",
"null"
],
"description": "Avoid using web-only libraries outside Flutter web plugin packages. (since Dart 2.6)\n\nhttps://dart.dev/tools/linter-rules/avoid_web_libraries_in_flutter"
},
"await_only_futures": {
"type": [
"boolean",
"null"
],
"description": "Await only futures. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/await_only_futures"
},
"camel_case_extensions": {
"type": [
"boolean",
"null"
],
"description": "Name extensions using UpperCamelCase. (since Dart 2.6)\n\nhttps://dart.dev/tools/linter-rules/camel_case_extensions"
},
"camel_case_types": {
"type": [
"boolean",
"null"
],
"description": "Name types using UpperCamelCase. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/camel_case_types"
},
"cancel_subscriptions": {
"type": [
"boolean",
"null"
],
"description": "Cancel instances of `dart:async` `StreamSubscription`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/cancel_subscriptions"
},
"cascade_invocations": {
"type": [
"boolean",
"null"
],
"description": "Cascade consecutive method invocations on the same reference. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/cascade_invocations"
},
"cast_nullable_to_non_nullable": {
"type": [
"boolean",
"null"
],
"description": "Don't cast a nullable value to a non nullable type. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/cast_nullable_to_non_nullable"
},
"close_sinks": {
"type": [
"boolean",
"null"
],
"description": "Close instances of `dart:core` `Sink`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/close_sinks"
},
"collection_methods_unrelated_type": {
"type": [
"boolean",
"null"
],
"description": "Invocation of various collection methods with arguments of unrelated types. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/collection_methods_unrelated_type"
},
"combinators_ordering": {
"type": [
"boolean",
"null"
],
"description": "Sort combinator names alphabetically. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/combinators_ordering"
},
"comment_references": {
"type": [
"boolean",
"null"
],
"description": "Only reference in-scope identifiers in doc comments. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/comment_references"
},
"conditional_uri_does_not_exist": {
"type": [
"boolean",
"null"
],
"description": "Missing conditional import. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/conditional_uri_does_not_exist"
},
"constant_identifier_names": {
"type": [
"boolean",
"null"
],
"description": "Prefer using lowerCamelCase for constant names. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/constant_identifier_names"
},
"control_flow_in_finally": {
"type": [
"boolean",
"null"
],
"description": "Avoid control flow in `finally` blocks. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/control_flow_in_finally"
},
"curly_braces_in_flow_control_structures": {
"type": [
"boolean",
"null"
],
"description": "DO use curly braces for all flow control structures. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/curly_braces_in_flow_control_structures"
},
"dangling_library_doc_comments": {
"type": [
"boolean",
"null"
],
"description": "Attach library doc comments to library directives. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/dangling_library_doc_comments"
},
"depend_on_referenced_packages": {
"type": [
"boolean",
"null"
],
"description": "Depend on referenced packages. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/depend_on_referenced_packages"
},
"deprecated_consistency": {
"type": [
"boolean",
"null"
],
"description": "Missing deprecated annotation. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/deprecated_consistency"
},
"deprecated_member_use_from_same_package": {
"type": [
"boolean",
"null"
],
"description": "Avoid using deprecated elements from within the package in which they are declared. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/deprecated_member_use_from_same_package"
},
"diagnostic_describe_all_properties": {
"type": [
"boolean",
"null"
],
"description": "DO reference all public properties in debug methods. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/diagnostic_describe_all_properties"
},
"directives_ordering": {
"type": [
"boolean",
"null"
],
"description": "Adhere to Effective Dart Guide directives sorting conventions. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/directives_ordering"
},
"discarded_futures": {
"type": [
"boolean",
"null"
],
"description": "There should be no `Future`-returning calls in synchronous functions unless they are assigned or returned. (since Dart 2.18)\n\nhttps://dart.dev/tools/linter-rules/discarded_futures"
},
"do_not_use_environment": {
"type": [
"boolean",
"null"
],
"description": "Do not use environment declared variables. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/do_not_use_environment"
},
"document_ignores": {
"type": [
"boolean",
"null"
],
"description": "Document ignore comments. (since Dart 3.5)\n\nhttps://dart.dev/tools/linter-rules/document_ignores"
},
"empty_catches": {
"type": [
"boolean",
"null"
],
"description": "Avoid empty catch blocks. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/empty_catches"
},
"empty_constructor_bodies": {
"type": [
"boolean",
"null"
],
"description": "Use `;` instead of `{}` for empty constructor bodies. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/empty_constructor_bodies"
},
"empty_container_bodies": {
"type": [
"boolean",
"null"
],
"description": "Use `;` instead of `{}` for empty container bodies. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/empty_container_bodies"
},
"empty_statements": {
"type": [
"boolean",
"null"
],
"description": "Avoid empty statements. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/empty_statements"
},
"enable_null_safety": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Do use sound null safety. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/enable_null_safety",
"deprecationMessage": "The lint rule 'enable_null_safety' has been removed and no longer has any effect."
},
"eol_at_end_of_file": {
"type": [
"boolean",
"null"
],
"description": "Put a single newline at end of file. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/eol_at_end_of_file"
},
"exhaustive_cases": {
"type": [
"boolean",
"null"
],
"description": "Define case clauses for all constants in enum-like types. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/exhaustive_cases"
},
"file_names": {
"type": [
"boolean",
"null"
],
"description": "Name source files using `lowercase_with_underscores`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/file_names"
},
"flutter_style_todos": {
"type": [
"boolean",
"null"
],
"description": "Use Flutter TODO format: // TODO(username): message, https://URL-to-issue. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/flutter_style_todos"
},
"future_sync_value": {
"type": [
"boolean",
"null"
],
"description": "For synchronous values, `Future.syncValue` is more performant. (since Dart 3.14)\n\nhttps://dart.dev/tools/linter-rules/future_sync_value"
},
"hash_and_equals": {
"type": [
"boolean",
"null"
],
"description": "Always override `hashCode` if overriding `==`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/hash_and_equals"
},
"implementation_imports": {
"type": [
"boolean",
"null"
],
"description": "Don't import implementation files from another package. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/implementation_imports"
},
"implicit_call_tearoffs": {
"type": [
"boolean",
"null"
],
"description": "Explicitly tear-off `call` methods when using an object as a Function. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/implicit_call_tearoffs"
},
"implicit_reopen": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Don't implicitly reopen classes. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/implicit_reopen"
},
"initialize_in_field_declaration": {
"type": [
"boolean",
"null"
],
"description": "Initialize the field in the field's initializer. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/initialize_in_field_declaration"
},
"invalid_case_patterns": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Use case expressions that are valid in Dart 3.0. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/invalid_case_patterns"
},
"invalid_runtime_check_with_js_interop_types": {
"type": [
"boolean",
"null"
],
"description": "Avoid runtime type tests with JS interop types where the result may not be platform-consistent. (since Dart 3.5)\n\nhttps://dart.dev/tools/linter-rules/invalid_runtime_check_with_js_interop_types"
},
"invariant_booleans": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Conditions should not unconditionally evaluate to `true` or to `false`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/invariant_booleans",
"deprecationMessage": "The lint rule 'invariant_booleans' has been removed and no longer has any effect."
},
"iterable_contains_unrelated_type": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Invocation of `Iterable<E>.contains` with references of unrelated types. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/iterable_contains_unrelated_type",
"deprecationMessage": "The lint rule 'iterable_contains_unrelated_type' has been removed and no longer has any effect."
},
"join_return_with_assignment": {
"type": [
"boolean",
"null"
],
"description": "Join return statement with assignment when possible. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/join_return_with_assignment"
},
"leading_newlines_in_multiline_strings": {
"type": [
"boolean",
"null"
],
"description": "Start multiline strings with a newline. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/leading_newlines_in_multiline_strings"
},
"library_annotations": {
"type": [
"boolean",
"null"
],
"description": "Attach library annotations to library directives. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/library_annotations"
},
"library_names": {
"type": [
"boolean",
"null"
],
"description": "Name libraries using `lowercase_with_underscores`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/library_names"
},
"library_prefixes": {
"type": [
"boolean",
"null"
],
"description": "Use `lowercase_with_underscores` when specifying a library prefix. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/library_prefixes"
},
"library_private_types_in_public_api": {
"type": [
"boolean",
"null"
],
"description": "Avoid using private types in public APIs. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/library_private_types_in_public_api"
},
"lines_longer_than_80_chars": {
"type": [
"boolean",
"null"
],
"description": "Avoid lines longer than 80 characters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/lines_longer_than_80_chars"
},
"list_remove_unrelated_type": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Invocation of `remove` with references of unrelated types. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/list_remove_unrelated_type",
"deprecationMessage": "The lint rule 'list_remove_unrelated_type' has been removed and no longer has any effect."
},
"literal_only_boolean_expressions": {
"type": [
"boolean",
"null"
],
"description": "Boolean expression composed only with literals. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/literal_only_boolean_expressions"
},
"matching_super_parameters": {
"type": [
"boolean",
"null"
],
"description": "Use matching super parameter names. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/matching_super_parameters"
},
"migrate_design_widgets": {
"type": [
"boolean",
"null"
],
"description": "Design widgets should be imported from Material or Cupertino packages. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/migrate_design_widgets"
},
"missing_code_block_language_in_doc_comment": {
"type": [
"boolean",
"null"
],
"description": "A code block is missing a specified language. (since Dart 3.4)\n\nhttps://dart.dev/tools/linter-rules/missing_code_block_language_in_doc_comment"
},
"missing_whitespace_between_adjacent_strings": {
"type": [
"boolean",
"null"
],
"description": "Missing whitespace between adjacent strings. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/missing_whitespace_between_adjacent_strings"
},
"no_adjacent_strings_in_list": {
"type": [
"boolean",
"null"
],
"description": "Don't use adjacent strings in list. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/no_adjacent_strings_in_list"
},
"no_default_cases": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. No default cases. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/no_default_cases"
},
"no_duplicate_case_values": {
"type": [
"boolean",
"null"
],
"description": "Don't use more than one case with same value. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/no_duplicate_case_values"
},
"no_dynamic_casts": {
"type": [
"boolean",
"null"
],
"description": "Avoid implicit casts from `dynamic`. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/no_dynamic_casts"
},
"no_leading_underscores_for_library_prefixes": {
"type": [
"boolean",
"null"
],
"description": "Avoid leading underscores for library prefixes. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/no_leading_underscores_for_library_prefixes"
},
"no_leading_underscores_for_local_identifiers": {
"type": [
"boolean",
"null"
],
"description": "Avoid leading underscores for local identifiers. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/no_leading_underscores_for_local_identifiers"
},
"no_literal_bool_comparisons": {
"type": [
"boolean",
"null"
],
"description": "Don't compare boolean expressions to boolean literals. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/no_literal_bool_comparisons"
},
"no_logic_in_create_state": {
"type": [
"boolean",
"null"
],
"description": "Don't put any logic in createState. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/no_logic_in_create_state"
},
"no_raw_types": {
"type": [
"boolean",
"null"
],
"description": "Avoid raw types. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/no_raw_types"
},
"no_runtimeType_toString": {
"type": [
"boolean",
"null"
],
"description": "Avoid calling `toString()` on `runtimeType`. (since Dart 2.8)\n\nAlternate spelling of `no_runtimetype_tostring`; the analyzer resolves both to the same rule.\n\nhttps://dart.dev/tools/linter-rules/no_runtimetype_tostring"
},
"no_runtimetype_tostring": {
"type": [
"boolean",
"null"
],
"description": "Avoid calling `toString()` on `runtimeType`. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/no_runtimetype_tostring"
},
"no_self_assignments": {
"type": [
"boolean",
"null"
],
"description": "Don't assign a variable to itself. (since Dart 3.1)\n\nhttps://dart.dev/tools/linter-rules/no_self_assignments"
},
"no_wildcard_variable_uses": {
"type": [
"boolean",
"null"
],
"description": "Don't use wildcard parameters or variables. (since Dart 3.1)\n\nhttps://dart.dev/tools/linter-rules/no_wildcard_variable_uses"
},
"non_constant_identifier_names": {
"type": [
"boolean",
"null"
],
"description": "Name non-constant identifiers using lowerCamelCase. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/non_constant_identifier_names"
},
"noop_primitive_operations": {
"type": [
"boolean",
"null"
],
"description": "Noop primitive operations. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/noop_primitive_operations"
},
"null_check_on_nullable_type_parameter": {
"type": [
"boolean",
"null"
],
"description": "Don't use `null` check on a potentially nullable type parameter. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/null_check_on_nullable_type_parameter"
},
"null_closures": {
"type": [
"boolean",
"null"
],
"description": "Do not pass `null` as an argument where a closure is expected. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/null_closures"
},
"omit_local_variable_types": {
"type": [
"boolean",
"null"
],
"description": "Omit type annotations for local variables. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/omit_local_variable_types"
},
"omit_obvious_local_variable_types": {
"type": [
"boolean",
"null"
],
"description": "Omit obvious type annotations for local variables. (since Dart 3.6)\n\nhttps://dart.dev/tools/linter-rules/omit_obvious_local_variable_types"
},
"omit_obvious_property_types": {
"type": [
"boolean",
"null"
],
"description": "Omit obvious type annotations for top-level and static variables. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/omit_obvious_property_types"
},
"one_member_abstracts": {
"type": [
"boolean",
"null"
],
"description": "DEPRECATED. Avoid defining a one-member abstract class when a simple function will do. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/one_member_abstracts",
"deprecationMessage": "The lint rule 'one_member_abstracts' is deprecated."
},
"only_throw_errors": {
"type": [
"boolean",
"null"
],
"description": "Only throw instances of classes extending either Exception or Error. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/only_throw_errors"
},
"overridden_fields": {
"type": [
"boolean",
"null"
],
"description": "Don't override fields. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/overridden_fields"
},
"package_api_docs": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Provide doc comments for all public APIs. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/package_api_docs",
"deprecationMessage": "The lint rule 'package_api_docs' has been removed and no longer has any effect."
},
"package_names": {
"type": [
"boolean",
"null"
],
"description": "Use `lowercase_with_underscores` for package names. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/package_names"
},
"package_prefixed_library_names": {
"type": [
"boolean",
"null"
],
"description": "Prefix library names with the package name and a dot-separated path. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/package_prefixed_library_names"
},
"parameter_assignments": {
"type": [
"boolean",
"null"
],
"description": "Don't reassign references to parameters of functions or methods. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/parameter_assignments"
},
"prefer_adjacent_string_concatenation": {
"type": [
"boolean",
"null"
],
"description": "Use adjacent strings to concatenate string literals. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_adjacent_string_concatenation"
},
"prefer_asserts_in_initializer_lists": {
"type": [
"boolean",
"null"
],
"description": "Prefer putting asserts in initializer lists. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_asserts_in_initializer_lists"
},
"prefer_asserts_with_message": {
"type": [
"boolean",
"null"
],
"description": "Prefer asserts with message. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_asserts_with_message"
},
"prefer_bool_in_asserts": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Prefer using a boolean as the assert condition. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_bool_in_asserts",
"deprecationMessage": "The lint rule 'prefer_bool_in_asserts' has been removed and no longer has any effect."
},
"prefer_collection_literals": {
"type": [
"boolean",
"null"
],
"description": "Use collection literals when possible. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_collection_literals"
},
"prefer_conditional_assignment": {
"type": [
"boolean",
"null"
],
"description": "Prefer using `??=` over testing for `null`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_conditional_assignment"
},
"prefer_const_constructors": {
"type": [
"boolean",
"null"
],
"description": "Prefer `const` with constant constructors. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_const_constructors"
},
"prefer_const_constructors_in_immutables": {
"type": [
"boolean",
"null"
],
"description": "Prefer declaring `const` constructors on `@immutable` classes. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_const_constructors_in_immutables"
},
"prefer_const_declarations": {
"type": [
"boolean",
"null"
],
"description": "Prefer `const` over `final` for declarations. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_const_declarations"
},
"prefer_const_literals_to_create_immutables": {
"type": [
"boolean",
"null"
],
"description": "Prefer const literals as parameters of constructors on @immutable classes. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_const_literals_to_create_immutables"
},
"prefer_constructors_over_static_methods": {
"type": [
"boolean",
"null"
],
"description": "Prefer defining constructors instead of static methods to create instances. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_constructors_over_static_methods"
},
"prefer_contains": {
"type": [
"boolean",
"null"
],
"description": "Use contains for `List` and `String` instances. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_contains"
},
"prefer_double_quotes": {
"type": [
"boolean",
"null"
],
"description": "Prefer double quotes where they won't require escape sequences. (since Dart 2.4)\n\nhttps://dart.dev/tools/linter-rules/prefer_double_quotes"
},
"prefer_equal_for_default_values": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Use `=` to separate a named parameter from its default value. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_equal_for_default_values",
"deprecationMessage": "The lint rule 'prefer_equal_for_default_values' has been removed and no longer has any effect."
},
"prefer_expression_function_bodies": {
"type": [
"boolean",
"null"
],
"description": "Use => for short members whose body is a single return statement. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_expression_function_bodies"
},
"prefer_final_fields": {
"type": [
"boolean",
"null"
],
"description": "Private field could be `final`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_final_fields"
},
"prefer_final_in_for_each": {
"type": [
"boolean",
"null"
],
"description": "Prefer final in for-each loop variable if reference is not reassigned. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/prefer_final_in_for_each"
},
"prefer_final_locals": {
"type": [
"boolean",
"null"
],
"description": "Prefer final for variable declarations if they are not reassigned. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_final_locals"
},
"prefer_final_parameters": {
"type": [
"boolean",
"null"
],
"description": "DEPRECATED. Prefer final for parameter declarations if they are not reassigned. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/prefer_final_parameters",
"deprecationMessage": "The lint rule 'prefer_final_parameters' is deprecated."
},
"prefer_for_elements_to_map_fromIterable": {
"type": [
"boolean",
"null"
],
"description": "Prefer `for` elements when building maps from iterables. (since Dart 2.3)\n\nAlternate spelling of `prefer_for_elements_to_map_fromiterable`; the analyzer resolves both to the same rule.\n\nhttps://dart.dev/tools/linter-rules/prefer_for_elements_to_map_fromIterable"
},
"prefer_for_elements_to_map_fromiterable": {
"type": [
"boolean",
"null"
],
"description": "Prefer `for` elements when building maps from iterables. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_for_elements_to_map_fromIterable"
},
"prefer_foreach": {
"type": [
"boolean",
"null"
],
"description": "Use `forEach` to only apply a function to all the elements. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_foreach"
},
"prefer_function_declarations_over_variables": {
"type": [
"boolean",
"null"
],
"description": "Use a function declaration to bind a function to a name. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_function_declarations_over_variables"
},
"prefer_generic_function_type_aliases": {
"type": [
"boolean",
"null"
],
"description": "Prefer generic function type aliases. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_generic_function_type_aliases"
},
"prefer_if_elements_to_conditional_expressions": {
"type": [
"boolean",
"null"
],
"description": "Prefer if elements to conditional expressions where possible. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_if_elements_to_conditional_expressions"
},
"prefer_if_null_operators": {
"type": [
"boolean",
"null"
],
"description": "Prefer using `??` operators. (since Dart 2.4)\n\nhttps://dart.dev/tools/linter-rules/prefer_if_null_operators"
},
"prefer_initializing_formals": {
"type": [
"boolean",
"null"
],
"description": "Use initializing formals when possible. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_initializing_formals"
},
"prefer_inlined_adds": {
"type": [
"boolean",
"null"
],
"description": "Inline list item declarations where possible. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_inlined_adds"
},
"prefer_int_literals": {
"type": [
"boolean",
"null"
],
"description": "Prefer int literals over double literals. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/prefer_int_literals"
},
"prefer_interpolation_to_compose_strings": {
"type": [
"boolean",
"null"
],
"description": "Use interpolation to compose strings and values. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_interpolation_to_compose_strings"
},
"prefer_is_empty": {
"type": [
"boolean",
"null"
],
"description": "Use `isEmpty` for `Iterable`s and `Map`s. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_is_empty"
},
"prefer_is_not_empty": {
"type": [
"boolean",
"null"
],
"description": "Use `isNotEmpty` for `Iterable`s and `Map`s. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_is_not_empty"
},
"prefer_is_not_operator": {
"type": [
"boolean",
"null"
],
"description": "Prefer is! operator. (since Dart 2.7)\n\nhttps://dart.dev/tools/linter-rules/prefer_is_not_operator"
},
"prefer_iterable_whereType": {
"type": [
"boolean",
"null"
],
"description": "Prefer to use `whereType` on iterable. (since Dart 2.0)\n\nAlternate spelling of `prefer_iterable_wheretype`; the analyzer resolves both to the same rule.\n\nhttps://dart.dev/tools/linter-rules/prefer_iterable_whereType"
},
"prefer_iterable_wheretype": {
"type": [
"boolean",
"null"
],
"description": "Prefer to use `whereType` on iterable. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_iterable_whereType"
},
"prefer_mixin": {
"type": [
"boolean",
"null"
],
"description": "Prefer using mixins. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/prefer_mixin"
},
"prefer_null_aware_method_calls": {
"type": [
"boolean",
"null"
],
"description": "Prefer `null`-aware method calls. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/prefer_null_aware_method_calls"
},
"prefer_null_aware_operators": {
"type": [
"boolean",
"null"
],
"description": "Prefer using `null`-aware operators. (since Dart 2.2)\n\nhttps://dart.dev/tools/linter-rules/prefer_null_aware_operators"
},
"prefer_relative_imports": {
"type": [
"boolean",
"null"
],
"description": "Prefer relative imports for files in `lib/`. (since Dart 2.6)\n\nhttps://dart.dev/tools/linter-rules/prefer_relative_imports"
},
"prefer_single_quotes": {
"type": [
"boolean",
"null"
],
"description": "Only use double quotes for strings containing single quotes. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_single_quotes"
},
"prefer_spread_collections": {
"type": [
"boolean",
"null"
],
"description": "Use spread collections when possible. (since Dart 2.3)\n\nhttps://dart.dev/tools/linter-rules/prefer_spread_collections"
},
"prefer_typing_uninitialized_variables": {
"type": [
"boolean",
"null"
],
"description": "Prefer typing uninitialized variables and fields. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/prefer_typing_uninitialized_variables"
},
"prefer_void_to_null": {
"type": [
"boolean",
"null"
],
"description": "Don't use the Null type, unless you are positive that you don't want void. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/prefer_void_to_null"
},
"provide_deprecation_message": {
"type": [
"boolean",
"null"
],
"description": "Provide a deprecation message, via `@Deprecated(\"message\")`. (since Dart 2.2)\n\nhttps://dart.dev/tools/linter-rules/provide_deprecation_message"
},
"public_member_api_docs": {
"type": [
"boolean",
"null"
],
"description": "Document all public members. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/public_member_api_docs"
},
"recursive_getters": {
"type": [
"boolean",
"null"
],
"description": "Property getter recursively returns itself. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/recursive_getters"
},
"remove_deprecations_in_breaking_versions": {
"type": [
"boolean",
"null"
],
"description": "Deprecation in major version. (since Dart 3.10)\n\nhttps://dart.dev/tools/linter-rules/remove_deprecations_in_breaking_versions"
},
"require_trailing_commas": {
"type": [
"boolean",
"null"
],
"description": "Use trailing commas for all parameter lists and argument lists. (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/require_trailing_commas"
},
"secure_pubspec_urls": {
"type": [
"boolean",
"null"
],
"description": "Use secure urls in `pubspec.yaml`. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/secure_pubspec_urls"
},
"simple_directive_paths": {
"type": [
"boolean",
"null"
],
"description": "Use simple directive paths. (since Dart 3.12)\n\nhttps://dart.dev/tools/linter-rules/simple_directive_paths"
},
"simplify_variable_pattern": {
"type": [
"boolean",
"null"
],
"description": "Avoid unnecessary member names in variable patterns. (since Dart 3.11)\n\nhttps://dart.dev/tools/linter-rules/simplify_variable_pattern"
},
"sized_box_for_whitespace": {
"type": [
"boolean",
"null"
],
"description": "`SizedBox` for whitespace. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/sized_box_for_whitespace"
},
"sized_box_shrink_expand": {
"type": [
"boolean",
"null"
],
"description": "Use SizedBox shrink and expand named constructors. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/sized_box_shrink_expand"
},
"slash_for_doc_comments": {
"type": [
"boolean",
"null"
],
"description": "Prefer using `///` for doc comments. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/slash_for_doc_comments"
},
"sort_child_properties_last": {
"type": [
"boolean",
"null"
],
"description": "Sort child properties last in widget instance creations. (since Dart 2.4)\n\nhttps://dart.dev/tools/linter-rules/sort_child_properties_last"
},
"sort_constructors_first": {
"type": [
"boolean",
"null"
],
"description": "Sort constructor declarations before other members. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/sort_constructors_first"
},
"sort_pub_dependencies": {
"type": [
"boolean",
"null"
],
"description": "Sort pub dependencies alphabetically. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/sort_pub_dependencies"
},
"sort_unnamed_constructors_first": {
"type": [
"boolean",
"null"
],
"description": "Sort unnamed constructor declarations first. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/sort_unnamed_constructors_first"
},
"specify_nonobvious_local_variable_types": {
"type": [
"boolean",
"null"
],
"description": "Specify non-obvious type annotations for local variables. (since Dart 3.6)\n\nhttps://dart.dev/tools/linter-rules/specify_nonobvious_local_variable_types"
},
"specify_nonobvious_property_types": {
"type": [
"boolean",
"null"
],
"description": "Specify non-obvious type annotations for top-level and static variables. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/specify_nonobvious_property_types"
},
"strict_top_level_inference": {
"type": [
"boolean",
"null"
],
"description": "Specify type annotations. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/strict_top_level_inference"
},
"super_goes_last": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Place the `super` call last in a constructor initialization list. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/super_goes_last",
"deprecationMessage": "The lint rule 'super_goes_last' has been removed and no longer has any effect."
},
"switch_on_type": {
"type": [
"boolean",
"null"
],
"description": "Avoid switch statements on a 'Type'. (since Dart 3.9)\n\nhttps://dart.dev/tools/linter-rules/switch_on_type"
},
"test_types_in_equals": {
"type": [
"boolean",
"null"
],
"description": "Test type of argument in `operator ==(Object other)`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/test_types_in_equals"
},
"throw_in_finally": {
"type": [
"boolean",
"null"
],
"description": "Avoid `throw` in `finally` block. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/throw_in_finally"
},
"tighten_type_of_initializing_formals": {
"type": [
"boolean",
"null"
],
"description": "Tighten type of initializing formal. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/tighten_type_of_initializing_formals"
},
"type_annotate_public_apis": {
"type": [
"boolean",
"null"
],
"description": "Type annotate public APIs. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/type_annotate_public_apis"
},
"type_init_formals": {
"type": [
"boolean",
"null"
],
"description": "Don't type annotate initializing formals. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/type_init_formals"
},
"type_literal_in_constant_pattern": {
"type": [
"boolean",
"null"
],
"description": "Don't use constant patterns with type literals. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/type_literal_in_constant_pattern"
},
"unawaited_futures": {
"type": [
"boolean",
"null"
],
"description": "`Future` results in `async` function bodies must be `await`ed or marked `unawaited` using `dart:async`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unawaited_futures"
},
"unintended_html_in_doc_comment": {
"type": [
"boolean",
"null"
],
"description": "Use of angle brackets in a doc comment is treated as HTML by Markdown. (since Dart 3.5)\n\nhttps://dart.dev/tools/linter-rules/unintended_html_in_doc_comment"
},
"unnecessary_async": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. No await no async. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_async"
},
"unnecessary_await_in_return": {
"type": [
"boolean",
"null"
],
"description": "DEPRECATED. Unnecessary `await` keyword in return. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_await_in_return",
"deprecationMessage": "The lint rule 'unnecessary_await_in_return' is deprecated."
},
"unnecessary_brace_in_string_interps": {
"type": [
"boolean",
"null"
],
"description": "Avoid using braces in interpolation when not needed. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_brace_in_string_interps"
},
"unnecessary_breaks": {
"type": [
"boolean",
"null"
],
"description": "Don't use explicit `break`s when a break is implied. (since Dart 3.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_breaks"
},
"unnecessary_const": {
"type": [
"boolean",
"null"
],
"description": "Avoid `const` keyword. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_const"
},
"unnecessary_const_in_enum_constructor": {
"type": [
"boolean",
"null"
],
"description": "Don't use an explicit `const` in a generative enum constructor. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_const_in_enum_constructor"
},
"unnecessary_constructor_name": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary `.new` constructor name. (since Dart 2.15)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_constructor_name"
},
"unnecessary_final": {
"type": [
"boolean",
"null"
],
"description": "Don't use `final` for local variables. (since Dart 2.7)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_final"
},
"unnecessary_getters_setters": {
"type": [
"boolean",
"null"
],
"description": "Avoid wrapping fields in getters and setters just to be \"safe\". (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_getters_setters"
},
"unnecessary_ignore": {
"type": [
"boolean",
"null"
],
"description": "Don't ignore a diagnostic code that is not produced. (since Dart 3.8)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_ignore"
},
"unnecessary_lambdas": {
"type": [
"boolean",
"null"
],
"description": "Don't create a lambda when a tear-off will do. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_lambdas"
},
"unnecessary_late": {
"type": [
"boolean",
"null"
],
"description": "Don't specify the `late` modifier when it is not needed. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_late"
},
"unnecessary_library_directive": {
"type": [
"boolean",
"null"
],
"description": "Avoid library directives unless they have documentation comments or annotations. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_library_directive"
},
"unnecessary_library_name": {
"type": [
"boolean",
"null"
],
"description": "Don't have a library name in a `library` declaration. (since Dart 3.4)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_library_name"
},
"unnecessary_new": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary new keyword. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_new"
},
"unnecessary_null_aware_assignments": {
"type": [
"boolean",
"null"
],
"description": "Avoid `null` in `null`-aware assignment. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_null_aware_assignments"
},
"unnecessary_null_aware_operator_on_extension_on_nullable": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary null aware operator on extension on a nullable type. (since Dart 2.18)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_null_aware_operator_on_extension_on_nullable"
},
"unnecessary_null_checks": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary `null` checks. (since Dart 2.12)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_null_checks"
},
"unnecessary_null_in_if_null_operators": {
"type": [
"boolean",
"null"
],
"description": "Avoid using `null` in `??` operators. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_null_in_if_null_operators"
},
"unnecessary_nullable_for_final_variable_declarations": {
"type": [
"boolean",
"null"
],
"description": "Use a non-nullable type for a final variable initialized with a non-nullable value. (since Dart 2.10)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_nullable_for_final_variable_declarations"
},
"unnecessary_overrides": {
"type": [
"boolean",
"null"
],
"description": "Don't override a method to do a super method invocation with the same parameters. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_overrides"
},
"unnecessary_parenthesis": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary parentheses can be removed. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_parenthesis"
},
"unnecessary_primary_constructor_body": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary primary constructor bodies can be removed. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_primary_constructor_body"
},
"unnecessary_raw_strings": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary raw string. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_raw_strings"
},
"unnecessary_statements": {
"type": [
"boolean",
"null"
],
"description": "Avoid using unnecessary statements. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_statements"
},
"unnecessary_string_escapes": {
"type": [
"boolean",
"null"
],
"description": "Remove unnecessary backslashes in strings. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_string_escapes"
},
"unnecessary_string_interpolations": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary string interpolation. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_string_interpolations"
},
"unnecessary_this": {
"type": [
"boolean",
"null"
],
"description": "Don't access members with `this` unless avoiding shadowing. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_this"
},
"unnecessary_this_alias": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Use 'this' directly instead of assigning it to a local variable. (since Dart 3.14)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_this_alias"
},
"unnecessary_to_list_in_spreads": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary `toList()` in spreads. (since Dart 2.18)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_to_list_in_spreads"
},
"unnecessary_type_name_in_constructor": {
"type": [
"boolean",
"null"
],
"description": "Don't use an explicit type name in a constructor. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_type_name_in_constructor"
},
"unnecessary_unawaited": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary use of 'unawaited'. (since Dart 3.9)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_unawaited"
},
"unnecessary_underscores": {
"type": [
"boolean",
"null"
],
"description": "Unnecessary underscores can be removed. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/unnecessary_underscores"
},
"unreachable_from_main": {
"type": [
"boolean",
"null"
],
"description": "Unreachable top-level members in executable libraries. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/unreachable_from_main"
},
"unrelated_type_equality_checks": {
"type": [
"boolean",
"null"
],
"description": "Equality operator `==` invocation with references of unrelated types. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/unrelated_type_equality_checks"
},
"unsafe_html": {
"type": [
"boolean",
"null"
],
"description": "REMOVED. Avoid unsafe HTML APIs. (since Dart 2.4)\n\nhttps://dart.dev/tools/linter-rules/unsafe_html",
"deprecationMessage": "The lint rule 'unsafe_html' has been removed and no longer has any effect."
},
"unsafe_variance": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Unsafe type: Has a type variable in a non-covariant position. (since Dart 3.7)\n\nhttps://dart.dev/tools/linter-rules/unsafe_variance"
},
"use_build_context_synchronously": {
"type": [
"boolean",
"null"
],
"description": "Do not use `BuildContext` across asynchronous gaps. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/use_build_context_synchronously"
},
"use_colored_box": {
"type": [
"boolean",
"null"
],
"description": "Use `ColoredBox`. (since Dart 2.17)\n\nhttps://dart.dev/tools/linter-rules/use_colored_box"
},
"use_declaring_parameters": {
"type": [
"boolean",
"null"
],
"description": "Use a declaring parameter. (since Dart 3.13)\n\nhttps://dart.dev/tools/linter-rules/use_declaring_parameters"
},
"use_decorated_box": {
"type": [
"boolean",
"null"
],
"description": "Use `DecoratedBox`. (since Dart 2.16)\n\nhttps://dart.dev/tools/linter-rules/use_decorated_box"
},
"use_enums": {
"type": [
"boolean",
"null"
],
"description": "Use enums rather than classes that behave like enums. (since Dart 2.17)\n\nhttps://dart.dev/tools/linter-rules/use_enums"
},
"use_full_hex_values_for_flutter_colors": {
"type": [
"boolean",
"null"
],
"description": "Prefer an 8-digit hexadecimal integer (for example, 0xFFFFFFFF) to instantiate a Color. (since Dart 2.2)\n\nhttps://dart.dev/tools/linter-rules/use_full_hex_values_for_flutter_colors"
},
"use_function_type_syntax_for_parameters": {
"type": [
"boolean",
"null"
],
"description": "Use generic function type syntax for parameters. (since Dart 2.1)\n\nhttps://dart.dev/tools/linter-rules/use_function_type_syntax_for_parameters"
},
"use_if_null_to_convert_nulls_to_bools": {
"type": [
"boolean",
"null"
],
"description": "DEPRECATED. Use `??` operators to convert `null`s to `bool`s. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/use_if_null_to_convert_nulls_to_bools",
"deprecationMessage": "The lint rule 'use_if_null_to_convert_nulls_to_bools' is deprecated."
},
"use_is_even_rather_than_modulo": {
"type": [
"boolean",
"null"
],
"description": "Prefer intValue.isOdd/isEven instead of checking the result of % 2. (since Dart 2.9)\n\nhttps://dart.dev/tools/linter-rules/use_is_even_rather_than_modulo"
},
"use_key_in_widget_constructors": {
"type": [
"boolean",
"null"
],
"description": "Use key in widget constructors. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/use_key_in_widget_constructors"
},
"use_late_for_private_fields_and_variables": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Use late for private members with a non-nullable type. (since Dart 2.10)\n\nhttps://dart.dev/tools/linter-rules/use_late_for_private_fields_and_variables"
},
"use_named_constants": {
"type": [
"boolean",
"null"
],
"description": "Use predefined named constants. (since Dart 2.13)\n\nhttps://dart.dev/tools/linter-rules/use_named_constants"
},
"use_null_aware_elements": {
"type": [
"boolean",
"null"
],
"description": "If-elements testing for null can be replaced with null-aware elements. (since Dart 3.8)\n\nhttps://dart.dev/tools/linter-rules/use_null_aware_elements"
},
"use_raw_strings": {
"type": [
"boolean",
"null"
],
"description": "Use raw string to avoid escapes. (since Dart 2.8)\n\nhttps://dart.dev/tools/linter-rules/use_raw_strings"
},
"use_rethrow_when_possible": {
"type": [
"boolean",
"null"
],
"description": "Use rethrow to rethrow a caught exception. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/use_rethrow_when_possible"
},
"use_setters_to_change_properties": {
"type": [
"boolean",
"null"
],
"description": "Use a setter for operations that conceptually change a property. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/use_setters_to_change_properties"
},
"use_string_buffers": {
"type": [
"boolean",
"null"
],
"description": "Use string buffers to compose strings. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/use_string_buffers"
},
"use_string_in_part_of_directives": {
"type": [
"boolean",
"null"
],
"description": "Use string in part of directives. (since Dart 2.19)\n\nhttps://dart.dev/tools/linter-rules/use_string_in_part_of_directives"
},
"use_super_parameters": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Use super-initializer parameters where possible. (since Dart 2.17)\n\nhttps://dart.dev/tools/linter-rules/use_super_parameters"
},
"use_test_throws_matchers": {
"type": [
"boolean",
"null"
],
"description": "Use throwsA matcher instead of fail(). (since Dart 2.14)\n\nhttps://dart.dev/tools/linter-rules/use_test_throws_matchers"
},
"use_to_and_as_if_applicable": {
"type": [
"boolean",
"null"
],
"description": "Start the name of the method with to/_to or as/_as if applicable. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/use_to_and_as_if_applicable"
},
"use_truncating_division": {
"type": [
"boolean",
"null"
],
"description": "Use truncating division. (since Dart 3.6)\n\nhttps://dart.dev/tools/linter-rules/use_truncating_division"
},
"valid_regexps": {
"type": [
"boolean",
"null"
],
"description": "Use valid regular expression syntax. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/valid_regexps"
},
"var_with_no_type_annotation": {
"type": [
"boolean",
"null"
],
"description": "EXPERIMENTAL. Avoid declaring parameters with `var` and no type annotation. (since Dart 3.12)\n\nhttps://dart.dev/tools/linter-rules/var_with_no_type_annotation"
},
"void_checks": {
"type": [
"boolean",
"null"
],
"description": "Don't assign to `void`. (since Dart 2.0)\n\nhttps://dart.dev/tools/linter-rules/void_checks"
}
},
"additionalProperties": false
}
]
}
},
"additionalProperties": false
},
"formatter": {
"type": [
"object",
"null"
],
"description": "`dart format` behaviour.",
"properties": {
"page_width": {
"type": "integer",
"minimum": 1,
"description": "Column the formatter wraps at. Defaults to 80."
},
"trailing_commas": {
"type": "string",
"enum": [
"automate",
"preserve"
],
"description": "`automate`: the formatter adds and removes trailing commas. `preserve`: a trailing comma you write forces the construct to split."
}
},
"additionalProperties": false
},
"code-style": {
"type": [
"object",
"null"
],
"description": "Code style options.",
"properties": {
"format": {
"type": "boolean",
"description": "Whether formatting suggestions are reported."
}
},
"additionalProperties": false
},
"plugins": {
"type": [
"object",
"null"
],
"description": "Analyzer plugins, by package name. Only honoured in the options file at the root of the analysis context.",
"additionalProperties": {
"anyOf": [
{
"type": "string",
"description": "A pub version constraint, for example `^1.0.0`."
},
{
"type": "object",
"description": "A plugin source: exactly the keys the analyzer accepts (`diagnostics`, `path`, `version`).",
"properties": {
"diagnostics": {
"type": "object",
"description": "Per-diagnostic severity overrides contributed by this plugin.",
"additionalProperties": {
"description": "How this diagnostic is treated: a severity, or whether it is ignored.\n`false` and `ignore` suppress it; `true` and `include` restore the default.",
"anyOf": [
{
"type": "string",
"enum": [
"ignore",
"false",
"include",
"true",
"error",
"info",
"warning"
]
},
{
"type": "boolean",
"description": "Unquoted `true`/`false` in YAML are booleans, and are accepted here."
}
]
}
},
"path": {
"type": "string",
"description": "Path to a local plugin package."
},
"version": {
"type": "string",
"description": "A pub version constraint, for example `^1.0.0`."
}
},
"additionalProperties": false
}
]
}
}
},
"additionalProperties": true
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment