Skip to main content

Выполнение запросов CodeQL в масштабе с помощью анализа вариантов с несколькими репозиториями

Вы можете запускать CodeQL запросы к большому числу репозиториев на GitHub .Visual Studio Code

С помощью многорепозиторного вариантного анализа (MRVA) вы можете запускать CodeQL запросы к списку из до 1000 репозиториев на GitHub .Visual Studio Code

Необходимые условия

  • Вам нужно включить code scanning использование CodeQL on GitHub, используя либо стандартную установку, либо расширенную установку, прежде чем добавлять репозиторий в список для анализа. Для информации об включении code scanning при CodeQLиспользовании см. Настройка настройки по умолчанию для сканирования кода.

  • Перед запуском первого анализа вариантов с несколькими репозиториями необходимо определить репозиторий контроллеров.

  • Репозитории контроллера могут быть пустыми, но они должны иметь по крайней мере одну фиксацию.

  • Репозиторий контроллера должен размещаться на том же сайте, что и репозитории, которые вы хотите проанализировать с помощью MRVA, то есть: GitHub.com или SUBDOMAIN.ghe.com. Если вы хотите запустить MRVA на GitHub Enterprise Cloud с размещением данных, см. раздел «Изменение GitHub URL, используемого расширением».

  • На GitHub.com, видимость репозитория контроллера может быть «публичной», если вы планируете анализировать только публичные репозитории. Анализ вариантов будет бесплатным.

  • Видимость репозитория контроллера должна быть «приватной», если вам нужно анализировать любые приватные или внутренние репозитории на GitHub.com.

Все минуты действий, которые используются для выполнения анализа вариантов в частных или внутренних репозиториях, превышающих бесплатный предел, взимается владельцу репозитория. Для получения дополнительной информации о бесплатных минутах и выставлении счетов смотрите Биллинг GitHub Actions.

Настройка репозитория контроллера для MRVA

  1. В представлении "Репозитории анализа вариантов" щелкните "Настройка репозитория контроллера", чтобы отобразить поле для репозитория контроллера.

    Снимок экрана: представление "Репозитории анализа вариантов". Кнопка "Настройка репозитория контроллера" выделена темно-оранжевым цветом.

  2. Введите владельца и название репозитория GitHub , который хотите использовать как репозиторий контроллера, и нажмите клавишу Enter . Этот репозиторий должен находиться на том же экземпляре GitHub , что и репозитории, которые вы хотите проанализировать, см. раздел «Изменение GitHub URL, используемого расширением».

  3. Если вас попросят сделать аутентификацию, GitHubследуйте инструкциям и войдите в свой аккаунт. Когда вы закончите, запрос из GitHub отдела аутентификации может запросить разрешение на открытие в Visual Studio Code, нажмите Открыть.

Название репозитория контроллера сохраняется в настройках расширения CodeQL . Сведения об изменении репозитория контроллера см. в разделе Настройка параметров.

Выполнение запроса в масштабе с помощью MRVA

  1. По умолчанию в режиме «Репозитории анализа вариантов» отображаются списки публичных GitHub.com репозиториев Топ-10, Топ-100 и Топ-1000 для языка, который вы анализируете. Если ваш репозиторий контроллера размещён на SUBDOMAIN.ghe.com, эти списки недоступны.

  2. При необходимости можно добавить новый репозиторий, организацию или список.

    1. В представлении "Репозитории анализа вариантов" щелкните + , чтобы добавить новую базу данных.

    2. В выпадающем меню выберите «Из GitHub репозитория » или « Все репозитории организации GitHub или владельца».

    3. Введите идентификатор репозитория или организации, которую вы хотите использовать в поле.

  3. Выберите репозиторий GitHub или репозитории для запуска запроса.

    Снимок экрана: представление "Репозитории анализа вариантов". Строка "octo-org/octo-repo" выделена синим цветом, а кнопка "Выбрать" выделена оранжевым цветом.

  4. Откройте нужный запрос, кликните правой кнопкой мыши в файле запроса и выберите CodeQL: Запустить анализ вариантов , чтобы начать анализ вариантов.

Примечание.

Чтобы отменить выполнение варианта анализа, нажмите кнопку "Остановить запрос " в представлении "Результаты анализа вариантов".

Выбор единого GitHub репозитория или организации для анализа

  1. В представлении "Репозитории анализа вариантов" щелкните + , чтобы добавить новую базу данных.

  2. В выпадающем меню выберите «Из GitHub репозитория » или « Все репозитории организации GitHub или владельца».

  3. Введите идентификатор репозитория или организации, которую вы хотите использовать в поле.

Ошибки и предупреждения

При запуске MRVA отображаются два ключевых места, в которых отображаются ошибки и предупреждения:

  •         Visual Studio Code Ошибки: Любые проблемы с созданием пака CodeQL и отправкой анализа GitHub сообщаются как Visual Studio Code ошибки в правом нижнем углу приложения. Сведения также доступны в представлении "Проблемы".
    
  • "Результаты анализа вариантов": все проблемы с выполнением анализа вариантов сообщаются в этом представлении.

Изучение результатов

Как только запускается рабочий процесс для анализа GitHub вариантов, открывается просмотр «Результаты вариантного анализа», показывающий результаты по мере их готовности. Это представление можно использовать для мониторинга хода выполнения, просмотра ошибок и доступа к журналам рабочих процессов в репозитории контроллера.

Снимок экрана: "Результаты анализа вариантов" с запуском файла FileAccessToHttp.ql. Синие круги показывают количество найденных результатов или "-" по-прежнему выполняется.

При запланированном выполнении анализа вариантов представление "Результаты" автоматически открывается. Изначально в представлении отображается список всех репозиторий, запланированных для анализа. По мере анализа каждого репозитория представление обновляется, чтобы отобразить сводку по количеству результатов. Чтобы просмотреть подробные результаты для репозитория (включая пути к результатам), щелкните имя репозитория.

Для каждого репозитория можно увидеть следующее:

  • Количество результатов, найденных запросом

  • Видимость репозитория

  • Выполняется ли анализ или завершен

  • Количество звёзд в репозитории GitHub

Просмотр результатов для репозитория

  1. Щелкните имя репозитория, чтобы отобразить сводку по каждому результату.

  2. Изучите доступную информацию по каждому результату, используя ссылки на исходные файлы на GitHub. Для запросов потока данных будет дополнительная ссылка "Показать пути".

    Снимок экрана: представление "Результаты анализа вариантов" с голубыми ссылками на исходные файлы GitHub. Ссылка "Показать пути" выделена темно-оранжевым цветом.

Экспорт результатов

Вы можете экспортировать результаты для дальнейшего анализа или обсудить их с участниками совместной работы. В просмотре «Результаты» нажмите «Экспортировать результаты », чтобы экспортировать результаты в секретный интерфейс GitHub или в файл Markdown в вашем рабочем пространстве.

Создание настраиваемого списка репозиториев

Примечание.

          CodeQL Анализ всегда требует базы CodeQL данных для выполнения запросов. Когда вы запускаете анализ вариантов по списку репозиториев, ваш запрос выполняется только к репозиториям, где уже доступна CodeQL база данных. Лучший способ сделать репозиторий доступным для анализа вариантов — включить code scanning с CodeQL. Для информации об включении code scanning при CodeQLиспользовании см. [AUTOTITLE](/code-security/how-tos/scan-code-for-vulnerabilities/configure-code-scanning/configuring-default-setup-for-code-scanning).
  1. В представлении "Репозитории анализа вариантов" щелкните значок "Добавить список".

    Снимок экрана: представление "Результаты анализа вариантов". Значок "список надстроек" выделен в темно-оранжевый цвет.

  2. Введите имя нового списка и нажмите клавишу ВВОД.

  3. Выберите список в представлении, а затем добавьте + репозиторий в список.

Управление настраиваемыми списками репозиториев

Вы можете управлять и изменять настраиваемые списки, щелкнув правой кнопкой мыши имя списка или имя репозитория в списке, а также выбрав параметр в контекстном меню.

Настраиваемые списки хранятся в рабочей области в 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.

Вы можете добавить не более 1000 репозиториев в пользовательский список для каждого поиска.

  1. В представлении "Репозитории анализа вариантов" выберите список, в который нужно добавить репозитории. Вы можете создать новый список или выбрать существующий список, который уже содержит репозитории.

  2. Щёлкни правой кнопкой мыши по выбранному списку, а затем выберите « Добавить репозитории» с GitHub поиском по коду.

  3. Во всплывающем окну, которое отображается в верхней части приложения, в строке поиска выберите язык для поиска в раскрывающемся списке.

  4. В строке поиска введите поисковый запрос, который вы хотите использовать, и нажмите клавишу ВВОД.

Ход выполнения поиска можно просмотреть в правом нижнем углу приложения в поле с текстом Searching for repositories.... Если щелкнуть "Отмена", в список не будут добавлены репозитории. После завершения вы увидите, что результирующий репозиторий появится в раскрывающемся списке в пользовательском списке в представлении репозиториев "Анализ вариантов".

Некоторые из полученных репозиториев не будут содержать CodeQL баз данных, а некоторые могут не позволять получить доступ через расширение CodeQL для Visual Studio Code. Когда вы запускаете анализ по списку, вид «Результаты вариантного анализа» покажет, какие репозитории были проанализированы, какие отклонены в доступе, а какие не CodeQL имели базы данных.

Запуск CodeQL запросов с мультирепозиториевым анализом вариантов на самостоятельных раннерах

Чтобы выполнять CodeQL запросы с мультирепозиториевым анализом вариантов к самостоятельным раннерам, сначала нужно убедиться, что вы добавили самостоятельный раннер в репозиторий контроллера, либо убедиться, что репозиторий контроллера имеет доступ к рунеру на уровне организации или предприятия.

Затем необходимо добавить новую переменную репозитория Actions в репозиторий контроллера с именем MRVA_RUNNER_OS , содержащим список отформатированных JSON меток локального runner, который вы хотите использовать. Рассмотрим пример.

["self-hosted", "macOS", "ARM64"]

Примечание.

Необходимо задать MRVA_RUNNER_OS переменную в переменных репозитория Actions в параметрах репозитория контроллера, а не секрет среды или действия в параметрах действий или в файле рабочего процесса .yml . См . раздел AUTOTITLE.

Дополнительные сведения см. в разделе [AUTOTITLE и Добавление локальных средств выполнения](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#changing-which-repositories-can-access-a-runner-group).

При выполнении запроса с анализом вариантов с несколькими репозиториями в локальном средстве выполнения анализ выполняется полностью на локальном средстве выполнения. Вам не нужно создавать новые рабочие процессы, но нужно указать, какой репозиторий CodeQL расширение for Visual Studio Code должно использовать как репозиторий контроллера. По мере завершения анализа каждого репозитория результаты отправляются VS Code вам для просмотра.