{"meta":{"title":"О проверке кода с помощью CodeQL","intro":"Для выявления уязвимостей и ошибок в коде вы можете использовать CodeQL. Результаты отображаются как оповещения code scanning в GitHub.","product":"Безопасность и качество кода","breadcrumbs":[{"href":"/ru/code-security","title":"Безопасность и качество кода"},{"href":"/ru/code-security/concepts","title":"Concepts"},{"href":"/ru/code-security/concepts/code-scanning","title":"Проверка кода"},{"href":"/ru/code-security/concepts/code-scanning/codeql","title":"CodeQL"},{"href":"/ru/code-security/concepts/code-scanning/codeql/about-code-scanning-with-codeql","title":"Сканирование кода CodeQL"}],"documentType":"article"},"body":"# О проверке кода с помощью CodeQL\n\nДля выявления уязвимостей и ошибок в коде вы можете использовать CodeQL. Результаты отображаются как оповещения code scanning в GitHub.\n\nCodeQL — это система анализа кода, разработанная GitHub для автоматизации проверок безопасности. Код можно проанализировать, используя CodeQL, и отобразить результаты в виде оповещений code scanning.\n\nСуществует три основных способа использования анализа данных CodeQL для code scanning:\n\n* Используйте настройку по умолчанию, чтобы быстро настроить анализ CodeQL для code scanning в репозитории. Настройка по умолчанию автоматически выбирает языки для анализа, набора запросов для выполнения и событий, которые активируют сканирование. Если вы предпочитаете, можно вручную выбрать набор запросов для выполнения и анализа языков. После включения CodeQL{ GitHub Actions выполняет рабочий процесс для сканирования кода. Дополнительные сведения см. в разделе [Настройка настройки по умолчанию для сканирования кода](/ru/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning).\n\n* Используйте расширенную настройку, чтобы добавить в репозиторий рабочий процесс CodeQL. При этом создается настраиваемый файл рабочего процесса, который использует [действие github/codeql-action](https://github.com/github/codeql-action/) для запуска CodeQL CLI. Дополнительные сведения см. в разделе [Настройка расширенной настройки для сканирования кода](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-advanced-setup-for-code-scanning-with-codeql).\n\n* Запустите CodeQL CLI непосредственно во внешней системе CI и отправьте результаты в GitHub. Дополнительные сведения см. в разделе [Использование сканирования кода с существующей системой CI](/ru/code-security/code-scanning/integrating-with-code-scanning/using-code-scanning-with-your-existing-ci-system).\n\nСведения о оповещениях code scanning см. в разделе [О предупреждениях о сканировании кода](/ru/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts).\n\n## Сведения о CodeQL\n\nCodeQL — это язык программирования и связанные средства, которые обрабатывают код, как данные. Он был создан явным образом, чтобы упростить анализ кода и найти потенциальные уязвимости в коде с большей уверенностью, чем традиционные статические анализаторы.\n\n1. Создается база данных CodeQL для представления базы кода.\n2. Затем выполняются запросы CodeQL к этой базе данных для выявления проблем в базе кода.\n3. Результаты запроса отображаются как оповещения code scanning в GitHub при использовании CodeQL с code scanning.\n\nCodeQL поддерживает как компилируемые, так и интерпретируемые языки и может находить уязвимости и ошибки в коде, написанном на поддерживаемых языках.\n\nCodeQL поддерживает следующие языки:\n\n<!-- If you update the list of supported languages for CodeQL, update docs-internal/content/get-started/learning-about-github/github-language-support.md to reflect the changes. -->\n\n* C/C++\n* C#\n* Go\n* Java и Kotlin\n* JavaScript/TypeScript\n* Python\n* Ruby\n* Rust\n* Swift \\* GitHub Actions рабочих процессов\n\n> \\[!NOTE]\n>\n> * Используется `java-kotlin` для анализа кода, написанного на Java, Kotlin или обоих.\n> * Используется `javascript-typescript` для анализа кода, написанного на JavaScript, TypeScript или обоих.\n\nДополнительные сведения см. в документации на веб-сайте CodeQL: [поддерживаемые языки и платформы](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks/).\n\n> \\[!IMPORTANT]\n> CodeQL **не** поддерживает языки, которые не перечислены выше. Это включает в себя, но не ограничивается, **PHP**, **Scala** и т. д. Попытка использования CodeQL с неподдерживаемыми языками может привести к тому, что оповещения не создаются и не выполняются неполный анализ.\n\n## Моделирование пользовательских или нишевых платформ\n\nGitHub эксперты, исследователи безопасности и участники сообщества записывают библиотеки для моделирования потока данных в популярных платформах и библиотеках. Если вы используете пользовательские зависимости, которые не моделируются, можно использовать расширение CodeQL для Visual Studio Code для создания моделей для этих зависимостей и их использования для расширения анализа. Дополнительные сведения см. в разделе [Использование редактора моделей CodeQL](/ru/code-security/codeql-for-vs-code/using-the-advanced-functionality-of-the-codeql-for-vs-code-extension/using-the-codeql-model-editor).\n\n## Запросы CodeQL\n\nGitHub эксперты, исследователи безопасности и участники сообщества записывают и поддерживают запросы по умолчанию CodeQL, используемые для code scanning. Запросы регулярно обновляются для улучшения анализа и уменьшения результатов ложноположительных результатов.\n\n### Написание собственных запросов\n\nЗапросы открытый код, поэтому вы можете просматривать и вносить вклад в запросы в [репозитории github/codeql](https://github.com/github/codeql). Дополнительные сведения см. в разделе [\"Сведения о CodeQL в](https://codeql.github.com/docs/writing-codeql-queries/about-codeql-queries/) документации по CodeQL.\n\n### Выполнение дополнительных запросов\n\nЕсли вы сканируете код с помощью расширенной установки или внешней системы CI, вы можете выполнять дополнительные запросы в рамках анализа.\n\nЭти запросы должны принадлежать опубликованному пакету запросов CodeQL или пакету CodeQL в репозитории.\n\n* Когда пакет запросов CodeQL публикуется в GitHub Container registry, все транзитивные зависимости, необходимые запросам и кэш компиляции, включаются в пакет. Это повышает производительность и гарантирует, что выполнение запросов в пакете дает одинаковые результаты при каждом обновлении до новой версии пакета или CLI.\n\n* Пакеты запросов CodeQL можно скачать из нескольких реестров контейнеров GitHub . Дополнительные сведения см. в разделе [Параметры настройки рабочих процессов для сканирования кода](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#downloading-codeql-packs-from-github-enterprise-server).\n\nДополнительные сведения см. в разделе [Настройка анализа с помощью пакетов CodeQL](/ru/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs)."}