Notice
Recent Posts
Recent Comments
반응형
오늘도 공부
flutter analyze 설명 본문
반응형
flutter analyze는 Flutter 프로젝트의 정적 분석 도구로, 코드에서 오류나 경고, 스타일 문제를 사전에 찾아주는 명령어입니다. Dart의 dart analyze와 동일한 기능을 포함하며, Flutter 프로젝트에 맞게 확장된 형태로 사용됩니다.
1. 기본 개념
- Flutter/Dart 코드에서 타입 오류, 사용하지 않는 코드, 잠재적 버그, 스타일 위반 등을 찾아냄.
- 빌드 전에 코드 품질을 높이고 런타임 오류 가능성을 줄임.
- 분석 기준은 analysis_options.yaml 파일에서 정의함.
2. 사용법
터미널에서 프로젝트 루트에서 실행:
flutter analyze
- 현재 디렉토리 전체를 분석.
- 특정 파일/디렉토리만 지정 가능:
- flutter analyze lib/main.dart flutter analyze lib/
3. 출력 예시
Analyzing my_flutter_app...
warning • The parameter 'title' is required • lib/home.dart:10:3
info • Unused import: 'dart:math' • lib/utils.dart:2:8
2 issues found • analyzed 12 files, 123ms
- error: 반드시 수정해야 하는 오류
- warning: 잠재적 문제, 권장사항
- info: 참고 정보, 사용하지 않는 코드 등
4. 옵션
- --watch: 변경사항을 실시간으로 감지하며 지속적으로 분석
- flutter analyze --watch
- --no-fatal-infos, --no-fatal-warnings: info나 warning을 실패로 처리하지 않게 설정
- flutter analyze --no-fatal-warnings
- --write: 결과를 파일로 저장 가능 (Flutter 3.24 이후 dart analyze와 동일하게 동작)
5. analysis_options.yaml 설정
분석 규칙을 커스터마이징할 수 있는 설정 파일입니다.
프로젝트 루트에 생성:
include: package:flutter_lints/flutter.yaml
linter:
rules:
prefer_const_constructors: true
avoid_print: true
- flutter_lints나 package:lints를 기본 포함하는 것이 일반적.
- 불필요한 경고를 무시하거나 새로운 규칙을 추가 가능.
analysis_options.yaml 파일은 Flutter 또는 Dart 프로젝트에서 정적 분석(Static Analysis) 설정을 정의하는 파일입니다. 이 파일을 통해 코딩 스타일, 오류 감지 규칙, 경고 무시 목록 등을 세부적으로 설정할 수 있습니다.
아래에 전체 구조, 각 옵션의 의미와 예시를 정리해드릴게요.
✅ 기본 구조
# 1. 다른 룰셋 포함
include: package:flutter_lints/flutter.yaml
# 2. linter 룰 커스터마이징
linter:
rules:
avoid_print: true
prefer_const_constructors: true
# 3. analyzer 설정
analyzer:
exclude:
- lib/generated_plugin_registrant.dart
- "**/*.g.dart"
errors:
unused_import: warning
missing_return: error
# 4. 커스텀 패스 분석 제외 또는 포함 설정
# analyzer.exclude 로 제외
# analyzer.plugins 로 플러그인 추가
1. include
외부 룰셋을 포함하는 부분입니다. 보통 flutter_lints나 lints 패키지를 사용합니다.
include: package:flutter_lints/flutter.yaml # Flutter 프로젝트용
# include: package:lints/recommended.yaml # Dart 프로젝트용
2. linter > rules
개별 분석 룰을 지정합니다. true면 해당 룰을 적용하고, false면 비활성화합니다.
linter:
rules:
avoid_print: true # print() 금지
prefer_const_constructors: true # 가능한 경우 const 생성자 사용
unnecessary_this: false # this 사용 강제하지 않음
▶ 대표적인 룰 목록은 official lint rule list에서 확인 가능.
3. analyzer
Dart analyzer에 대한 설정입니다.
🔸 exclude
분석 대상에서 제외할 파일/디렉토리 패턴입니다.
analyzer:
exclude:
- "**/*.g.dart" # 자동 생성 파일
- lib/src/generated/** # 생성된 코드 폴더
🔸 errors
개별 에러의 심각도 조절:
- ignore, info, warning, error
analyzer:
errors:
unused_import: warning
missing_return: error
invalid_assignment: ignore
🔸 plugins
공식 Dart/Flutter 분석 플러그인을 확장할 때 사용합니다. 대부분의 프로젝트는 필요 없음.
analyzer:
plugins:
- custom_lint
🎯 자주 쓰는 룰 예시
linter:
rules:
avoid_print: true # print 대신 로그 도구 사용 권장
prefer_final_locals: true # 수정되지 않는 지역 변수는 final로
unnecessary_this: true # this. 생략 가능할 때는 생략
always_use_package_imports: true # 상대 경로 import 금지
use_key_in_widget_constructors: true
🧪 분석 수준 커스터마이징 예시
analyzer:
errors:
avoid_print: error # print 문은 에러로 처리
prefer_const_constructors: warning
unnecessary_this: ignore
📁 생성 위치
analysis_options.yaml은 Flutter/Dart 프로젝트 루트에 위치시켜야 자동으로 인식됩니다.
🛠️ 설정 도움 툴
- VSCode에서는 Dart: Enable Linter 설정이 analysis_options.yaml을 자동 인식
- 커맨드라인에서 flutter analyze 실행 시 설정 적용됨
🔗 참고 링크
반응형
'스터디 > Flutter' 카테고리의 다른 글
WWDC25 이후, Flutter 체크 사항 (3) | 2025.06.16 |
---|---|
Flutter 3.32 업데이트 내용 (2) | 2025.05.21 |
Flutter 면접 인터뷰 예상 질문 115개 (3) | 2025.04.07 |
Flutter cached_network_image 만료 기간 설정 (0) | 2025.03.18 |
Flutter의 IntrinsicWidth 위젯 이해 및 사용법 (0) | 2025.03.17 |