[Flutter] Lint를 사용하는 이유 및 적용

hodu·2023년 7월 5일
0

Flutter

목록 보기
16/30

Lint란, 소스 코드에서 잠재적인 문제나 버그를 감지하고 개선하는 데 도움을 주는 정적 분석 도구입니다.

즉, Lint 설정을 통해 규칙적인 코딩 스타일을 만들 뿐 아니라, 런타임 에러를 줄일 수 있습니다.


팀 단위로 프로젝트를 진행하게 될 경우, 개개인의 코드 스타일이 소스에 녹여 들어가게 되는데요.

그것이 결과물에 영향을 주진 않지만, 협업의 일정 부분 영향을 주게 됩니다.

자신의 코드 스타일에 대해서는 소스가 한눈에 들어와 지지만,
협업하는 개발자 분의 소스는 코드 스타일이 달라 눈에 잘 들어와 지지 않고 집중해서 봐야 되는 경우가 생깁니다.

그렇기에, Lint의 코드 룰을 설정하여 개발 스타일 온도차를 최대한 줄여, 퍼포먼스를 높일 수 있도록 도와주어, 팀 협업 강화 등의 다양한 이점을 얻을 수 있습니다.


[요약]

  • 코드의 일관성 유지
    코드 스타일 가이드라인을 적용하고 일관된 코드 작성을 촉진합니다.
    이는, 팀 내에서 동일한 코드 스타일을 따르고, 가독성이 높은 코드를 유지할 수 있도록 도와줍니다.

  • 잠재적인 버그 감지
    잠재적인 버그를 찾아내고 경고 또는 오류 메시지를 통해 개발자에게 알려줍니다.
    이로, 런타임 에러를 방지하고 안전한 코드를 작성할 수 있습니다.

  • 성능 개선
    비효율적인 코드 패턴을 식별하고 개선 방법을 제안하여 앱의 성능을 향상시킬 수 있습니다.
    불필요한 연산 혹은 메모리 누수와 같은 문제를 감지하고 최적화 할 수 있습니다.

  • 팀 협업 강화
    팀 내에서 코드 리뷰를 용이하게 만들어줍니다.
    모든 개발자가 동일한 Lint 규칙을 따르면 코드 리뷰 프로세스가 원활해 지고 코드 품질이 향상됩니다.


[Lint 적용]

  1. 프로젝트를 생성하게 되면 pubspec.yaml 파일에서 기본적으로 flutter_lints가 적용되어 있습니다.

  2. analysis_options.yaml 파일에서 아래의 코드를 추가해줍니다.
    exclude는 lint적용을 제외시킬 파일을 적어둔 곳 입니다.

linter:
  rules:
    - prefer_const_constructors
    - always_declare_return_types
    - always_require_non_null_named_parameters
    - avoid_types_on_closure_parameters
    - avoid_annotating_with_dynamic
    - avoid_escaping_inner_quotes
    - avoid_function_literals_in_foreach_calls
    - avoid_private_typedef_functions
    - combinators_ordering
    - curly_braces_in_flow_control_structures
    - lowercase_with_underscores
    - omit_local_variable_types
    - annotate_overrides
    - sort_constructors_first
    - unawaited_futures
    - directives_ordering
    - unnecessary_final
    - unnecessary_parenthesis
    - conditional_uri_does_not_exist
    - prefer_single_quotes
    - await_only_futures
    - always_use_package_imports
    - avoid_empty_else
    - comment_references
    - prefer_void_to_null
    - use_key_in_widget_constructors

analyzer:
  strong-mode:
    # implicit-casts: false
    # implicit-dynamic: false
  exclude:
    - lib/**.freezed.dart
    - lib/**.g.dart
    - lib/generated
    - lib/firebase_options.dart
  errors:
    invalid_annotation_target: ignore
    todo: ignore

  1. Lint가 적용되기 위해 IDE를 종료하고 다시 켜주세요.
    터미널에 flutter analyze 를 작성하면 lint가 어디에서 적용되지 않고 있는지 체크할 수 있습니다.
profile
Flutter developer

0개의 댓글