Skip to main content

다중 리포지토리 변형 분석을 사용하여 대규모 CodeQL 쿼리 실행

Visual Studio Code의 GitHub.com에 있는 많은 수의 리포지토리에서 CodeQL 쿼리를 실행할 수 있습니다.

참고: 다중 리포지토리 변형 분석은 현재 베타 릴리스로 사용할 수 있으며 변경될 수 있습니다. 이 기능을 사용하려면 Visual Studio Code용 CodeQL을(를) 최소 1.8.0 버전으로 업그레이드해야 합니다.

다중 리포지토리 변형 분석을 사용한 대규모 CodeQL 쿼리 실행 정보

MRVA(다중 리포지토리 변형 분석)를 사용하면 Visual Studio Code의 GitHub.com에 있는 최대 1,000개의 리포지토리 목록에서 CodeQL 쿼리를 실행할 수 있습니다.

리포지토리 목록에 대해 MRVA를 실행하면 분석할 수 있는 CodeQL 데이터베이스가 있는 각 리포지토리에 대해 쿼리가 실행됩니다. GitHub은(는) CodeQL을(를) 사용하여 code scanning을(를) 실행하는 모든 리포지토리를 포함하여 수천 개의 공용 리포지토리 기본 분기에 대한 최신 CodeQL 데이터베이스를 만들고 저장합니다.

분석 목록에 리포지토리를 추가하기 전에 기본 설정 또는 고급 설정을 사용하여 GitHub.com에서 CodeQL을(를) 사용하여 code scanning을(를) 사용하도록 설정해야 합니다. CodeQL을(를) 사용하여 code scanning을(를) 사용하도록 설정에 대한 자세한 정보는 “코드 스캔을 위한 기본 설정 구성" 섹션을 참조하세요.

MRVA가 GitHub.com에서 CodeQL 데이터베이스에 대해 쿼리를 실행하는 방법

MRVA를 실행하면 분석이 GitHub Actions을(를) 사용하여 완전히 실행됩니다. 워크플로를 만들 필요는 없지만 Visual Studio Code의 CodeQL 익스텐션이 컨트롤러 리포지토리로 사용해야 하는 GitHub 리포지토리를 지정해야 합니다. 각 리포지토리의 분석이 완료되면 결과를 볼 수 있도록 VS Code(으)로 전송됩니다.

CodeQL 익스텐션은 라이브러리 및 라이브러리 종속성이 있는 CodeQL 팩을 빌드합니다. CodeQL 팩 및 선택한 리포지토리 목록은 GitHub.com의 API 엔드포인트에 게시되어 컨트롤러 리포지토리에서 GitHub Actions 동적 워크플로를 트리거합니다. 워크플로는 여러 병렬 작업을 실행하여 목록의 리포지토리에 대해 CodeQL 쿼리를 실행해 쿼리 실행을 최적화합니다. 각 리포지토리가 분석되면 결과가 처리되고 VS Code에 표시됩니다.

필수 조건

  • 첫 번째 다중 리포지토리 변형 분석을 실행하려면 먼저 컨트롤러 리포지토리를 정의해야 합니다.

  • 컨트롤러 리포지토리는 비어 있을 수 있지만 커밋이 하나 이상 있어야 합니다.

  • 공용 리포지토리를 분석하려는 경우 컨트롤러 리포지토리 표시 유형은 "퍼블릭"일 수 있습니다. 변형 분석은 무료입니다.

  • 프라이빗 또는 내부 리포지토리를 분석해야 하는 경우 컨트롤러 리포지토리 표시 유형은 "프라이빗"이어야 합니다. 무료 제한을 초과하는 변형 분석에서 사용하는 모든 작업 시간(분)은 리포지토리 소유자에게 청구됩니다. 무료 시간(분) 및 청구에 대한 자세한 내용은 "GitHub Actions 요금 청구 정보" 섹션을 참조하세요.

MRVA에 대한 컨트롤러 리포지토리 설정

  1. "변형 분석 리포지토리" 보기에서 컨트롤러 리포지토리 설정을 클릭하여 컨트롤러 리포지토리에 대한 필드를 표시합니다.

    "변형 분석 리포지토리" 보기의 스크린샷 "컨트롤러 리포지토리 설정" 버튼이 진한 주황색으로 강조 표시됩니다.

  2. 컨트롤러 리포지토리로 사용할 GitHub.com에 리포지토리의 소유자와 이름을 입력하고 Enter 키를 누릅니다.

  3. GitHub(으)로 인증하라는 메시지가 표시되면 지침에 따라 개인 또는 조직 계정에 로그인합니다. 완료되면 GitHub 인증의 프롬프트에서 Visual Studio Code에서 열 수 있는 권한을 요청할 수 있으며 열기를 클릭합니다.

컨트롤러 리포지토리의 이름은 CodeQL 익스텐션에 대한 설정에 저장됩니다. 컨트롤러 리포지토리를 편집하는 방법에 대한 자세한 내용은 "설정 사용자 지정" 섹션을 참조하세요.

MRVA를 사용하여 대규모 쿼리 실행

  1. 기본적으로 "변형 분석 리포지토리" 보기에는 분석 중인 언어에 대한 GitHub.com의 상위 10개, 상위 100개 및 상위 1,000개 퍼블릭 리포지토리의 기본 목록이 표시됩니다.

  2. 필요에 따라 새 리포지토리, 조직 또는 목록을 추가할 수 있습니다. 자세한 내용은 "리포지토리의 사용자 지정 목록 만들기”를 참조하세요.

  3. 쿼리를 실행할 GitHub 리포지토리를 선택합니다.

    "변형 분석 리포지토리" 보기의 스크린샷 "octo-org/octo-repo" 행은 파란색으로 강조 표시되고 "선택" 버튼은 주황색으로 표시됩니다.

  4. 실행할 쿼리를 열고 쿼리 파일을 마우스 오른쪽 단추로 클릭한 다음 CodeQL: 변형 분석 실행을 선택하여 변형 분석을 시작합니다.

참고: 변형 분석 실행을 취소하려면 "변형 분석 결과" 보기에서 쿼리 중지를 클릭합니다.

오류 및 경고

MRVA를 실행할 때 오류와 경고가 표시되는 두 가지 주요 위치가 있습니다.

  • Visual Studio Code 오류: CodeQL 팩을 만들고 GitHub.com에 분석을 보내는 데 관련된 문제는 애플리케이션의 오른쪽 하단에 있는 있는 Visual Studio Code 오류로 보고됩니다. 정보는 "문제" 보기에서도 사용할 수 있습니다.

  • "변형 분석 결과": 변형 분석 실행과 관련된 문제는 이 보기에서 보고됩니다.

결과 탐색

GitHub에서 변형 분석을 실행하는 워크플로가 실행되자마자 "변형 분석 결과" 보기가 열리고 준비가 되면 결과를 표시합니다. 이 보기를 사용하여 진행 상황을 모니터링하고, 오류를 확인하고, 컨트롤러 리포지토리의 워크플로 로그에 액세스할 수 있습니다.

"FileAccessToHttp.ql"에 대한 실행을 보여 주는 "변형 분석 결과" 스크린샷 파란색 원은 찾은 결과 또는 "-"가 여전히 실행 중인 수를 표시합니다.

변형 분석 실행이 예약되면 "결과" 보기가 자동으로 열립니다. 처음에는 보기에 분석을 위해 예약된 모든 리포지토리 목록이 표시됩니다. 각 리포지토리를 분석할 때 보기가 업데이트되어 결과 수에 대한 요약이 표시됩니다. 리포지토리에 대한 자세한 결과(결과 경로 포함)를 보려면 리포지토리 이름을 클릭합니다.

각 리포지토리에 대해 다음을 확인할 수 있습니다.

  • 쿼리에서 찾은 결과 수

  • 리포지토리의 표시 여부

  • 분석이 계속 실행 중인지 또는 완료되었는지 여부

  • 리포지토리가 GitHub에 있는 별표 표시 수

리포지토리에 대한 결과 보기

  1. 리포지토리 이름을 클릭하여 각 결과의 요약을 표시합니다.

  2. GitHub.com의 원본 파일에 대한 링크를 사용하여 각 결과에 사용할 수 있는 정보를 탐색합니다. 데이터 흐름 쿼리의 경우 추가 "경로 표시" 링크가 있습니다.

    GitHub 원본 파일에 대한 파란색 링크가 있는 "변형 분석 결과" 보기의 스크린샷 "경로 표시" 링크는 진한 주황색으로 강조 표시됩니다.

결과 내보내기

추가 분석을 위해 결과를 내보내거나 공동 작업자와 논의할 수 있습니다. "결과" 보기에서 결과 내보내기를 클릭하여 GitHub.com의 비밀 gist 또는 작업 영역의 Markdown 파일로 결과를 내보냅니다.

분석을 위해 단일 GitHub 리포지토리 또는 조직 선택

  1. "변형 분석 리포지토리" 보기에서 새 데이터베이스를 추가하려면 + 를 클릭합니다.

  2. 드롭다운 메뉴에서 GitHub 리포지토리에서 또는 GitHub 조직 또는 소유자의 모든 리포지토리를 선택합니다.

  3. 필드에 사용할 리포지토리 또는 조직의 식별자를 입력합니다.

리포지토리의 사용자 지정 목록 만들기

참고: CodeQL 분석에서 쿼리를 실행하려면 항상 CodeQL 데이터베이스가 필요합니다. 리포지토리 목록에 대해 변형 분석을 실행하면 현재 CodeQL 데이터베이스를 다운로드할 수 있는 리포지토리에 대해서만 쿼리가 실행됩니다. 변형 분석에 리포지토리를 사용할 수 있도록 하는 가장 좋은 방법은 CodeQL을(를) 사용하여 code scanning을(를) 사용하도록 설정하는 것입니다. CodeQL을(를) 사용하여 code scanning을(를) 사용하도록 설정에 대한 자세한 정보는 “코드 스캔을 위한 기본 설정 구성" 섹션을 참조하세요.

  1. "변형 분석 리포지토리" 보기에서 "목록 추가" 아이콘을 클릭합니다.

    "변형 분석 결과" 보기의 스크린샷 "추가 목록" 아이콘이 진한 주황색으로 강조 표시됩니다.

  2. 새 목록 이름을 입력한 다음 Enter 키를 누릅니다.

  3. 보기에서 목록을 선택한 다음 + 를 클릭하여 목록에 리포지토리를 추가합니다.

리포지토리의 사용자 지정 목록 관리

목록 이름 또는 목록 내의 리포지토리 이름을 마우스 오른쪽 단추로 클릭하고 컨텍스트 메뉴에서 옵션을 선택하여 사용자 지정 목록을 관리하고 편집할 수 있습니다.

사용자 지정 목록은 databases.json 파일의 작업 영역에 저장됩니다. 이 파일을 Visual Studio Code에서 직접 편집하려면 보기 머리글에서 {} 를 클릭하여 열 수 있습니다.

예를 들어 쿼리에 대한 결과가 있는 리포지토리 집합을 계속 분석하려면 "변형 분석 결과" 보기에서 리포지토리 목록 복사를 클릭하여 결과가 있는 리포지토리 목록만 JSON으로 클립보드에 추가합니다.

다음 예제 조각에서 my-organization/my-repository에는 쿼리에 대한 결과가 있습니다.

{
    "name": "new-repo-list",
    "repositories": [
        "my-organization/my-repository"
    ]
}

그런 다음 "변형 분석 리포지토리" 보기에서 쉽게 액세스할 수 있도록 리포지토리의 new-repo-listdatabases.json에 삽입할 수 있습니다.

GitHub 코드 검색을 사용하여 사용자 지정 목록에 리포지토리 추가

참고: 이 기능은 GitHub 코드 검색 API를 통해 레거시 코드 검색을 사용합니다. 사용할 구문에 대한 자세한 내용은 "코드(레거시) 검색" 섹션을 참조하세요.

CodeQL 익스텐션에서 직접 코드 검색을 사용하여 GitHub.com의 리포지토리 하위 집합을 사용자 지정 목록에 추가할 수 있습니다.

예를 들어 rails 조직의 모든 리포지토리를 GitHub에 추가하려면 org:rails를 검색합니다.

검색당 사용자 지정 목록에 최대 1,000개의 리포지토리를 추가할 수 있습니다.

  1. "변형 분석 리포지토리" 보기에서 리포지토리를 추가할 목록을 선택합니다. 새 목록을 만들거나 이미 리포지토리가 포함된 기존 목록을 선택할 수 있습니다.

  2. 선택한 목록을 마우스 오른쪽 단추로 클릭한 다음 GitHub 코드 검색을 사용하여 리포지토리 추가를 클릭합니다.

  3. 애플리케이션의 맨 위에 표시되는 팝업의 검색 창 아래 드롭다운의 선택 항목에서 검색 언어를 선택합니다.

  4. 검색 창에서 사용할 검색 쿼리를 입력하고 Enter 키를 누릅니다.

Searching for repositories... 텍스트가 있는 상자의 애플리케이션 오른쪽 하단에서 검색 진행률을 확인할 수 있습니다. 취소를 클릭하면 목록에 리포지토리가 추가되지 않습니다. 완료되면 결과 리포지토리가 변형 분석 리포지토리 보기의 사용자 지정 목록 아래 드롭다운에 표시됩니다.

결과 리포지토리 중 일부에는 CodeQL 데이터베이스가 없으며 일부는 Visual Studio Code용 CodeQL 익스텐션의 액세스를 허용하지 않을 수 있습니다. 목록에서 분석을 실행하면 "변형 분석 결과" 보기에 분석된 리포지토리, 액세스가 거부된 리포지토리 및 CodeQL 데이터베이스가 없는 리포지토리가 표시됩니다.