일부 사용자는 오픈 소스 공유 쿼리에서 작업하거나 기여하기 위해 쿼리 원본에 CodeQL 직접 작업하는 것을 선호합니다.
1. CodeQL CLI tar 보관 파일을 다운로드하세요.
CodeQL CLI 다운로드 패키지는 도구, 스크립트 및 다양한 CodeQL 관련 파일을 포함하는 tar 보관 파일입니다. GitHub Enterprise 라이선스가 없는 경우, 이 보관 파일을 다운로드하면 GitHub CodeQL 이용 약관에 동의하는 것으로 간주됩니다.
https://github.com/github/codeql-action/releases에서 CodeQL 번들을 다운로드해야 합니다. 번들에는 다음이 포함됩니다.
- CodeQL CLI 제품
- https://github.com/github/codeql에서 호환되는 쿼리 및 라이브러리 버전
- 번들에 포함되는 모든 쿼리의 사전 컴파일 버전
항상 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 및 사용하고자 하는 쿼리와 라이브러리를 넣을 수 있는 새 디렉터리를 생성합니다. 예: $HOME/codeql-home.
기본으로 제공되는 CLI의 검색 작업에서는 데이터베이스 생성 및 분석에 사용되는 파일을 찾기 위해 동일한 상위 디렉터리 아래의 모든 형제 디렉터리를 자동으로 검색합니다. 구성 요소를 자체 디렉터리에 보관하면 명령줄에 추가 옵션을 지정하지 않아도 모든 파일을 사용할 수 있고, CLI가 관련 없는 형제 디렉터리를 검색하는 일을 막을 수 있습니다.
3. 쿼리의 CodeQL 로컬 복사본 가져오기
[리포지토리에는CodeQL](https://github.com/github/codeql?ref_product=code-scanning&ref_type=engagement&ref_style=text) 지원되는 모든 언어를 분석하는 데 필요한 CodeQL 쿼리 및 라이브러리가 포함되어 있습니다.
`codeql-home`에 해당 리포지토리를 복사합니다.
복사한 리포지토리의 루트는 codeql를 기본값으로 합니다.
1단계에서 추출할 폴더와 충돌하지 않도록 이 폴더 codeql-repo 의 CodeQL CLI 이름을 바꿉니다. 명령줄에서 git을 사용할 때는 git clone git@github.com:github/codeql.git codeql-repo 폴더에서 codeql-home을 실행함으로써 하나의 단계에서 리포지토리를 복사하고 재명명할 수 있습니다.
이 리포지토리 내에서 쿼리 및 라이브러리는 다음으로 구성됩니다. CodeQL 포장 단위. 쿼리 자체 CodeQL 와 함께 팩에는 쿼리 파일을 처리하는 방법을 알려주는 CodeQL CLI 중요한 메타데이터가 포함되어 있습니다. 자세한 내용은 CodeQL 팩 만들기 및 작업을(를) 참조하세요.
참고
다른 사용자가 사용할 수 있는 쿼리 버전 CodeQL 이 서로 다릅니다. 사용 사례에 알맞은 버전을 확인하세요.
- 최신 CodeQL CLI 릴리스와 함께 사용하려는 쿼리의 경우 태그가 지정된
codeql-cli/latest분기를 확인하세요. 데이터베이스를 빌드했거나 CodeQL CLI 또는 GitHub에서 최근에 다운로드한 경우, 이 분기를 사용해야 합니다. - 최신 CodeQL 쿼리에 대해 알아보려면
main브랜치를 확인하세요. 이 분기는 최신 버전의 CodeQL's 분석을 나타냅니다.
4. CodeQL CLI tar 보관 파일 압축 해제
2단계에서 생성한 디렉터리에 tar 아카이브를 압축 해제합니다.
예를 들어 리포지토리 복사본의 경로가 CodeQL이고 $HOME/codeql-home/codeql-repo인 경우, CLI를 $HOME/codeql-home/로 추출합니다.
5.codeql 시작
추출한 후에는 codeql 실행 파일을 몇 가지 방법으로 실행하여 CodeQL 프로세스를 실행할 수 있습니다.
<extraction-root>/codeql/codeql을(를) 실행합니다. 여기서<extraction-root>는 CodeQL CLI 패키지를 추출한 폴더입니다.codeql처럼 실행 파일을 실행할 수 있도록PATH에<extraction-root>/codeql를 추가합니다.
이제 CodeQL 명령을 실행할 수 있습니다. CodeQL CLI 명령의 전체 목록은 CodeQL CLI 명령 매뉴얼을(를) 참조하세요.
6. 설치 확인 CodeQL CLI
CodeQL CLI 에는 데이터베이스를 만들고 분석하도록 올바르게 설정되었는지 확인하기 위해 실행할 수 있는 하위 명령이 있습니다.
- 데이터베이스를 만드는 데 사용할 수 있는 언어를 표시하려면
codeql resolve languages를 실행합니다. 이것은 CodeQL CLI 패키지에서 기본적으로 지원되는 언어들을 나열합니다. - 실행
codeql resolve qlpacks하여 CLI에서 찾을 수 있는 CodeQL 팩을 표시합니다. 그러면 CodeQL CLI에서 직접 사용할 수 있는 모든 CodeQL 팩의 이름이 표시됩니다. 여기에는 다음 사항이 포함됩니다.- 각 지원 언어에 대한 쿼리 팩(예시:
codeql/{language}-queries). 이러한 팩에는 분석마다 실행하게 될 표준 쿼리가 포함됩니다. - 각 지원 언어마다 쿼리 팩(예시:
codeql/{language}-all). 이러한 팩에는 쿼리 작성기에 유용한 제어 흐름 및 데이터 흐름 라이브러리 등 쿼리 라이브러리가 포함됩니다. - 지원되는 언어마다 예시 팩(예시:
codeql/{language}-examples). 이 팩에는 쿼리 작성자들에게 유용할 수 있는 CodeQL 코드 조각이 포함되어 있습니다. - 이전 제품을 사용하여 만든 사용자 지정 쿼리 및 라이브러리가 사용자의 버전 CodeQL과 호환되도록 하는 레거시 팩입니다.
- 각 지원 언어에 대한 쿼리 팩(예시: