린터 규칙(Linter rules)
린터 규칙(Linter rules)
Dart 린터를 쓰면 Dart 코드에서 잠재적인 문제를 찾아낼 수 있어요. 린터는 IDE를 통해서, 또는 dart analyze 명령으로 사용할 수 있어요. 개별 린터 규칙을 켜고 끄는 방법은 분석기 문서의 개별 규칙 섹션을 참고해요.
이 페이지는 모든 린터 규칙을, 언제 쓰면 좋은지, 어떤 코드 패턴이 규칙을 발동시키는지, 코드를 어떻게 고칠 수 있는지 같은 세부 내용과 함께 정리한 목록이에요.
💡 린터 규칙(때로 린트(lint)라고 부르죠)은 오탐(false positive)이 있을 수 있고, 규칙끼리 항상 서로 일치하지는 않아요. 예를 들어 어떤 규칙은 일반 Dart 패키지에 더 적합하고, 다른 규칙은 Flutter 앱을 위해 설계됐어요.
세트(Sets)
호환되는 린터 규칙을 일일이 골라야 하는 부담을 피하려면, 린터 규칙 세트(rule set)로 시작하는 걸 고려해 봐요. 다음 패키지들이 세트를 제공해요.
lints
Dart 팀이 큐레이션한 두 개의 규칙 세트를 담고 있어요. 최소한 core 규칙 세트는 쓰는 걸 권장하는데, 이 세트는 pub.dev에 업로드된 패키지의 점수 매길 때 사용돼요. 더 나아가서, core의 상위 집합으로서 추가 문제를 찾아내고 스타일과 포맷을 강제하는 recommended 규칙 세트를 쓰는 게 더 좋아요. Flutter 코드를 작성한다면 lints를 기반으로 하는 flutter_lints 패키지의 규칙 세트를 써요.
flutter_lints
Flutter 팀이 Flutter 앱, 패키지, 플러그인에서 쓰도록 권장하는 flutter 규칙 세트를 담고 있어요. 이 규칙 세트는 recommended 세트의 상위 집합이고, recommended는 다시 pub.dev에 업로드된 패키지 점수의 일부를 결정하는 core 세트의 상위 집합이에요.
특정 규칙 세트를 쓰는 방법은 린터 규칙 켜기/끄기 문서를 참고해요. 미리 정의된 규칙 세트를 더 찾으려면 pub.dev의 #lints 토픽을 확인해 봐요.
상태(Status)
각 규칙에는 상태 또는 성숙도가 있어요.
- Stable(안정): 이 규칙들은 사용하기 안전하고 Dart 언어 최신 버전과 함께 기능이 검증됐어요. experimental, deprecated, removed로 표시되지 않는 한 모든 규칙은 안정으로 간주돼요.
- Experimental(실험): 이 규칙들은 아직 평가 중이고 안정화되지 않을 수도 있어요. 주의해서 쓰고, 만나는 문제는 보고해 주세요.
- Deprecated(폐기): 이 규칙들은 더 이상 사용을 권장하지 않으며 향후 Dart 릴리스에서 제거될 수 있어요.
- Removed(제거): 이 규칙들은 최신 안정 Dart 릴리스에서 이미 제거됐어요.
빠른 수정(Quick fixes)
일부 규칙은 빠른 수정(quick fix)으로 자동 수정할 수 있어요. 빠른 수정은 린터 규칙이 보고한 문제를 고치는 데 집중한 자동 편집이에요.
규칙에 빠른 수정이 있다면 dart fix나 Dart 지원이 있는 에디터를 통해 적용할 수 있어요. 자세한 내용은 분석 이슈의 빠른 수정을 참고해요.
규칙(Rules)
다음은 모든 린터 규칙과 그 기능에 대한 짧은 설명을 모은 색인(index)이에요. 특정 규칙에 대해 더 자세히 알고 싶다면 카드의 Learn more 버튼을 클릭해요.
Dart 3.13.3의 모든 린터 규칙을 담은 자동 생성 목록은 All linter rules를 확인해 봐요.
always_declare_return_types— 메서드 반환 타입을 항상 선언해요.always_put_control_body_on_new_line— 제어 구조의 표현식을 문과 분리해서 새 줄에 둬요.always_put_required_named_parameters_first— 필수 named 매개변수를 앞에 두어요.always_require_non_null_named_parameters— 기본값이 없는 named 매개변수에 @required를 지정해요.always_specify_types— 타입 어노테이션을 명시해요.always_use_package_imports— lib/ 안의 파일은 상대 import 대신 package import를 써요.annotate_overrides— 오버라이드한 멤버에 어노테이션을 달아요.annotate_redeclares— 재선언한 멤버에 어노테이션을 달아요.async_return_with_no_await— await 없이 반환하는 async 함수를 피해요.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— static 멤버만 담긴 클래스를 정의하는 걸 피해요.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— 한 줄에 변수를 여러 개 선언하지 마세요.avoid_null_checks_in_equality_operators— 사용자 정의 == 연산자에서 null 검사를 하지 마세요.avoid_positional_boolean_parameters— 위치 기반 boolean 매개변수를 피해요.avoid_print— 프로덕션 코드에서 print 호출을 피해요.avoid_private_typedef_functions— private typedef 함수를 피해요.avoid_redundant_argument_values— 중복되는 인자 값을 피해요.avoid_relative_lib_imports— lib/ 안의 파일은 상대 import를 피해요.avoid_renaming_method_parameters— 오버라이드한 메서드의 매개변수 이름을 바꾸지 마세요.avoid_return_types_on_setters— setter에 반환 타입을 쓰지 마세요.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— 유창한(fluent) 인터페이스를 만들려고 this를 반환하지 마세요.avoid_setters_without_getters— getter 없는 setter를 피해요.avoid_shadowing_type_parameters— 타입 매개변수를 가리는(shadowing) 걸 피해요.avoid_single_cascade_in_expression_statements— 표현식 문에서 단일 캐스케이드를 피해요.avoid_slow_async_io— 느린 비동기 dart:io 메서드를 피해요.avoid_type_to_string— 결과가 난독화(minify)될 수 있으니 프로덕션 코드에서 .toString()을 피해요.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 웹 플러그인 패키지 밖에서 웹 전용 라이브러리를 쓰지 마세요.await_only_futures— Future만 await해요.camel_case_extensions— 확장(extension) 이름은 UpperCamelCase로 지어요.camel_case_types— 타입 이름은 UpperCamelCase로 지어요.cancel_subscriptions— dart:async StreamSubscription 인스턴스를 취소해요.cascade_invocations— 같은 참조에 대한 연속 메서드 호출은 캐스케이드로 묶어요.cast_nullable_to_non_nullable— nullable 값을 non-nullable 타입으로 캐스팅하지 마세요.close_sinks— dart:core Sink 인스턴스를 닫아요.collection_methods_unrelated_type— 관련 없는 타입의 인자로 컬렉션 메서드를 호출하는 걸 피해요.combinators_ordering— 조합자(combinator) 이름을 알파벳순으로 정렬해요.comment_references— 문서 주석에서는 scope 안의 식별자만 참조해요.conditional_uri_does_not_exist— 조건부 import가 없어요.constant_identifier_names— 상수 이름은 lowerCamelCase를 선호해요.control_flow_in_finally— finally 블록에서 제어 흐름을 피해요.curly_braces_in_flow_control_structures— 모든 제어 흐름 구조에 중괄호를 써요.dangling_library_doc_comments— 라이브러리 문서 주석을 library 지시어에 붙여요.depend_on_referenced_packages— 참조하는 패키지에 의존해요.deprecated_consistency— deprecated 어노테이션이 빠져 있어요.deprecated_member_use_from_same_package— 선언된 것과 같은 패키지 안에서 deprecated 요소를 쓰지 마세요.diagnostic_describe_all_properties— 디버그 메서드에서 모든 공개 속성을 참조해요.directives_ordering— Effective Dart 가이드의 지시어 정렬 규칙을 따라요.do_not_use_environment— 환경에 선언된 변수를 쓰지 마세요.document_ignores— ignore 주석을 문서화해요.empty_catches— 빈 catch 블록을 피해요.empty_constructor_bodies— 빈 생성자 본문은 {} 대신 ;을 써요.empty_container_bodies— 빈 컨테이너 본문은 {} 대신 ;을 써요.empty_statements— 빈 문을 피해요.enable_null_safety— 사운드 null safety를 써요.eol_at_end_of_file— 파일 끝에 개행을 하나 둬요.exhaustive_cases— enum 같은 타입의 모든 상수에 대해 case 절을 정의해요.file_names— 소스 파일 이름은 lowercase_with_underscores로 지어요.flutter_style_todos— Flutter TODO 형식을 써요: // TODO(username): message, https://URL-to-issue.future_sync_value— 동기 값에는 Future.syncValue가 더 성능이 좋아요.hash_and_equals— ==를 오버라이드하면 항상 hashCode도 오버라이드해요.implementation_imports— 다른 패키지의 구현 파일을 import하지 마세요.implicit_call_tearoffs— 객체를 Function으로 쓸 때 call 메서드를 명시적으로 tear-off해요.implicit_reopen— 클래스를 암시적으로 재오픈하지 마세요.initialize_in_field_declaration— 필드를 필드 초기화자에서 초기화해요.invalid_case_patterns— Dart 3.0에서 유효한 case 표현식을 써요.invariant_booleans— 조건이 무조건 true나 false로 평가되면 안 돼요.iterable_contains_unrelated_type— 관련 없는 타입의 참조로 Iterable.contains를 호출하는 것을 피해요. join_return_with_assignment— 가능하면 return 문을 할당과 합쳐요.leading_newlines_in_multiline_strings— 멀티라인 문자열은 개행으로 시작해요.library_annotations— 라이브러리 어노테이션을 library 지시어에 붙여요.library_names— 라이브러리 이름은 lowercase_with_underscores로 지어요.library_prefixes— 라이브러리 prefix를 지정할 때 lowercase_with_underscores를 써요.library_private_types_in_public_api— 공개 API에서 private 타입을 쓰는 걸 피해요.lines_longer_than_80_chars— 80자보다 긴 줄을 피해요.list_remove_unrelated_type— 관련 없는 타입의 참조로 remove를 호출하는 것을 피해요.literal_only_boolean_expressions— 리터럴로만 구성된 boolean 표현식을 피해요.matching_super_parameters— 일치하는 super 매개변수 이름을 써요.migrate_design_widgets— 디자인 위젯은 Material이나 Cupertino 패키지에서 import해요.missing_code_block_language_in_doc_comment— 코드 블록에 지정된 언어가 빠져 있어요.missing_whitespace_between_adjacent_strings— 인접한 문자열 사이에 공백이 빠져 있어요.no_adjacent_strings_in_list— 리스트에서 인접한 문자열을 쓰지 마세요.no_default_cases— default 케이스를 쓰지 마세요.no_duplicate_case_values— 같은 값을 가진 case를 둘 이상 쓰지 마세요.no_dynamic_casts— dynamic에서의 암시적 캐스팅을 피해요.no_leading_underscores_for_library_prefixes— 라이브러리 prefix에 선행 밑줄을 쓰지 마세요.no_leading_underscores_for_local_identifiers— 로컬 식별자에 선행 밑줄을 쓰지 마세요.no_literal_bool_comparisons— boolean 표현식을 boolean 리터럴과 비교하지 마세요.no_logic_in_create_state— createState에 로직을 두지 마세요.no_raw_types— 원시(raw) 타입을 피해요.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— 잠재적으로 nullable한 타입 매개변수에 null 검사를 하지 마세요.null_closures— 클로저가 기대되는 자리에 null을 인자로 넘기지 마세요.omit_local_variable_types— 로컬 변수의 타입 어노테이션을 생략해요.omit_obvious_local_variable_types— 로컬 변수의 자명한 타입 어노테이션을 생략해요.omit_obvious_property_types— 최상위·static 변수의 자명한 타입 어노테이션을 생략해요.one_member_abstracts— 간단한 함수로 충분한데 멤버 하나짜리 추상 클래스를 정의하지 마세요.only_throw_errors— Exception이나 Error를 상속하는 클래스의 인스턴스만 throw해요.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— assert를 초기화 리스트에 두는 걸 선호해요.prefer_asserts_with_message— 메시지가 있는 assert를 선호해요.prefer_bool_in_asserts— assert 조건으로 boolean을 쓰는 걸 선호해요.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— 인스턴스를 만들 때 static 메서드 대신 생성자를 정의하는 걸 선호해요.prefer_contains— List와 String 인스턴스에는 contains를 써요.prefer_double_quotes— 이스케이프가 필요 없는 곳에서는 큰따옴표를 선호해요.prefer_equal_for_default_values— named 매개변수와 기본값 사이는 =로 구분해요.prefer_expression_function_bodies— 본문이 단일 return 문인 짧은 멤버에는 =>를 써요.prefer_final_fields— private 필드는 final이 될 수 있어요.prefer_final_in_for_each— for-each 루프 변수가 재할당되지 않으면 final을 선호해요.prefer_final_locals— 재할당되지 않는 변수 선언에는 final을 선호해요.prefer_final_parameters— 재할당되지 않는 매개변수 선언에는 final을 선호해요.prefer_for_elements_to_map_fromiterable— iterable에서 map을 만들 때 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— 가능하면 초기화 형식(initializing formal)을 써요.prefer_inlined_adds— 가능하면 리스트 항목 선언을 인라인해요.prefer_int_literals— double 리터럴보다 int 리터럴을 선호해요.prefer_interpolation_to_compose_strings— 문자열과 값을 조합할 때 보간(interpolation)을 써요.prefer_is_empty— Iterable과 Map에는 isEmpty를 써요.prefer_is_not_empty— Iterable과 Map에는 isNotEmpty를 써요.prefer_is_not_operator— is! 연산자를 선호해요.prefer_iterable_wheretype— iterable에 whereType을 쓰는 걸 선호해요.prefer_mixin— mixin 사용을 선호해요.prefer_null_aware_method_calls— null 인식 메서드 호출을 선호해요.prefer_null_aware_operators— null 인식 연산자를 선호해요.prefer_relative_imports— lib/ 안의 파일은 상대 import를 선호해요.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— 속성 getter가 재귀적으로 자기 자신을 반환해요.remove_deprecations_in_breaking_versions— 주 버전에서 폐기되면 제거해요.require_trailing_commas— 모든 매개변수 리스트와 인자 리스트에 후행 쉼표를 써요.secure_pubspec_urls— pubspec.yaml에서 보안 URL을 써요.simple_directive_paths— 간단한 지시어 경로를 써요.simplify_variable_pattern— 변수 패턴에서 불필요한 멤버 이름을 피해요.sized_box_for_whitespace— 공백에는 SizedBox를 써요.sized_box_shrink_expand— SizedBox의 shrink와 expand named 생성자를 써요.slash_for_doc_comments— 문서 주석에는 ///을 선호해요.sort_child_properties_last— 위젯 인스턴스 생성에서 child 속성을 마지막에 정렬해요.sort_constructors_first— 생성자 선언을 다른 멤버보다 먼저 정렬해요.sort_pub_dependencies— pub 의존성을 알파벳순으로 정렬해요.sort_unnamed_constructors_first— 이름 없는 생성자 선언을 먼저 정렬해요.specify_nonobvious_local_variable_types— 로컬 변수에 자명하지 않은 타입 어노테이션을 지정해요.specify_nonobvious_property_types— 최상위·static 변수에 자명하지 않은 타입 어노테이션을 지정해요.strict_top_level_inference— 타입 어노테이션을 명시해요.super_goes_last— 생성자 초기화 리스트에서 super 호출을 마지막에 둬요.switch_on_type— 'Type'에 대한 switch 문을 피해요.test_types_in_equals— operator ==(Object other)에서 인자의 타입을 검사해요.throw_in_finally— finally 블록에서 throw를 피해요.tighten_type_of_initializing_formals— 초기화 형식(initializing formal)의 타입을 좁혀요.type_annotate_public_apis— 공개 API에 타입 어노테이션을 해요.type_init_formals— 초기화 형식에 타입 어노테이션을 하지 마세요.type_literal_in_constant_pattern— 타입 리터럴이 있는 상수 패턴을 쓰지 마세요.unintended_html_in_doc_comment— 문서 주석의 꺾쇠 괄호는 Markdown에서 HTML로 처리돼요.unnecessary_async— await 없이 async를 쓰지 마세요.unnecessary_await_in_return— return에서 불필요한 await 키워드를 피해요.unnecessary_brace_in_string_interps— 필요하지 않을 땐 보간에서 중괄호를 피해요.unnecessary_breaks— break가 암시될 때 명시적 break를 쓰지 마세요.unnecessary_const— const 키워드를 피해요.unnecessary_const_in_enum_constructor— 생성 enum 생성자에서 명시적 const를 쓰지 마세요.unnecessary_constructor_name— 불필요한 .new 생성자 이름을 피해요.unnecessary_final— 로컬 변수에 final을 쓰지 마세요.unnecessary_getters_setters— 그냥 "안전"하려고 필드를 getter·setter로 감싸지 마세요.unnecessary_ignore— 발생하지 않는 진단 코드를 ignore하지 마세요.unnecessary_lambdas— tear-off로 충분한데 람다를 만들지 마세요.unnecessary_late— 필요하지 않을 땐 late 수정자를 지정하지 마세요.unnecessary_library_directive— 문서 주석이나 어노테이션이 없으면 library 지시어를 피해요.unnecessary_library_name— library 선언에 라이브러리 이름을 넣지 마세요.unnecessary_new— 불필요한 new 키워드를 피해요.unnecessary_null_aware_assignments— null 인식 할당에서 null을 피해요.unnecessary_null_aware_operator_on_extension_on_nullable— nullable 타입의 확장에 불필요한 null 인식 연산자를 피해요.unnecessary_null_checks— 불필요한 null 검사를 피해요.unnecessary_null_in_if_null_operators— ?? 연산자에서 null을 쓰는 걸 피해요.unnecessary_nullable_for_final_variable_declarations— non-nullable 값으로 초기화된 final 변수에는 non-nullable 타입을 써요.unnecessary_overrides— 같은 매개변수로 super 메서드 호출만 하는 오버라이드를 하지 마세요.unnecessary_parenthesis— 불필요한 괄호는 제거할 수 있어요.unnecessary_primary_constructor_body— 불필요한 기본 생성자 본문은 제거할 수 있어요.unnecessary_raw_strings— 불필요한 raw 문자열을 피해요.unnecessary_statements— 불필요한 문을 쓰지 마세요.unnecessary_string_escapes— 문자열에서 불필요한 백슬래시를 제거해요.unnecessary_string_interpolations— 불필요한 문자열 보간을 피해요.unnecessary_this— 섀도잉을 피할 때가 아니면 this로 멤버에 접근하지 마세요.unnecessary_this_alias— this를 로컬 변수에 할당하는 대신 직접 쓰세요.unnecessary_to_list_in_spreads— 스프레드에서 불필요한 toList()를 피해요.unnecessary_type_name_in_constructor— 생성자에서 명시적 타입 이름을 쓰지 마세요.unnecessary_unawaited— 'unawaited'의 불필요한 사용을 피해요.unnecessary_underscores— 불필요한 밑줄은 제거할 수 있어요.unreachable_from_main— 실행 가능한 라이브러리에서 도달할 수 없는 최상위 멤버를 피해요.unrelated_type_equality_checks— 관련 없는 타입의 참조로 == 연산자를 호출하는 것을 피해요.unsafe_html— 안전하지 않은 HTML API를 피해요.unsafe_variance— 안전하지 않은 타입: 비공변(non-covariant) 위치에 타입 변수가 있어요.use_build_context_synchronously— 비동기 간격을 가로질러 BuildContext를 쓰지 마세요.use_colored_box— ColoredBox를 써요.use_declaring_parameters— 선언 매개변수(declaring parameter)를 써요.use_decorated_box— DecoratedBox를 써요.use_enums— enum처럼 동작하는 클래스보다 enum을 써요.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— non-nullable 타입의 private 멤버에는 late를 써요.use_named_constants— 미리 정의된 named 상수를 써요.use_null_aware_elements— null을 검사하는 if 요소는 null 인식 요소로 바꿀 수 있어요.use_raw_strings— 이스케이프를 피하려고 raw 문자열을 써요.use_rethrow_when_possible— 잡은 예외를 다시 던질 때 rethrow를 써요.use_setters_to_change_properties— 개념적으로 속성을 바꾸는 연산에는 setter를 써요.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— 절삭 나눗셈(truncating division)을 써요.valid_regexps— 유효한 정규식 문법을 써요.var_with_no_type_annotation— 타입 어노테이션 없이 var로 매개변수를 선언하지 마세요.void_checks— void에 할당하지 마세요.
더 알아보기
- 전체 규칙 목록(자동 생성): All linter rules
- 린터 규칙 켜기/끄기: 분석기 문서 — 개별 규칙
- Dart 팀의 기본 세트: lints 패키지
- Flutter용 세트: flutter_lints 패키지