코드 인텔리전스

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 관리, GitLab Dedicated

코드 인텔리전스는 개발 환경(IDE)에서 흔히 볼 수 있는 코드 탐색 기능을 추가합니다.

  • 유형 서명 및 심볼 문서.
  • 정의로 이동.

코드 인텔리전스는 GitLab에 내장되어 있으며, LSIF(언어 서버 색인 형식)에서 파워를 받아 사전 계산된 코드 인텔리전스 데이터의 파일 형식입니다. 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.

다른 언어를 구성 요소에 더 추가하려면 코드 인텔리전스 구성 요소 프로젝트에서 병합 요청을 열어주세요.

  1. 프로젝트의 .gitlab-ci.yml에 GitLab CI/CD 구성 요소를 추가하세요. 예를 들어, 이 작업은 golang용 LSIF 아티팩트를 생성합니다.

    - component: ${CI_SERVER_FQDN}/components/code-intelligence/golang-code-intel@v0.0.3
     inputs:
       golang_version: ${GO_VERSION}
    
  2. 코드 인텔리전스 구성 요소의 구성 지침을 확인하세요.
  3. 자세한 구성 내용은 구성 요소 사용을 참조하세요.

코드 인텔리전스를 위한 CI/CD 작업 추가

프로젝트에 코드 인텔리전스를 활성화하려면 GitLab CI/CD 작업을 프로젝트의 .gitlab-ci.yml에 추가하세요.

SCIP 인덱서와 함께
  1. .gitlab-ci.yml 구성에 작업을 추가하세요. 이 작업은 SCIP 색인을 생성하고 GitLab에서 사용할 LSIF로 변환합니다.

    "code_navigation":
       rules:
       - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # 해당 작업은 기본 브랜치에 대해 실행되면 됩니다
       image: node:latest
       stage: test
       allow_failure: true # 권장됨
       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
    
  2. CI/CD 구성에 따라 작업을 수동으로 실행해야 할 수도 있고, 기존 파이프라인의 일부로 실행을 기다려야 할 수도 있습니다.

LSIF 인덱서와 함께
  1. 인덱스를 생성하는 .gitlab-ci.yml 구성에 (code_navigation) 작업을 추가하세요.

    code_navigation:
       rules:
       - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # 해당 작업은 기본 브랜치에 대해 실행되면 됩니다
      image: sourcegraph/lsif-go:v1
      allow_failure: true # 권장됨
      script:
        - lsif-go
      artifacts:
        reports:
          lsif: dump.lsif
    
  2. CI/CD 구성에 따라 작업을 수동으로 실행해야 할 수도 있고, 기존 파이프라인의 일부로 실행을 기다려야 할 수도 있습니다.

참고: GitLab은 코드 생성 작업으로 생성된 아티팩트를 (ci_max_artifact_size_lsif) 아티팩트 적용 제한에 따라 100MB로 제한합니다. 자체 관리 설치에서는 인스턴스 관리자가 이 값을 변경할 수 있습니다.

코드 인텔리전스 결과 보기

작업이 성공하면 저장소를 탐색하여 코드 인텔리전스 정보를 확인하세요.

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 저장소를 선택합니다.
  3. 저장소의 파일로 이동합니다. 파일 이름을 알고 있다면:
    • /~ 키보드 단축키를 입력하여 파일 찾기창을 열고 파일 이름을 입력합니다.
    • 오른쪽 상단에서 파일 찾기를 선택합니다.
  4. 코드 라인을 가리키세요. 코드 인텔리전스에서 제공하는 정보를 가진 항목은 점선으로 표시됩니다.

    코드 인텔리전스

  5. 항목을 선택하여 해당 정보를 더 자세히 확인하세요.

참조 찾기

객체의 모든 사용 사례를 보려면 코드 지능을 사용하세요:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 저장소를 선택합니다.
  3. 저장소의 파일로 이동합니다. 파일 이름을 알고 있다면 다음 중 하나를 수행합니다:
    • /~ 키보드 단축키를 입력하여 파일 찾기 도구를 열고 파일 이름을 입력합니다.
    • 오른쪽 상단에서 파일 찾기를 선택합니다.
  4. 객체를 가리킨 후 선택합니다.
  5. 대화상자에서 참조를 선택하여 이 객체를 사용하는 파일 목록을 볼 수 있습니다.