Skip to main content

CodeQL CLI 설정하기

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

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

GitHub CodeQL은(는) 설치 시 사용자별로 라이선스가 부여됩니다. 라이선스 제한에 따라 특정 작업에만 CodeQL을(를) 사용할 수 있습니다. 자세한 내용은 "CodeQL CLI 알아보기"을 참조하세요.

GitHub Advanced Security 라이선스가 있는 경우 CodeQL을(를) 사용하여 분석 자동화, 연속 통합 및 지속적인 업데이트를 할 수 있습니다. 자세한 내용은 "GitHub Advanced Security 정보.

CodeQL CLI 설정하기

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

CodeQL CLI은(는) 다양한 사용 사례 및 디렉터리 구조를 지원하도록 설정할 수 있습니다. 빠르게 시작하려면 아래 단계에 설명된 대로 비교적 간단한 설정을 채택하는 것이 좋습니다.

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

CI 시스템에서 CodeQL CLI을(를) 설정하는 경우, CodeQL CLI 번들의 전체 콘텐츠를 CodeQL code scanning 분석을 실행하려는 모든 CI 서버에서 사용할 수 있도록 해야 합니다. 예를 들어 중앙 내부 위치에서 번들을 복사하고 추출하도록 각 서버를 구성할 수 있습니다. 또는 REST API를 사용하여 GitHub에서 직접 번들을 가져와 쿼리에 대한 최신 개선 사항을 활용할 수 있습니다. 자세한 내용은 REST API 설명서에서 "릴리스 및 릴리스 자산에 대한 REST API 엔드포인트"을(를) 참조하세요.

Apple Silicon으로 macOS를 사용하는 경우(예: Apple M1), Xcode 명령줄 개발자 도구Rosetta 2가 설치되어 있는지 확인합니다.

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

1. Download the CodeQL CLI zip 패키지 다운로드

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

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

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

참고: CodeQL 팩을 포함한 CodeQL 패키지 관리 기능은 현재 베타 상태이며 변경될 수 있습니다.

macOS "Catalina"(또는 이후 버전) 사용자를 위한 정보 다운로드

macOS 버전 10.15("Catalina") 이상에서는 웹 브라우저에서 zip 파일을 자동으로 추출하지 않도록 해야 합니다. Safari를 사용하는 경우 CodeQL CLI zip 보관 파일을 다운로드하기 전에 다음 단계를 완료합니다.

  1. Safari를 엽니다.
  2. Safari 메뉴에서 기본 설정… 또는 설정...(버전 13 "Ventura" 이상)을 선택합니다.
  3. 일반 탭을 클릭합니다.
  4. 다운로드 후 "안전한" 파일 열기라는 레이블이 지정된 확인란이 선택 해제되지는 않았는지 확인합니다.

2. zip 보관 파일 추출

Linux, Windows 및 macOS 사용자(버전 10.14 "Mojave" 이하)의 경우 zip 보관 파일을 추출하기만 하면 됩니다.

macOS "Catalina"(및 이후 버전) 사용자를 위한 정보 추출

macOS "Catalina", "Big Sur", "Monterey" 또는 "Ventura" 사용자는 터미널에서 다음 명령을 실행해야 합니다. 여기서 ${extraction-root}은(는) CodeQL CLI zip 보관 파일을 추출할 디렉터리의 경로입니다.

  1. mv ~/Downloads/codeql\*.zip ${extraction-root}
  2. cd ${extraction-root}
  3. /usr/bin/xattr -c codeql\*.zip
  4. unzip codeql\*.zip

3. codeql 시작

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

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

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

참고: PATHcodeql을(를) 추가한 경우, Visual Studio Code용 CodeQL에서 액세스해 쿼리를 컴파일하고 실행할 수 있습니다. VS Code에서 CodeQL CLI에 액세스하도록 구성하는 방법에 대한 자세한 내용은 "Visual Studio Code의 CodeQL 설정을 참조하세요.

CodeQL CLI 구성 테스트하기

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

  • /<extraction-root>/codeqlPATH에 있는 경우 codeql resolve qlpacks입니다.
  • 그렇지 않으면 /<extraction-root>/codeql/codeql resolve qlpacks입니다.

올바르게 구성되었다면 아래 추출된 것과 비슷한 내용이 출력됩니다.

codeql/cpp-all (/<extraction-root>/qlpacks/codeql/cpp-all/<version>)
codeql/cpp-examples (/<extraction-root>/qlpacks/codeql/cpp-examples/<version>)
codeql/cpp-queries (/<extraction-root>/qlpacks/codeql/cpp-queries/<version>)
codeql/csharp-all (/<extraction-root>/qlpacks/codeql/charp-all/<version>)
codeql/csharp-examples (/<extraction-root>/qlpacks/codeql/charp-examples/<version>)
codeql/csharp-queries (/<extraction-root>/qlpacks/codeql/charp-queries/<version>)
codeql/java-all (/<extraction-root>/qlpacks/codeql/java-all/<version>)
codeql/java-examples (/<extraction-root>/qlpacks/codeql/java-examples/<version>)
codeql/java-queries (/<extraction-root>/qlpacks/codeql/java-queries/<version>)
codeql/javascript-all (/<extraction-root>/qlpacks/codeql/javascript-all/<version>)
codeql/javascript-examples (/<extraction-root>/qlpacks/codeql/javascript-examples/<version>)
codeql/javascript-queries (/<extraction-root>/qlpacks/codeql/javascript-queries/<version>)
codeql/python-all (/<extraction-root>/qlpacks/codeql/python-all/<version>)
codeql/python-examples (/<extraction-root>/qlpacks/codeql/python-examples/<version>)
codeql/python-queries (/<extraction-root>/qlpacks/codeql/python-queries/<version>)
codeql/ruby-all (/<extraction-root>/qlpacks/codeql/ruby-all/<version>)
codeql/ruby-examples (/<extraction-root>/qlpacks/codeql/ruby-examples/<version>)
codeql/ruby-queries (/<extraction-root>/qlpacks/codeql/ruby-queries/<version>)
...

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

데이터베이스를 만드는 데 사용할 수 있는 언어를 표시하기 위해 codeql resolve languages를 실행할 수도 있습니다. 그러면 CodeQL CLI 패키지에서 기본적으로 지원되는 언어가 나열됩니다.

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

다음 단계

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