`analysis_options.yaml` 파일은 Dart와 Flutter 프로젝트에서 코드 분석 도구의 동작을 구성하기 위해 사용되는 파일로, 이 파일을 사용하여 코드 스타일, 규칙, 린트(lint) 옵션 등을 지정하여 프로젝트의 코드 품질과 일관성을 유지하도록 도와준다.
analysis_options.yaml 주요 구성 요소
1. analyzer:
- exclude: 분석에서 제외할 경로나 파일을 지정한다. 이는 외부로부터 가져온 코드나 자동 생성된 코드 등 분석 대상에서 제외하고 싶은 경우에 유용하다.
- errors: 특정 규칙에 대한 오류 수준을 재정의할 수 있다. 경고를 오류로 업그레이드하거나 반대로 오류를 경고로 다운그레이드 할 수 있다.
ex. `{ "invalid_assignment": "error" }`로 설정하면, 유효하지 않은 할당에 대한 경고를 오류로 취급한다. - strong-mode: Dart의 강력한 타입 검사 모드에 대한 세부 설정이다. 예를 들어 암시적 다운캐스트를 허용할지 여부, 암시적 동적 타입을 허용할지 여부 등의 옵션을 설정할 수 있다.
2. linter:
- rules: 사용하려는 린트 규칙의 목록을 나열한다.
analysis_options.yaml 추가 세부사항
- analyzer:
language:
version: 사용할 Dart 언어의 버전을 지정한다. 이를 통해 프로젝트가 특정 Dart 언어 버전에만 의존하는지 확인할 수 있다.
plugins: 코드 분석을 위해 사용할 추가 플러그인을 지정할 수 있다. - include: 다른 `analysis_options.yaml` 파일을 현재 파일에 포함시킬 수 있다. 이를 통해 여러 프로젝트나 패키지 간에 일관된 분석 옵션을 공유할 수 있다.
- flutter: Flutter 프로젝트에만 특화된 분석 옵션을 설정할 수 있다.
analysis_options.yaml 샘플코드
analyzer:
exclude:
- 'path/to/excluded/files/**'
- '**/*.g.dart' # 자동 생성된 코드 제외
errors:
unused_local_variable: warning # 사용하지 않는 로컬 변수를 경고로 취급
strong-mode:
implicit-casts: false # 암시적 캐스팅 금지
implicit-dynamic: false # 암시적 동적 타입 금지
linter:
rules:
- avoid_empty_else # 불필요한 else문 피하기
- prefer_const_constructors # const 생성자 선호하기
- prefer_final_fields # final 필드 선호하기
`analysis_options.yaml` 파일을 사용하면 Dart 및 Flutter 코드의 품질과 일관성을 향상시킬 수 있으며, 팀이나 조직의 코딩 규칙을 표준화하는 데 도움을 준다.