본문 바로가기
Flutter

Flutter Linter를 통해 코딩 스타일 맞추기

by codeflow 2022. 10. 22.

Linter를 쓰는 이유

Linter는 정적 분석을 통해 잠재적인 결함을 발견하고 코딩 스타일을 맞춰 가독성을 높일 목적으로 사용하는 툴입니다. 정적 분석(Static Analysis)이란 동적 분석과 반대되는 개념으로, 동적 분석이 소프트웨어를 실행시키면서 결함은 없는지 수행 속도는 괜찮은지 등을 분석하거나 테스트하는 방법이라면 정적 분석은 소프트웨어를 실행시키기 전에 정적 분석 툴로 코드를 체크하는 방법을 가리킵니다.

정적 분석은 동적 분석보다 빠르고 소프트웨어 실행이나 배포 전 결함을 잡아낼 수 있기 때문에 다트와 플러터에서도 해당 기능을 제공하고 있습니다. 현재 제가 사용하고 있는 Fluter 3.3.3 (Dart 2.18.2) 버전에서는 플러터 프로젝트를 생성하면 프로젝트 루트에 analysis_options.yaml 이라는 파일이 생성됩니다. 기본적으로 flutter_lints 플러그인을 포함하고 있기 때문에 여기에 린트 규칙을 추가해나갈 수 있습니다.

Dart Analyze: 플러터 프로젝트에 정적 분석 돌려보기

Flutter Lints 패키지 설명처럼 Flutter 2.3.0 이상에서는 Flutter Lints가 적용되어 있습니다. 이 패키지는 Dart의 lints를 베이스로 하고 있어서 Android Studio와 같은 IDE에서 Dart 플러그인이 적용된 상태로 플러터 코딩을 하면 자동으로 linter가 적용됩니다. 매뉴얼로 린터를 돌리고 싶을 때는 CLI 상 해당 프로젝트에서 dart analyze라고 입력하면 결과를 볼 수 있습니다. 위에서는 prefer_const_constructors 규칙에 따라 "Prefer const with constant constructors"라는 안내가 나오네요. 생성자는 상태가 변하지 않으니 const 키워드를 붙여서 메모리를 절약하고 수행 속도를 빠르게 하라는 권고입니다.

플러터 프로젝트에 Linter 적용하기

플러터 프로젝트에서 프로젝트 루트에 있는 analysis_options.yaml 파일을 처음 열면 linter의 rules에 아무런 내용이 보이지 않습니다.

이 상태에서 예시로 linter에 camel_case_types규칙을 추가하고 main.dart에는 적용을 제외하도록 anaysis_options.yaml 파일을 작성했습니다. 이제 main.dart가 아닌 다른 파일에서는 변수명이 등이 camel case가 아닐 때 linter가 감지하고 알려주게 됩니다.

저장하고 test_variable이라는 파일 이름을 main.dart 파일과 main.dart가 아닌 파일을 열어 동시에 확인해보면, 설정한대로 main.dart가 아닌 파일에서만 경고 메시지가 뜨는 걸 확인할 수 있습니다. 이런 식으로 팀 내에서 공동의 코딩 규칙을 linter에서 설정해서 사용할 수 있습니다.

 

 읽어보기 👉

https://dart.dev/tools/dart-analyze

https://rydmike.com/blog_flutter_linting.html

 

댓글