Skip to main content

CodeQL CLI 설정하기

시작하려면 CodeQL CLI을 통해 데이터베이스를 만들고 분석하는 데 필요한 도구 및 라이브러리에 액세스할 수 있도록 CLI를 다운로드하고 설정해야 합니다.

누가 이 기능을 사용할 수 있나요?

CodeQL은(는) 다음 리포지토리 유형에 사용할 수 있습니다.

이 기사에서

          CodeQL CLI 설정하기

참고

이 문서에서는 CodeQL CLI 2.22.4 번들에서 사용할 수 있는 기능을 GitHub Enterprise Server 3.19의 초기 릴리스에 포함되어 있습니다.

사이트 관리자가 CodeQL CLI 버전을 최신 릴리스로 업데이트한 경우 최신 기능에 대한 자세한 내용은 이 문서의 GitHub Enterprise Cloud 버전을 참조하세요.

          CodeQL 명령을 실행하려면 데이터베이스를 만들고 분석하는 데 필요한 도구, 쿼리 및 라이브러리에 액세스할 수 있도록 CodeQL CLI을(를) 설정해야 합니다.

다양한 CodeQL CLI 사용 사례 및 디렉터리 구조를 지원합니다. 이 문서에서는 대부분의 사용자 및 환경에서 작동하는 간단한 설정을 안내합니다.

보안 연구에 사용 CodeQL CLI 하거나 쿼리를 테스트하거나 기여하려는 경우 고급 설정이 필요할 수 있습니다. 자세한 내용은 CodeQL CLI에 대해을(를) 참조하세요.

시작하기 전 주의 사항:

Apple Silicon Mac(예: Apple M1)에서 macOS를 사용하는 경우 Xcode 명령줄 개발자 도구Rosetta 2 가 설치되어 있는지 확인해 주세요.

참고

현재 ( CodeQL CLI muslc 기반) Alpine Linux와 같은 비 glibc Linux 배포판과 호환되지 않습니다.

1. CodeQL CLI tar 보관 파일을 다운로드하세요.

CodeQL CLI 다운로드 패키지는 도구, 스크립트 및 다양한 CodeQL 관련 파일을 포함하는 tar 보관 파일입니다. GitHub Enterprise 라이선스가 없는 경우, 이 보관 파일을 다운로드하면 GitHub CodeQL 이용 약관에 동의하는 것으로 간주됩니다.

https://github.com/github/codeql-action/releases에서 CodeQL 번들을 다운로드해야 합니다. 번들에는 다음이 포함됩니다.

참고

GitHub Enterprise Server 3.19의 경우, CodeQL CLI 2.22.4버전을 권장합니다.

항상 CodeQL 번들을 사용해야 합니다. 이 번들은 호환성을 보장하고 CodeQL CLI 쿼리를 별도로 다운로드하고 CodeQL 쿼리를 체크 아웃하는 것보다 훨씬 나은 성능을 제공합니다. 하나의 특정 플랫폼에서만 CLI를 실행하는 경우 적절한 codeql-bundle-PLATFORM.tar.zst 파일을 다운로드합니다. 또는 지원되는 모든 플랫폼에 해당하는 CLI가 포함된 codeql-bundle.tar.zst를 다운로드할 수 있습니다.

번들의 tar.gz 변형도 있으며, 효율성이 떨어지는 gzip 알고리즘을 사용하여 압축된다는 점을 제외하고는 tar.zst 변형과 동일합니다. tar.gz 변형을 다운로드하는 유일한 이유는 표준 압축 알고리즘을 지원하지 않는 이전 압축 해제 도구를 사용하는 경우입니다.

2. CodeQL CLI tar 보관 파일을 추출하세요.

          CodeQL CLI tar 보관 파일을 원하는 디렉터리에 추출합니다.

선택 사항: CodeQL CLI을(를) CI 시스템에서 사용할 수 있도록 설정하십시오.

CI 시스템에서 CodeQLcode scanning 분석을 실행할 계획이라면, 분석을 실행할 각 CI 서버에서 CodeQL CLI 번들의 전체 콘텐츠를 사용할 수 있는지 확인하십시오.

예를 들어, 다음을 할 수 있습니다:

  • 중앙 내부 위치에서 번들을 복사하여 각 서버에서 추출하거나
  • REST API를 사용하여 번들을 GitHub에서 직접 다운로드하면 쿼리가 최신으로 개선된 결과를 받을 수 있습니다. 자세한 내용은 릴리스 및 릴리스 자산에 대한 REST API 엔드포인트을(를) 참조하세요.

3.codeql 시작

추출한 후에는 codeql 실행 파일을 몇 가지 방법으로 실행하여 CodeQL 프로세스를 실행할 수 있습니다.

  • <extraction-root>/codeql/codeql을(를) 실행합니다. 여기서 <extraction-root>는 CodeQL CLI 패키지를 추출한 폴더입니다.
  • codeql처럼 실행 파일을 실행할 수 있도록 PATH<extraction-root>/codeql를 추가합니다.

이제 CodeQL 명령을 실행할 수 있습니다. CodeQL CLI 명령의 전체 목록은 CodeQL CLI 명령 매뉴얼을(를) 참조하세요.

참고

          `codeql`을(를) `PATH`에 추가하면, CodeQL가 Visual Studio Code에게 액세스하여 쿼리를 컴파일하고 실행할 수 있습니다. 액세스하도록 구성하는 VS Code 방법에 대한 자세한 내용은 CodeQL CLI을 [](/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/configuring-access-to-the-codeql-cli)참조하세요.

          CodeQL CLI 구성 테스트

번들을 추출한 CodeQL CLI 후 다음 명령을 실행하여 CLI가 데이터베이스를 만들고 분석하도록 올바르게 구성되었는지 확인할 수 있습니다.

  •         `codeql resolve packs`이 `/<extraction root>/codeql`에 있는 경우 `PATH`입니다.
    
  • 그렇지 않으면 /<extraction root>/codeql/codeql resolve packs.

성공하면 아래에서 추출한 비슷한 내용이 출력됩니다.

Searching directories specified by `--additional-packs`. All directories have equal priority.
  Searching in:
    No packs were found at this location.
Searching directories specified by `--search-path`. Directories are searched in order.
Searching the root of the CodeQL distribution.
  Searching in:
      <extraction root>
    The following packs were found:
      codeql/java-all@<version>: (library) <extraction root>/qlpacks/codeql/javat-all/<version>/qlpack.yml
      codeql/java-queries@<version>: (query) <extraction root>/qlpacks/codeql/java-queries/<version>/qlpack.yml
      codeql/javascript-all@<version>: (library) <extraction root>/qlpacks/codeql/javascript-all/<version>/qlpack.yml
      codeql/javascript-queries@<version>: (query) <extraction root>/qlpacks/codeql/javascript-queries/<version>/qlpack.yml
      codeql/swift-all@<version>: (library) <extraction root>/qlpacks/codeql/swift-all/<version>/qlpack.yml
      codeql/swift-queries@<version>: (query) <extraction root>/qlpacks/codeql/swift-queries/<version>/qlpack.yml
...

이해를 돕기 위해 결과를 간략하게 요약했습니다. 실제 결과는 이보다 더 길고 상세합니다.

출력에 예상된 언어가 포함되어 있고 qlpack 파일의 디렉터리 위치가 올바른지 확인해야 합니다. 위치는 추출된 CodeQL CLI 번들 내에 있어야 하며, 이전 예제에서는 다음과 같습니다 <extraction root>. 예상 언어에 대한 CodeQL CLI의 qlpack을 찾을 수 없는 경우, 독립 실행형 복사본인 CodeQL CLI이 아닌 CodeQL 번들을 다운로드했는지 확인합니다.

데이터베이스를 만드는 데 사용할 수 있는 언어를 확인하려면 codeql resolve languages 를 실행하세요. 이것은 CodeQL CLI 패키지에서 기본적으로 지원되는 언어들을 나열합니다.

필요에 따라 미리 컴파일된 쿼리가 포함된 CodeQL 팩을 다운로드하여 실행할 수 있습니다. 자세한 내용은 CodeQL 팩을 사용하여 분석 사용자 지정을(를) 참조하세요.

codeql resolve packs 명령은 분석에 사용할 수 있을 것으로 예상되는 쿼리 팩을 찾을 수 없는 경우 CodeQL CLI 문제를 진단하는 데 유용합니다.

참고

codeql resolve packs 명령은 CodeQL CLI 버전 2.19.0 이상에서 사용할 수 있습니다. 이전 버전의 CLI를 사용 중이라면 유사하지만 상세 정보가 다소 부족한 출력을 생성하는 codeql resolve qlpacks 명령어를 실행해야 합니다.

다음 단계

코드에서 분석할 코드를 준비하는 방법을 알아보려면 CodeQL CLI을 참조하세요.