다중 리포지토리 변형 분석을 사용한 대규모 CodeQL 쿼리 실행 정보
MRVA(다중 리포지토리 변형 분석)를 사용하면 Visual Studio Code의 GitHub에 있는 최대 1,000개의 리포지토리 목록에서 CodeQL 쿼리를 실행할 수 있습니다.
리포지토리 목록에 대해 MRVA를 실행하면 분석할 수 있는 CodeQL 데이터베이스가 있는 각 리포지토리에 대해 쿼리가 실행됩니다. GitHub는 CodeQL을 사용하여 code scanning을 실행하는 모든 리포지토리를 포함하여 수천 개의 공용 리포지토리 기본 분기에 대한 최신 CodeQL 데이터베이스를 만들고 저장합니다.
분석 목록에 리포지토리를 추가하기 전에 기본 설정 또는 고급 설정을 사용하여 GitHub에서 CodeQL을(를) 사용하여 code scanning을(를) 사용해야 합니다. CodeQL을(를) 사용하여 code scanning을(를) 사용하도록 설정에 대한 자세한 정보는 “코드 스캔을 위한 고급 설정 구성" 섹션을 참조하세요.
MRVA가 GitHub.com에서 CodeQL 데이터베이스에 대해 쿼리를 실행하는 방법
MRVA를 실행하면 분석이 GitHub Actions을(를) 사용하여 완전히 실행됩니다. 워크플로를 만들 필요는 없지만 Visual Studio Code용 CodeQL 확장이 컨트롤러 리포지토리로 사용해야 하는 리포지토리를 지정해야 합니다. 각 리포지토리의 분석이 완료되면 결과를 볼 수 있도록 VS Code(으)로 전송됩니다.
CodeQL 익스텐션은 라이브러리 및 라이브러리 종속성이 있는 CodeQL 팩을 빌드합니다. CodeQL 팩 및 선택한 리포지토리 목록은 GitHub의 API 엔드포인트에 게시되어 컨트롤러 리포지토리에서 GitHub Actions 동적 워크플로를 트리거합니다. 워크플로는 여러 병렬 작업을 실행하여 목록의 리포지토리에 대해 CodeQL 쿼리를 실행해 쿼리 실행을 최적화합니다. 각 리포지토리가 분석되면 결과가 처리되고 VS Code에 표시됩니다.
필수 조건
-
첫 번째 다중 리포지토리 변형 분석을 실행하려면 먼저 컨트롤러 리포지토리를 정의해야 합니다.
-
컨트롤러 리포지토리는 비어 있을 수 있지만 커밋이 하나 이상 있어야 합니다.
-
컨트롤러 리포지토리는 MRVA를 사용하여 분석하려는 리포지토리와 동일한 사이트에 즉, GitHub.com 또는 SUBDOMAIN.ghe.com에서 호스트되어야 합니다. 데이터 보존 기능을 갖춘 GitHub Enterprise Cloud에서 MRVA를 실행하려면 "확장에서 사용하는 GitHub URL 변경"을 참조하세요.
-
GitHub.com에서 퍼블릭 리포지토리만 분석하려는 경우 컨트롤러 리포지토리 표시 여부는 "public"으로 설정할 수 있습니다. 변형 분석은 무료입니다.
-
GitHub.com에서 프라이빗 또는 내부 리포지토리를 분석해야 하는 경우 컨트롤러 리포지토리 표시 여부는 "private"이어야 합니다.
무료 제한을 초과하는 프라이빗 또는 내부 리포지토리에서 변형 분석을 실행하는 데 사용하는 모든 작업 시간(분)은 리포지토리 소유자에게 청구됩니다. 무료 시간(분) 및 청구에 대한 자세한 내용은 "GitHub Actions 요금 청구 정보" 섹션을 참조하세요.
MRVA에 대한 컨트롤러 리포지토리 설정
-
"변형 분석 리포지토리" 보기에서 컨트롤러 리포지토리 설정을 클릭하여 컨트롤러 리포지토리에 대한 필드를 표시합니다.
-
컨트롤러 리포지토리로 사용할 GitHub에 리포지토리의 소유자와 이름을 입력하고 Enter 키를 누릅니다. 이 리포지토리는 분석하려는 리포지토리와 동일한 GitHub 인스턴스에 있어야 합니다. "확장에서 사용하는 GitHub URL 변경"을 참조하세요.
-
GitHub로 인증하라는 메시지가 표시되면 지침에 따라 계정에 로그인합니다. 완료되면 GitHub 인증의 프롬프트에서 Visual Studio Code에서 열 수 있는 권한을 요청할 수 있으며 Open을 클릭합니다.
컨트롤러 리포지토리의 이름은 CodeQL 익스텐션에 대한 설정에 저장됩니다. 컨트롤러 리포지토리를 편집하는 방법에 대한 자세한 내용은 "설정 사용자 지정" 섹션을 참조하세요.
MRVA를 사용하여 대규모 쿼리 실행
-
기본적으로 "변형 분석 리포지토리" 보기에는 분석 중인 언어에 대한 GitHub.com의 상위 10개, 상위 100개 및 상위 1,000개 퍼블릭 리포지토리의 기본 목록이 표시됩니다. 컨트롤러 리포지토리가 SUBDOMAIN.ghe.com에서 호스트되는 경우 이러한 목록을 사용할 수 없습니다.
-
필요에 따라 새 리포지토리, 조직 또는 목록을 추가할 수 있습니다.
-
"변형 분석 리포지토리" 보기에서 새 데이터베이스를 추가하려면 + 를 클릭합니다.
-
드롭다운 메뉴에서 From a GitHub repository 또는 All repositories of GitHub org or owner를 선택합니다.
-
필드에 사용할 리포지토리 또는 조직의 식별자를 입력합니다.
-
-
쿼리를 실행할 GitHub 리포지토리를 선택합니다.
-
실행할 쿼리를 열고 쿼리 파일을 마우스 오른쪽 단추로 클릭한 다음 CodeQL: 변형 분석 실행을 선택하여 변형 분석을 시작합니다.
Note
변형 분석 실행을 취소하려면 "변형 분석 결과" 보기에서 Stop query를 클릭합니다.
분석을 위해 단일 GitHub 리포지토리 또는 조직 선택
-
"변형 분석 리포지토리" 보기에서 새 데이터베이스를 추가하려면 + 를 클릭합니다.
-
드롭다운 메뉴에서 From a GitHub repository 또는 All repositories of GitHub org or owner를 선택합니다.
-
필드에 사용할 리포지토리 또는 조직의 식별자를 입력합니다.
오류 및 경고
MRVA를 실행할 때 오류와 경고가 표시되는 두 가지 주요 위치가 있습니다.
-
Visual Studio Code 오류: CodeQL 팩을 만들고 GitHub에 분석을 보내는 데 관련된 문제는 애플리케이션의 오른쪽 하단에 있는 Visual Studio Code 오류로 보고됩니다. 정보는 "문제" 보기에서도 사용할 수 있습니다.
-
"변형 분석 결과": 변형 분석 실행과 관련된 문제는 이 보기에서 보고됩니다.
결과 탐색
GitHub에서 변형 분석을 실행하는 워크플로가 실행되자마자 "변형 분석 결과" 보기가 열리고 준비가 되면 결과를 표시합니다. 이 보기를 사용하여 진행 상황을 모니터링하고, 오류를 확인하고, 컨트롤러 리포지토리의 워크플로 로그에 액세스할 수 있습니다.
변형 분석 실행이 예약되면 "결과" 보기가 자동으로 열립니다. 처음에는 보기에 분석을 위해 예약된 모든 리포지토리 목록이 표시됩니다. 각 리포지토리를 분석할 때 보기가 업데이트되어 결과 수에 대한 요약이 표시됩니다. 리포지토리에 대한 자세한 결과(결과 경로 포함)를 보려면 리포지토리 이름을 클릭합니다.
각 리포지토리에 대해 다음을 확인할 수 있습니다.
-
쿼리에서 찾은 결과 수
-
리포지토리의 표시 여부
-
분석이 계속 실행 중인지 또는 완료되었는지 여부
-
리포지토리가 GitHub에 있는 별표 표시 수
리포지토리에 대한 결과 보기
-
리포지토리 이름을 클릭하여 각 결과의 요약을 표시합니다.
-
GitHub의 원본 파일에 대한 링크를 사용하여 각 결과에 사용할 수 있는 정보를 탐색합니다. 데이터 흐름 쿼리의 경우 추가 "경로 표시" 링크가 있습니다.
결과 내보내기
추가 분석을 위해 결과를 내보내거나 공동 작업자와 논의할 수 있습니다. "결과" 보기에서 Export results를 클릭하여 GitHub의 비밀 gist 또는 작업 영역의 Markdown 파일로 결과를 내보냅니다.
리포지토리의 사용자 지정 목록 만들기
참고: CodeQL 분석에서 쿼리를 실행하려면 항상 CodeQL 데이터베이스가 필요합니다. 리포지토리 목록에 대해 변형 분석을 실행하면 현재 CodeQL 데이터베이스를 다운로드할 수 있는 리포지토리에 대해서만 쿼리가 실행됩니다. 변형 분석에 리포지토리를 사용할 수 있도록 하는 가장 좋은 방법은 CodeQL을(를) 사용하여 code scanning을(를) 사용하도록 설정하는 것입니다. CodeQL을(를) 사용하여 code scanning을(를) 사용하도록 설정에 대한 자세한 정보는 “코드 스캔을 위한 고급 설정 구성" 섹션을 참조하세요.
-
"변형 분석 리포지토리" 보기에서 "목록 추가" 아이콘을 클릭합니다.
-
새 목록 이름을 입력한 다음 Enter 키를 누릅니다.
-
보기에서 목록을 선택한 다음 + 를 클릭하여 목록에 리포지토리를 추가합니다.
리포지토리의 사용자 지정 목록 관리
목록 이름 또는 목록 내의 리포지토리 이름을 마우스 오른쪽 단추로 클릭하고 컨텍스트 메뉴에서 옵션을 선택하여 사용자 지정 목록을 관리하고 편집할 수 있습니다.
사용자 지정 목록은 databases.json
파일의 작업 영역에 저장됩니다. 이 파일을 Visual Studio Code에서 직접 편집하려면 보기 머리글에서 {} 를 클릭하여 열 수 있습니다.
예를 들어 쿼리에 대한 결과가 있는 리포지토리 집합을 계속 분석하려면 "변형 분석 결과" 보기에서 리포지토리 목록 복사를 클릭하여 결과가 있는 리포지토리 목록만 JSON으로 클립보드에 추가합니다.
다음 예제 조각에서 my-organization/my-repository
에는 쿼리에 대한 결과가 있습니다.
{
"name": "new-repo-list",
"repositories": [
"my-organization/my-repository"
]
}
그런 다음 "변형 분석 리포지토리" 보기에서 쉽게 액세스할 수 있도록 리포지토리의 new-repo-list
를 databases.json
에 삽입할 수 있습니다.
GitHub 코드 검색을 사용하여 사용자 지정 목록에 리포지토리 추가
참고: 이 기능은 GitHub 코드 검색 API를 통해 레거시 코드 검색을 사용합니다. 사용할 구문에 대한 자세한 내용은 "코드 (레거시) 검색" 섹션을 참조하세요.
CodeQL 확장에서 직접 코드 검색을 사용하여 GitHub의 리포지토리 하위 집합을 사용자 지정 목록에 추가할 수 있습니다.
예를 들어 rails
조직의 모든 리포지토리를 GitHub에 추가하려면 org:rails
를 검색합니다.
검색당 사용자 지정 목록에 최대 1,000개의 리포지토리를 추가할 수 있습니다.
-
"변형 분석 리포지토리" 보기에서 리포지토리를 추가할 목록을 선택합니다. 새 목록을 만들거나 이미 리포지토리가 포함된 기존 목록을 선택할 수 있습니다.
-
선택한 목록을 마우스 오른쪽 단추로 클릭한 다음 GitHub 코드 검색을 사용하여 리포지토리 추가를 클릭합니다.
-
애플리케이션의 맨 위에 표시되는 팝업의 검색 창 아래 드롭다운의 선택 항목에서 검색 언어를 선택합니다.
-
검색 창에서 사용할 검색 쿼리를 입력하고 Enter 키를 누릅니다.
Searching for repositories...
텍스트가 있는 상자의 애플리케이션 오른쪽 하단에서 검색 진행률을 확인할 수 있습니다. 취소를 클릭하면 목록에 리포지토리가 추가되지 않습니다. 완료되면 결과 리포지토리가 변형 분석 리포지토리 보기의 사용자 지정 목록 아래 드롭다운에 표시됩니다.
결과 리포지토리 중 일부에는 CodeQL 데이터베이스가 없으며 일부는 Visual Studio Code용 CodeQL 익스텐션의 액세스를 허용하지 않을 수 있습니다. 목록에서 분석을 실행하면 "변형 분석 결과" 보기에 분석된 리포지토리, 액세스가 거부된 리포지토리 및 CodeQL 데이터베이스가 없는 리포지토리가 표시됩니다.