リンター規則
Dart リンターを使用して、Dart コードの潜在的な問題を特定します。リンターは IDE または dart analyze
コマンドを使用して使用できます。個々のリンター規則の有効化と無効化の方法については、アナライザーのドキュメントの個々の規則のセクションを参照してください。
このページでは、すべてのリンター規則を、各規則の使用例、トリガーとなるコードパターン、コードの修正方法などの詳細とともに一覧表示しています。
集合
#互換性のあるリンター規則を個別に選択する必要性を回避するには、次のパッケージが提供するリンター規則セットから始めることを検討してください。
- lints
- Dart チームによってキュレーションされた2つの規則セットが含まれています。スコア付けされる pub.dev にアップロードされたパッケージで使用される
core
規則セットを少なくとも使用することをお勧めします。または、さらに良いことに、追加の問題を特定し、スタイルとフォーマットを強制するcore
のスーパーセットであるrecommended
規則セットを使用してください。Flutter コードを作成する場合は、lints
を基盤とするflutter_lints
パッケージの規則セットを使用してください。
- flutter_lints
- Flutter チームが Flutter アプリ、パッケージ、プラグインで使用することを推奨する
flutter
規則セットが含まれています。この規則セットは、スコアを部分的に決定するcore
セットのスーパーセットであるrecommended
セットのスーパーセットです。 pub.devにアップロードされたパッケージの。
特定の規則セットの使用方法については、リンター規則の有効化と無効化に関するドキュメントを参照してください。
事前に定義された規則セットの詳細については、pub.dev の#lints
トピックを確認してください。
ステータス
#各規則には、ステータスまたは成熟度レベルがあります。
- 安定版
- これらの規則は安全に使用でき、最新の Dart 言語のバージョンで機能することが検証されています。実験的、非推奨、または削除とマークされていない限り、すべての規則は安定版と見なされます。
- 実験版
- これらの規則はまだ評価中であり、安定版になることはありません。慎重に使用し、発生した問題を報告してください。
- 非推奨
- これらの規則は、もはや使用を推奨されておらず、将来の Dart リリースで削除される可能性があります。
- 削除済み
- これらの規則は、最新の安定版 Dart リリースで既に削除されています。
クイックフィックス
#一部の規則は、クイックフィックスを使用して自動的に修正できます。クイックフィックスは、リンター規則によって報告された問題の修正を目的とした自動編集です。
規則にクイックフィックスがある場合は、dart fix
またはDart をサポートするエディターを使用して適用できます。詳細については、分析の問題に対するクイックフィックスを参照してください。
規則
#以下は、すべてのリンター規則のインデックスと、それらの機能の簡単な説明です。各規則の詳細については、その名前をクリックしてください。
Dart 3.5.3
のすべてのリンター規則を含む自動生成リストについては、すべてのリンター規則を参照してください。
always_declare_return_types
メソッドの戻り値の型を宣言します。
always_put_control_body_on_new_line
制御構造式とそのステートメントを分離します。
always_put_required_named_parameters_first
必須の命名パラメーターを最初に配置します。
always_require_non_null_named_parameters
(削除済み)
デフォルト値のない命名パラメーターに@required
を指定します。
always_specify_types
型注釈を指定します。
always_use_package_imports
lib/
内のファイルに相対インポートを使用しないようにします。
annotate_overrides
オーバーライドされたメンバーに注釈を付けます。
annotate_redeclares
(実験的)
再宣言されたメンバーに注釈を付けます。
avoid_annotating_with_dynamic
必要のない場合はdynamic
で注釈を付けないようにします。
avoid_as
(削除済み)as
の使用を避けます。
avoid_bool_literals_in_conditional_expressions
条件式でbool
リテラルを使用しないようにします。
avoid_catches_without_on_clauses
on句のないcatch句を使用しないようにします。
avoid_catching_errors
Error
またはそれを実装する型を明示的にキャッチしません。
avoid_classes_with_only_static_members
静的メンバーのみを含むクラスを定義しないようにします。
avoid_double_and_int_checks
double
とint
のチェックを避けます。
avoid_dynamic_calls
dynamic
ターゲットに対してメソッド呼び出しまたはプロパティアクセスを使用しないようにします。
avoid_empty_else
else句で空のステートメントを使用しないようにします。
avoid_equals_and_hash_code_on_mutable_classes
@immutable
でマークされていないクラスで演算子==とhashCodeをオーバーロードしないようにします。
avoid_escaping_inner_quotes
周囲の引用符を変換することで、内部の引用符のエスケープを避けます。
avoid_field_initializers_in_const_classes
constクラスでフィールドイニシャライザーを使用しないようにします。
avoid_final_parameters
パラメーター宣言にfinal
を使用しないようにします。
avoid_function_literals_in_foreach_calls
関数リテラルを使用してforEach
を使用しないようにします。
avoid_futureor_void
(未リリース)
'FutureOr' を結果の型として使用しないようにします。
avoid_implementing_value_types
==
をオーバーライドするクラスを実装しません。
avoid_init_to_null
変数をnull
に明示的に初期化しません。
avoid_js_rounded_ints
JavaScriptの丸められた整数を避けます。
avoid_multiple_declarations_per_line
1行に複数の変数を宣言しません。
avoid_null_checks_in_equality_operators
(削除済み)
カスタム==
演算子でnull
をチェックしません。
avoid_positional_boolean_parameters
位置指定ブールパラメーターを使用しないようにします。
avoid_print
本番コードでprint
呼び出しを使用しないようにします。
avoid_private_typedef_functions
プライベートなtypedef関数を使用しないようにします。
avoid_redundant_argument_values
冗長な引数値を使用しないようにします。
avoid_relative_lib_imports
lib/
内のファイルに相対インポートを使用しないようにします。
avoid_renaming_method_parameters
オーバーライドされたメソッドのパラメーターの名前を変更しません。
avoid_return_types_on_setters
セッターで戻り値の型を使用しないようにします。
avoid_returning_null
(削除済み)
戻り値の型がbool、double、int、またはnumであるメンバーからnullを返さないようにします。
avoid_returning_null_for_future
(削除済み)
Futureに対してnullを返さないようにします。
avoid_returning_null_for_void
void
に対してnull
を返さないようにします。
avoid_returning_this
流暢なインターフェースを有効にするためだけにメソッドからthisを返さないようにします。
avoid_setters_without_getters
ゲッターのないセッターを使用しないようにします。
avoid_shadowing_type_parameters
型パラメーターをシャドウしないようにします。
avoid_single_cascade_in_expression_statements
式ステートメントで単一のcascadeを使用しないようにします。
avoid_slow_async_io
非同期dart:io
メソッドの速度を落とさないようにします。
avoid_type_to_string
結果がミニファイされる可能性があるため、本番コードでは
avoid_types_as_parameter_names
型をパラメーター名として使用しないようにします。
avoid_types_on_closure_parameters
関数式のパラメータに型注釈を付けないでください。
avoid_unnecessary_containers
不要なコンテナを避けてください。
avoid_unstable_final_fields
(削除済み)
複数回呼び出された場合に異なる値を返すために、finalフィールドをオーバーライドしないでください。
avoid_unused_constructor_parameters
コンストラクタで未使用のパラメータを定義しないでください。
avoid_void_async
void
を返すasync
関数を避けてください。
avoid_web_libraries_in_flutter
Flutter Webプラグインパッケージ以外で、Web専用ライブラリを使用しないでください。
await_only_futures
Futureのみをawaitしてください。
camel_case_extensions
拡張機能にはUpperCamelCaseを使用してください。
camel_case_types
型名にはUpperCamelCaseを使用してください。
cancel_subscriptions
dart:async
のStreamSubscription
のインスタンスをキャンセルしてください。
cascade_invocations
同じ参照に対する連続したメソッド呼び出しをカスケードしてください。
cast_nullable_to_non_nullable
null許容型をnull非許容型にキャストしないでください。
close_sinks
dart:core
のSink
のインスタンスをクローズしてください。
collection_methods_unrelated_type
関連のない型の引数で、様々なコレクションメソッドを呼び出さないでください。
combinators_ordering
コンバイナの名前をアルファベット順に並べてください。
comment_references
ドキュメントコメントでは、スコープ内の識別子のみを参照してください。
conditional_uri_does_not_exist
条件付きインポートが不足しています。
constant_identifier_names
定数名にはlowerCamelCaseを使用することをお勧めします。
control_flow_in_finally
finally
ブロックで制御フローを避けてください。
curly_braces_in_flow_control_structures
すべての制御フロー構造に中括弧を使用してください。
dangling_library_doc_comments
ライブラリドキュメントコメントをライブラリディレクティブに添付してください。
depend_on_referenced_packages
参照されているパッケージに依存してください。
deprecated_consistency
非推奨の注釈がありません。
deprecated_member_use_from_same_package
宣言されているパッケージ内から非推奨の要素を使用しないでください。
diagnostic_describe_all_properties
デバッグメソッドでは、すべてのパブリックプロパティを参照してください。
directives_ordering
Effective Dartガイドのディレクティブのソート規則に従ってください。
discarded_futures
非同期関数を非async
ブロックで呼び出さないでください。
do_not_use_environment
宣言された環境変数を使用しないでください。
document_ignores
無視コメントを文書化してください。
empty_catches
空のcatchブロックを避けてください。
empty_constructor_bodies
空のコンストラクタボディには;
を{}
の代わりに使用してください。
empty_statements
空の文を避けてください。
enable_null_safety
(削除済み)
サウンドなnull安全機能を使用してください。
eol_at_end_of_file
ファイルの最後に改行を1つ追加してください。
exhaustive_cases
enumのようなクラス内のすべての定数に対して、case節を定義してください。
file_names
ソースファイル名はlowercase_with_underscores
を使用してください。
flutter_style_todos
Flutter TODOフォーマットを使用してください: // TODO(username): message, https://URL-to-issue。
hash_and_equals
==
をオーバーライドする場合は、常にhashCode
もオーバーライドしてください。
implementation_imports
他のパッケージから実装ファイルをインポートしないでください。
implicit_call_tearoffs
オブジェクトを関数として使用する場合、call
メソッドを明示的にティアオフしてください。
implicit_reopen
(実験的)
クラスを暗黙的に再オープンしないでください。
invalid_case_patterns
(実験的)
Dart 3.0で有効なcase式を使用してください。
invalid_runtime_check_with_js_interop_types
結果がプラットフォーム間で一貫しない可能性のあるJS相互運用型で、ランタイム型テストを避けてください。
invariant_booleans
(削除済み)
条件は、無条件にtrue
またはfalse
に評価されるべきではありません。
iterable_contains_unrelated_type
(削除済み)
関連のない型の参照でIterable<E>.contains
を呼び出さないでください。
join_return_with_assignment
可能であれば、return文と代入を結合してください。
leading_newlines_in_multiline_strings
複数行文字列は改行から始めてください。
library_annotations
ライブラリアノテーションをライブラリディレクティブに添付してください。
library_names
ライブラリ名にはlowercase_with_underscores
を使用してください。
library_prefixes
ライブラリプレフィックスを指定する際にはlowercase_with_underscores
を使用してください。
library_private_types_in_public_api
パブリックAPIでプライベート型を使用しないでください。
lines_longer_than_80_chars
80文字を超える行を避けてください。
list_remove_unrelated_type
(削除済み)
関連のない型の参照でremove
を呼び出さないでください。
literal_only_boolean_expressions
リテラルのみで構成されるブール式。
matching_super_parameters
一致するスーパーパラメータ名を使用してください。
missing_code_block_language_in_doc_comment
コードブロックに指定された言語がありません。
missing_whitespace_between_adjacent_strings
隣接する文字列間に空白がありません。
no_adjacent_strings_in_list
リスト内で隣接する文字列を使用しないでください。
no_default_cases
(実験的)
デフォルトのケースはありません。
no_duplicate_case_values
同じ値を持つケースを複数使用しないでください。
no_leading_underscores_for_library_prefixes
ライブラリプレフィックスの先頭にアンダースコアを使用しないでください。
no_leading_underscores_for_local_identifiers
ローカル識別子の先頭にアンダースコアを使用しないでください。
no_literal_bool_comparisons
ブール式をブールリテラルと比較しないでください。
no_logic_in_create_state
createStateにロジックを置かないでください。
no_runtimeType_toString
runtimeType
でtoString()
を呼び出さないでください。
no_self_assignments
変数を自分自身に代入しないでください。
no_wildcard_variable_uses
ワイルドカードパラメータまたは変数を使用しないでください。
non_constant_identifier_names
非定数識別子にはlowerCamelCaseを使用してください。
noop_primitive_operations
無効なプリミティブ演算。
null_check_on_nullable_type_parameter
null許容型パラメータでnull
チェックを使用しないでください。
null_closures
クロージャが期待される引数にnull
を渡さないでください。
omit_local_variable_types
ローカル変数の型注釈を省略してください。
omit_obvious_local_variable_types
(未リリース)
ローカル変数の明らかな型注釈を省略してください。
one_member_abstracts
単純な関数で済む場合、1つのメンバーを持つ抽象クラスを定義しないでください。
only_throw_errors
ExceptionまたはErrorを拡張するクラスのインスタンスのみをスローしてください。
overridden_fields
フィールドをオーバーライドしないでください。
package_api_docs
(非推奨)
すべてのパブリックAPIにドキュメントコメントを付けてください。
package_names
パッケージ名にはlowercase_with_underscores
を使用してください。
package_prefixed_library_names
ライブラリ名をパッケージ名とドット区切りのパスでプレフィックスしてください。
parameter_assignments
関数またはメソッドのパラメータへの参照を再代入しないでください。
prefer_adjacent_string_concatenation
隣接する文字列を使用して文字列リテラルを連結してください。
prefer_asserts_in_initializer_lists
アサーションはイニシャライザリストに入れることをお勧めします。
prefer_asserts_with_message
メッセージ付きのアサーションを使用することをお勧めします。
prefer_bool_in_asserts
(削除済み)
アサーション条件としてブール値を使用することをお勧めします。
prefer_collection_literals
可能であれば、コレクションリテラルを使用してください。
prefer_conditional_assignment
null
のテストよりも??=
を使用することをお勧めします。
prefer_const_constructors
定数コンストラクタにはconst
を使用することをお勧めします。
prefer_const_constructors_in_immutables
@immutable
クラスでconst
コンストラクタを宣言することをお勧めします。
prefer_const_declarations
宣言にはfinal
よりもconst
を使用することをお勧めします。
prefer_const_literals_to_create_immutables
@immutable
クラスのコンストラクタのパラメータとして、constリテラルを使用することをお勧めします。
prefer_constructors_over_static_methods
インスタンスを作成するには、静的メソッドの代わりにコンストラクタを定義することをお勧めします。
prefer_contains
List
とString
のインスタンスにはcontainsを使用してください。
prefer_double_quotes
エスケープシーケンスが必要ない場合は、二重引用符を使用することをお勧めします。
prefer_equal_for_default_values
(削除済み)
名前付きパラメータとそのデフォルト値を区切るには=
を使用してください。
prefer_expression_function_bodies
ボディが単一のreturn文である短いメンバーには=>
を使用してください。
prefer_final_fields
プライベートフィールドはfinal
にすることができます。
prefer_final_in_for_each
参照が再代入されない場合は、for-eachループ変数にfinalを使用することをお勧めします。
prefer_final_locals
再代入されない変数宣言にはfinalを使用することをお勧めします。
prefer_final_parameters
再代入されないパラメータ宣言にはfinalを使用することをお勧めします。
prefer_for_elements_to_map_fromIterable
反復可能オブジェクトからマップを作成する場合は、for
要素を使用することをお勧めします。
prefer_foreach
すべての要素に関数だけを適用する場合は、forEach
を使用してください。
prefer_function_declarations_over_variables
関数名をバインドするには、関数宣言を使用してください。
prefer_generic_function_type_aliases
ジェネリック関数型エイリアスを使用することをお勧めします。
prefer_if_elements_to_conditional_expressions
可能な場合は、条件式よりもif要素を使用することをお勧めします。
prefer_if_null_operators
??
演算子を使用することをお勧めします。
prefer_initializing_formals
可能であれば、初期化フォームを使用してください。
prefer_inlined_adds
可能であれば、リスト項目の宣言をインラインしてください。
prefer_int_literals
doubleリテラルよりもintリテラルを使用することをお勧めします。
prefer_interpolation_to_compose_strings
文字列と値を合成するには、補間を使用してください。
prefer_is_empty
Iterable
とMap
にはisEmpty
を使用してください。
prefer_is_not_empty
Iterable
とMap
にはisNotEmpty
を使用してください。
prefer_is_not_operator
is!
演算子を使用することをお勧めします。
prefer_iterable_whereType
反復可能オブジェクトにはwhereType
を使用することをお勧めします。
prefer_mixin
mixinを使用することをお勧めします。
prefer_null_aware_method_calls
null
を認識するメソッド呼び出しを使用することをお勧めします。
prefer_null_aware_operators
null
を認識する演算子を使用することをお勧めします。
prefer_relative_imports
lib/
内のファイルには、相対インポートを使用することを推奨します。
prefer_single_quotes
シングルクォートを含む文字列には、ダブルクォートのみを使用してください。
prefer_spread_collections
可能な限り、スプレッドコレクションを使用してください。
prefer_typing_uninitialized_variables
初期化されていない変数とフィールドの型指定を推奨します。
prefer_void_to_null
void が不要でないことが確実でない限り、Null 型を使用しないでください。
provide_deprecation_message
@Deprecated("message")
を使用して、非推奨メッセージを指定してください。
public_member_api_docs
すべての公開メンバーをドキュメント化してください。
recursive_getters
プロパティゲッターが自身を再帰的に返します。
require_trailing_commas
すべての引数リストとパラメーターリストに末尾のカンマを使用してください。
secure_pubspec_urls
pubspec.yaml
では安全なURLを使用してください。
sized_box_for_whitespace
空白にはSizedBox
を使用してください。
sized_box_shrink_expand
SizedBoxのshrinkとexpandの名前付きコンストラクタを使用してください。
slash_for_doc_comments
ドキュメントコメントには///
を使用することを推奨します。
sort_child_properties_last
ウィジェットインスタンスの作成では、子プロパティを最後にソートしてください。
sort_constructors_first
コンストラクタ宣言を他のメンバーの前にソートしてください。
sort_pub_dependencies
pub依存関係をアルファベット順にソートしてください。
sort_unnamed_constructors_first
名前のないコンストラクタ宣言を最初にソートしてください。
specify_nonobvious_local_variable_types
(未リリース)
ローカル変数には、分かりにくい型注釈を指定してください。
super_goes_last
(削除済み)
コンストラクタ初期化リストでは、super
呼び出しを最後に配置してください。
test_types_in_equals
operator ==(Object other)
では、引数の型をテストしてください。
throw_in_finally
finally
ブロックでthrow
を使用しないでください。
tighten_type_of_initializing_formals
初期化形式のパラメータの型を厳密化してください。
type_annotate_public_apis
公開APIの型注釈を付けてください。
type_init_formals
初期化形式のパラメータの型注釈を付けないでください。
type_literal_in_constant_pattern
型リテラルを使用して定数パターンを使用しないでください。
unawaited_futures
async
関数本体のFuture
の結果は、await
するか、dart:async
を使用してunawaited
とマークする必要があります。
unintended_html_in_doc_comment
ドキュメントコメント内の山括弧の使用は、MarkdownによってHTMLとして扱われます。
unnecessary_await_in_return
戻り値での不要なawait
キーワード。
unnecessary_brace_in_string_interps
必要のない場合、補間で括弧を使用しないでください。
unnecessary_breaks
breakが暗黙的に示されている場合、明示的なbreak
を使用しないでください。
unnecessary_const
const
キーワードを使用しないでください。
unnecessary_constructor_name
不要な.new
コンストラクタ名。
unnecessary_final
ローカル変数にfinal
を使用しないでください。
unnecessary_getters_setters
単に「安全」にするために、ゲッターとセッターでフィールドをラップしないでください。
unnecessary_lambdas
ティアオフで済む場合、ラムダを作成しないでください。
unnecessary_late
必要のない場合は、late
修飾子を指定しないでください。
unnecessary_library_directive
ドキュメントコメントまたは注釈がない限り、ライブラリディレクティブを使用しないでください。
unnecessary_library_name
library
宣言にライブラリ名を含めないでください。
unnecessary_new
不要なnewキーワード。
unnecessary_null_aware_assignments
null
をnull
安全な代入で使用しないでください。
unnecessary_null_aware_operator_on_extension_on_nullable
null許容型に対する拡張子での不要なnull安全演算子。
unnecessary_null_checks
(実験的)
不要なnull
チェック。
unnecessary_null_in_if_null_operators
??
演算子でnull
を使用しないでください。
unnecessary_nullable_for_final_variable_declarations
null許容ではない値で初期化されたfinal変数には、null許容ではない型を使用してください。
unnecessary_overrides
同じパラメーターを持つsuperメソッド呼び出しを行うために、メソッドをオーバーライドしないでください。
unnecessary_parenthesis
不要な括弧は削除できます。
unnecessary_raw_strings
不要なraw文字列。
unnecessary_statements
不要なステートメントの使用を避けてください。
unnecessary_string_escapes
文字列内の不要なバックスラッシュを削除してください。
unnecessary_string_interpolations
不要な文字列補間。
unnecessary_this
シャドウイングを回避する場合を除き、this
を使用してメンバーにアクセスしないでください。
unnecessary_to_list_in_spreads
スプレッドでの不要なtoList()
。
unreachable_from_main
実行可能ライブラリ内の到達不可能なトップレベルメンバー。
unrelated_type_equality_checks
関連のない型の参照を使用した等価演算子==
の呼び出し。
unsafe_html
安全でないHTML APIを使用しないでください。
use_build_context_synchronously
非同期ギャップを跨いでBuildContext
を使用しないでください。
use_colored_box
ColoredBox
を使用してください。
use_decorated_box
DecoratedBox
を使用してください。
use_enums
列挙型のように動作するクラスではなく、列挙型を使用してください。
use_full_hex_values_for_flutter_colors
Colorをインスタンス化するには、8桁の16進整数(例:0xFFFFFFFF)を優先してください。
use_function_type_syntax_for_parameters
パラメーターには、汎用関数型構文を使用してください。
use_if_null_to_convert_nulls_to_bools
null
をbool
に変換するには、??
演算子を使用してください。
use_is_even_rather_than_modulo
% 2
の結果をチェックする代わりに、intValue.isOdd/isEvenを優先してください。
use_key_in_widget_constructors
ウィジェットコンストラクタでkeyを使用してください。
use_late_for_private_fields_and_variables
(実験的)
null許容ではない型のプライベートメンバーにはlateを使用してください。
use_named_constants
事前に定義された名前付き定数を使用してください。
use_raw_strings
エスケープを避けるためにraw文字列を使用してください。
use_rethrow_when_possible
キャッチされた例外を再スローするには、rethrowを使用してください。
use_setters_to_change_properties
概念的にプロパティを変更する操作には、セッターを使用してください。
use_string_buffers
文字列を合成するには、文字列バッファを使用してください。
use_string_in_part_of_directives
part ofディレクティブには文字列を使用してください。
use_super_parameters
(実験的)
可能な限り、super初期化子パラメーターを使用してください。
use_test_throws_matchers
fail()の代わりにthrowsAマッチャーを使用してください。
use_to_and_as_if_applicable
該当する場合は、メソッドの名前をto/_toまたはas/_asで始めてください。
use_truncating_division
(未リリース)
切り捨て除算を使用してください。
valid_regexps
有効な正規表現構文を使用してください。
void_checks
void
に代入しないでください。
特に明記されていない限り、このサイトのドキュメントはDart 3.5.3を反映しています。ページは2024年8月7日に最終更新されました。 ソースを表示 または 問題を報告する。