코드 인텔리전스
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
코드 인텔리전스는 대화형 개발 환경(IDE)에 공통적인 코드 탐색 기능을 추가합니다. 코드 인텔리전스는 GitLab에 내장되어 있으며 사전 계산된 코드 인텔리전스 데이터를 위한 파일 형식인 LSIF(Language Server Index Format)에 의해 구동됩니다.
코드 인텔리전스는 대화형 개발 환경(IDE)에 공통적인 코드 탐색 기능을 추가합니다. 포함된 기능:
- 타입 시그니처 및 심볼 문서.
- 정의로 이동.
코드 인텔리전스는 GitLab에 내장되어 있으며 사전 계산된 코드 인텔리전스 데이터를 위한 파일 형식인 LSIF(Language Server Index Format)에 의해 구동됩니다. GitLab은 프로젝트당 하나의 LSIF 파일을 처리하며, 코드 인텔리전스는 브랜치별로 다른 LSIF 파일을 지원하지 않습니다.
SCIP는 소스 코드 인덱싱 도구의 차세대 진화입니다. 다음과 같은 코드 탐색 기능을 구동하는 데 사용할 수 있습니다:
- 정의로 이동
- 참조 찾기
GitLab은 코드 인텔리전스를 위해 SCIP를 기본적으로 지원하지 않습니다. 그러나 SCIP CLI를 사용하여 SCIP 도구로 생성된 인덱스를 LSIF 호환 파일로 변환할 수 있습니다. 기본 SCIP 지원에 대한 논의는 이슈 412981을 참조하세요.
향후 코드 인텔리전스 향상에 대한 진행 상황은 에픽 4212를 참조하세요.
코드 인텔리전스 구성#
필수 요건:
언어가 가장 잘 지원되는 방법을 보려면 Sourcegraph에서 권장하는 인덱서를 검토하세요.
CI/CD 컴포넌트 사용#
GitLab은 .gitlab-ci.yml 파일에서 코드 인텔리전스를 구성하기 위한 CI/CD 컴포넌트를 제공합니다. 이 컴포넌트는 다음 언어를 지원합니다:
- Go 버전 1.21 이상.
- TypeScript 또는 JavaScript.
- Java 8, 11, 17, 21.
- Python
- .Net/C#
컴포넌트에 더 많은 언어를 기여하려면 코드 인텔리전스 컴포넌트 프로젝트에서 머지 리퀘스트를 엽니다.
-
프로젝트의
.gitlab-ci.yml에 GitLab CI/CD 컴포넌트를 추가합니다. 예를 들어 다음 job은 Go에 대한 LSIF 아티팩트를 생성합니다:include: - component: ${CI_SERVER_FQDN}/components/code-intelligence/golang-code-intel@v0.0.3 inputs: golang_version: ${GO_VERSION} -
코드 인텔리전스 컴포넌트에 대한 구성 지침은 각 지원 언어의
README를 확인하세요. -
자세한 내용은 컴포넌트 사용을 참조하세요.
코드 인텔리전스를 위한 CI/CD job 추가#
프로젝트에 대한 코드 인텔리전스를 활성화하려면 프로젝트의 .gitlab-ci.yml에 GitLab CI/CD job을 추가합니다.
-
.gitlab-ci.yml구성에 job을 추가합니다. 이 job은 SCIP 인덱스를 생성하고 GitLab에서 사용하기 위해 LSIF로 변환합니다:"code_navigation": rules: - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # the job only needs to run against the default branch image: node:latest stage: test allow_failure: true # recommended script: - npm install -g @sourcegraph/scip-typescript - npm install - scip-typescript index - | env \ TAG="v0.4.0" \ OS="$(uname -s | tr '[:upper:]' '[:lower:]')" \ ARCH="$(uname -m | sed -e 's/x86_64/amd64/')" \ bash -c 'curl --location "https://github.com/sourcegraph/scip/releases/download/$TAG/scip-$OS-$ARCH.tar.gz"' \ | tar xzf - scip - chmod +x scip - ./scip convert --from index.scip --to dump.lsif artifacts: reports: lsif: dump.lsif -
CI/CD 구성에 따라 job을 수동으로 실행하거나 기존 파이프라인의 일부로 실행될 때까지 기다려야 할 수 있습니다.
-
인덱스를 생성하기 위해
.gitlab-ci.yml구성에 job(code_navigation)을 추가합니다:code_navigation: rules: - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # the job only needs to run against the default branch image: sourcegraph/lsif-go:v1 allow_failure: true # recommended script: - lsif-go artifacts: reports: lsif: dump.lsif -
CI/CD 구성에 따라 job을 수동으로 실행하거나 기존 파이프라인의 일부로 실행될 때까지 기다려야 할 수 있습니다.
GitLab은 코드 생성 job에서 생성된 아티팩트를 (ci_max_artifact_size_lsif)
아티팩트 애플리케이션 제한에 의해 200MB로 제한합니다. GitLab Self-Managed 인스턴스에서 인스턴스 관리자가 이 값을 변경할 수 있습니다.
코드 인텔리전스 결과 보기#
job이 성공하면 리포지터리를 탐색하여 코드 인텔리전스 정보를 봅니다:
-
상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
왼쪽 사이드바에서 코드 > 리포지터리를 선택합니다.
-
리포지터리의 파일로 이동합니다. 파일 이름을 알고 있는 경우:
/~키보드 단축키를 입력하여 파일 찾기를 열고 파일 이름을 입력합니다.- 오른쪽 상단에서 파일 찾기를 선택합니다.
-
코드 줄을 가리킵니다. 코드 인텔리전스의 정보가 있는 해당 줄의 항목 아래에 점선이 표시됩니다:

-
항목을 선택하여 자세한 정보를 봅니다.
참조 찾기#
코드 인텔리전스를 사용하여 객체의 모든 사용을 봅니다:
-
상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
왼쪽 사이드바에서 코드 > 리포지터리를 선택합니다.
-
리포지터리의 파일로 이동합니다. 파일 이름을 알고 있는 경우:
/~키보드 단축키를 입력하여 파일 찾기를 열고 파일 이름을 입력합니다.- 오른쪽 상단에서 파일 찾기를 선택합니다.
-
객체를 가리킨 다음 선택합니다.
-
대화 상자에서 다음을 선택합니다:
- 정의 이 객체의 정의를 봅니다.
- 참조 이 객체를 사용하는 파일 목록을 봅니다.

