포함 파일이 자기 자신을 포함

포함 파일이 자기 자신을 포함 (recursive_include_file)

이 문서는 Dart 분석기(analyzer)가 내는 recursive_include_file 진단(diagnostic)을 설명하는 문서예요. 분석 옵션 파일(analysis options file)이 직접 또는 간접적으로 자기 자신을 include 하면 순환 참조(circular reference)가 생기는데요. 언제 발생하고 어떻게 고치는지 함께 알아볼게요.

출처: recursive_include_file

본문

진단 메시지

The URI '{0}' included in '{1}' includes '{1}', creating a circular reference.

'{1}'에 포함된 URI '{0}'이(가) '{1}'을(를) 다시 포함하면서 순환 참조를 만들고 있어요.

설명

분석기는 분석 옵션 파일이 직접 또는 간접적으로 자기 자신을 include 할 때 이 진단을 만들어 내요. include가 서로를 계속 물고 돌면 어디서부터 해석해야 할지 알 수 없는 순환 고리가 생기거든요.

예시

다음 코드는 파일이 자기 자신을 직접 include 하기 때문에 이 진단을 만들어 내요.

// %uri="analysis_options.yaml"
include: analysis_options.yaml

shared_options.yaml이라는 파일에 다음과 같은 내용이 들어 있다고 해 볼게요.

// %uri="shared_options.yaml"
include: analysis_options.yaml

이때 다음 코드는 파일이 자기 자신을 간접적으로 include 하기 때문에 이 진단을 만들어 내요.

// %uri="analysis_options.yaml"
include: shared_options.yaml

일반적인 해결 방법

include 하는 파일들 중 적어도 하나를 바꿔서 순환 고리를 끊어 주세요.

더 알아보기