С помощью анализа вариантов с несколькими репозиториями (MRVA) можно выполнять запросы CodeQL в списке до 1000 репозиториев на GitHub из Visual Studio Code.
Предпосылки
-
Необходимо включить code scanning с помощью CodeQL на GitHub, используя настройку по умолчанию или расширенную настройку, прежде чем добавлять репозиторий в список для анализа. Сведения о включении code scanning с помощью CodeQLсм. в разделе Настройка настройки по умолчанию для сканирования кода.
-
Перед запуском первого анализа вариантов с несколькими репозиториями необходимо определить репозиторий контроллеров.
-
Репозитории контроллера могут быть пустыми, но они должны иметь по крайней мере одну фиксацию.
-
В GitHub.comвидимость репозитория контроллера может быть общедоступной, если планируется проанализировать только общедоступные репозитории. Анализ вариантов будет бесплатным.
-
Видимость репозитория контроллера должна быть частной, если необходимо проанализировать частные или внутренние репозитории на GitHub.com.
Все минуты действий, которые используются для выполнения анализа вариантов в частных или внутренних репозиториях, превышающих бесплатный предел, взимается владельцу репозитория. Дополнительные сведения о бесплатных минутах и выставлении счетов см. в разделе Биллинг GitHub Actions.
Настройка репозитория контроллера для MRVA
-
В представлении "Репозитории анализа вариантов" щелкните "Настройка репозитория контроллера", чтобы отобразить поле для репозитория контроллера.

-
Введите владельца и имя репозитория на GitHub, которые вы хотите использовать в качестве репозитория контроллера, и нажмите клавишу ВВОД .
-
Если вам будет предложено выполнить проверку подлинности с помощью GitHub, следуйте инструкциям и войдите в учетную запись. По завершении запроса от GitHub проверка подлинности может запрашивать разрешение на открытие в Visual Studio Code, нажмите кнопку "Открыть".
Имя репозитория контроллера сохраняется в параметрах расширения CodeQL. Сведения об изменении репозитория контроллера см. в разделе Настройка параметров.
Выполнение запроса в масштабе с помощью MRVA
-
По умолчанию в представлении "Репозитории анализа вариантов" отображаются списки по умолчанию лучших 10, top 100 и Top 1000 общедоступных репозиториев на GitHub.com для языка, который вы анализируете. Если репозиторий контроллера размещен на SUBDOMAIN.ghe.com, эти списки недоступны.
-
При необходимости можно добавить новый репозиторий, организацию или список.
-
В представлении "Репозитории анализа вариантов" щелкните + , чтобы добавить новую базу данных.
-
В раскрывающемся меню выберите из репозитория GitHub или все репозитории GitHub организации или владельца.
-
Введите идентификатор репозитория или организации, которую вы хотите использовать в поле.
-
-
Выберите репозиторий или репозитории GitHub для выполнения запроса.

-
Откройте запрос, который нужно запустить, щелкните правой кнопкой мыши файл запроса и выберите CodeQL: выполните анализ вариантов , чтобы начать анализ вариантов.
Примечание.
Чтобы отменить выполнение варианта анализа, нажмите кнопку "Остановить запрос " в представлении "Результаты анализа вариантов".
Выбор одного репозитория или организации GitHub для анализа
-
В представлении "Репозитории анализа вариантов" щелкните + , чтобы добавить новую базу данных.
-
В раскрывающемся меню выберите из репозитория GitHub или все репозитории GitHub организации или владельца.
-
Введите идентификатор репозитория или организации, которую вы хотите использовать в поле.
Ошибки и предупреждения
При запуске MRVA отображаются два ключевых места, в которых отображаются ошибки и предупреждения:
-
Ошибки Visual Studio Code: все проблемы с созданием пакета CodeQL и отправкой анализа в GitHub сообщаются как ошибки Visual Studio Code в правом нижнем углу приложения. Сведения также доступны в представлении "Проблемы".
-
"Результаты анализа вариантов": все проблемы с выполнением анализа вариантов сообщаются в этом представлении.
Изучение результатов
Как только рабочий процесс выполняет анализ вариантов на GitHub , откроется представление "Результаты анализа вариантов", чтобы отобразить результаты по мере их готовности. Это представление можно использовать для мониторинга хода выполнения, просмотра ошибок и доступа к журналам рабочих процессов в репозитории контроллера.

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

Экспорт результатов
Вы можете экспортировать результаты для дальнейшего анализа или обсудить их с участниками совместной работы. В представлении "Результаты" нажмите кнопку "Экспорт результатов", чтобы экспортировать результаты в секретный gist на GitHub или в файл Markdown в рабочей области.
Создание настраиваемого списка репозиториев
Примечание.
Для выполнения запросов всегда требуется база данных CodeQL для анализа данных CodeQL. При выполнении анализа вариантов в списке репозиториев запрос будет выполняться только в репозиториях, которые в настоящее время имеют базу данных CodeQL, доступную для скачивания. Лучший способ сделать репозиторий доступным для анализа вариантов — включить code scanning с CodeQL. Сведения о включении code scanning с помощью CodeQLсм. в разделе Настройка настройки по умолчанию для сканирования кода.
-
В представлении "Репозитории анализа вариантов" щелкните значок "Добавить список".

-
Введите имя нового списка и нажмите клавишу ВВОД.
-
Выберите список в представлении, а затем добавьте + репозиторий в список.
Управление настраиваемыми списками репозиториев
Вы можете управлять и изменять настраиваемые списки, щелкнув правой кнопкой мыши имя списка или имя репозитория в списке, а также выбрав параметр в контекстном меню.
Настраиваемые списки хранятся в рабочей области в 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 для добавления репозиториев в пользовательский список
Примечание.
Эта функция использует устаревший поиск кода с помощью API поиска кода GitHub. Дополнительные сведения об используемом синтаксисе см. в разделе Поиск кода (legacy).
Вы можете использовать поиск кода непосредственно в расширении CodeQL для добавления подмножества репозиториев из GitHub в пользовательский список.
Например, чтобы добавить все репозитории в rails организацию на GitHub, выполните поиск org:rails.
Вы можете добавить не более 1000 репозиториев в пользовательский список для каждого поиска.
-
В представлении "Репозитории анализа вариантов" выберите список, в который нужно добавить репозитории. Вы можете создать новый список или выбрать существующий список, который уже содержит репозитории.
-
Щелкните правой кнопкой мыши выбранный список и выберите пункт "Добавить репозитории" с помощью GitHub поиска кода.
-
Во всплывающем окну, которое отображается в верхней части приложения, в строке поиска выберите язык для поиска в раскрывающемся списке.
-
В строке поиска введите поисковый запрос, который вы хотите использовать, и нажмите клавишу ВВОД.
Ход выполнения поиска можно просмотреть в правом нижнем углу приложения в поле с текстом 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 для расширения Visual Studio Code должен использоваться в качестве репозитория контроллера. По завершении анализа каждого репозитория результаты отправляются в VS Code для просмотра.