Skip to main content

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

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

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

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

При запуске MRVA в списке репозиториев запрос выполняется в каждом репозитории с базой данных CodeQL, доступной для анализа. GitHub создает и сохраняет последнюю базу данных CodeQL для ветвь по умолчанию тысяч общедоступных репозиториев, включая каждый репозиторий, который выполняет code scanning с помощью CodeQL.

Необходимо включить code scanning с помощью CodeQL на GitHub.com, используя настройку по умолчанию или расширенную настройку, прежде чем добавлять репозиторий в список для анализа. Сведения о включении code scanning с помощью CodeQLсм. в разделе "Настройка расширенной настройки для сканирования кода".

Как MRVA выполняет запросы к базам данных CodeQL в GitHub.com

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

Расширение CodeQL создает пакет CodeQL с библиотекой и любыми зависимостями библиотеки. Пакет CodeQL и выбранный список репозитория отправляются в конечную точку API на GitHub.com, которая активирует динамический рабочий процесс GitHub Actions в репозитории контроллера. Рабочий процесс выполняет несколько параллельных заданий, чтобы выполнить запрос CodeQL к репозиториям в списке, оптимизируя выполнение запроса. По мере анализа каждого репозитория результаты обрабатываются и отображаются в VS Code.

Необходимые компоненты

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

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

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

  • Видимость репозитория контроллера должна быть частной, если необходимо проанализировать частные или внутренние репозитории. Все минуты действий, используемых в ходе анализа вариантов, выше бесплатного ограничения, будут взиматься владельцу репозитория. Дополнительные сведения о бесплатных минутах и выставлении счетов см. в разделе "About billing for GitHub Actions".

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

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

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

  2. Введите владельца и имя репозитория в GitHub.com, которые вы хотите использовать в качестве репозитория контроллера, и нажмите клавишу ВВОД .

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

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

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

  1. По умолчанию в представлении "Репозитории анализа вариантов" отображаются списки по умолчанию лучших 10, top 100 и Top 1000 общедоступных репозиториев на GitHub.com для языка, который вы анализируете.

  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. Ссылка "Показать пути" выделена темно-оранжевым цветом.

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

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

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

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

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

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

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

Примечание. Для выполнения запросов к базам данных CodeQL всегда требуется база данных CodeQL. При выполнении анализа вариантов в списке репозиториев запрос будет выполняться только в репозиториях, которые в настоящее время имеют базу данных CodeQL, доступную для скачивания. Лучший способ сделать репозиторий доступным для анализа вариантов — включить code scanning с CodeQL. Сведения о включении code scanning с помощью CodeQLсм. в разделе "Настройка расширенной настройки для сканирования кода".

  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 для добавления репозиториев в пользовательский список

Примечание. Эта функция использует устаревший поиск кода с помощью API поиска кода GitHub. Дополнительные сведения о синтаксисе, используемом, см. в разделе "Поиск кода (legacy)".

Вы можете использовать поиск кода непосредственно в расширении CodeQL для добавления подмножества репозиториев из GitHub.com в настраиваемый список.

Например, чтобы добавить все репозитории в rails организацию на GitHub, выполните поиск org:rails.

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

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

  2. Щелкните правой кнопкой мыши выбранный список и выберите команду "Добавить репозитории" с помощью поиска кода GitHub.

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

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

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

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