Сканирование кода C++ с помощью GitHub Actions

Kate

Administrator
Команда форума
В прошлом году GitHub выпустил фичу сканирования кода, которая позволяет разработчикам добавлять проверки безопасности в свою среду CI/CD и в целом в рабочую среду. В этом посте демонстрируются основы использования CodeQL, механизма анализа, лежащего в основе сканирования кода, в связке с GitHub Actions.

Что такое CodeQL?​

CodeQL - это механизм анализа, который автоматизирует проверки безопасности путем выполнения запросов к базе данных, созданной на основе вашей кодовой базы. Эта база данных CodeQL создается в процессе сборки и представляет исходный код в реляционной форме. По умолчанию сканирование кода запускает стандартные запросы CodeQL, написанные исследователями GitHub и сообществом, но вы также можете создавать свои собственные запросы.

В набор по умолчанию входят такие запросы, как “Pointer overflow check”, “Potentially overflowing call to snprintf”, “Uncontrolled format string”, и другие.

0bc5210c5fbb793905e1547682ff0a12.jpeg

Настройка CodeQL с GitHub Actions​

Сканирование кода с помощью CodeQL бесплатно для публичных репозиториев и является частью GitHub Advanced Security для GitHub Enterprise. Вот инструкции по быстрой установке в 4 клика. В качестве альтернативы я добавил гифку с приведенными ниже инструкциями:

e515f40ef8a327057fda88fdd67dd43e.gif

Вы можете просмотреть выходные данные сканирования на вкладке "Actions", и вы можете просматривать и управлять любыми предупреждениями сканирования кода на вкладке "Security".

Baselining​

Иногда, особенно для больших legacy-кодовых баз, количество предупреждений может быть огромным. По этой причине CodeQL показывает только новые/исправленные предупреждения в pull request-ах. Если вы хотите управлять существующими предупреждениями, вы можете сделать это в разделе «Code scanning alerts» на вкладке «Security».

a86436d6bc04428be6790e69f7bb0e11.jpeg

Важно понимать разницу между Dismiss и Delete. Одно из ключевых различий заключается в том, что при отклонении (Dismissing) предупреждения тот же код не создает его повторно. При удалении (Deleting) предупреждения тот же код сгенерирует такое же предупреждение при следующем сканировании. В случае, если вы хотите массово отклонять предупреждения, вы можете сделать это из сводки предупреждений (после фильтрации списка по любому набору предупреждений, который вы хотите отклонить).

Источник статьи: https://habr.com/ru/company/microsoft/blog/566716/
 
Сверху