Details

Title Разработка экспериментального стенда для агрегации и классификации предупреждений после статической проверки C/C++ программ: выпускная квалификационная работа бакалавра: направление 09.03.03 «Прикладная информатика» ; образовательная программа 09.03.03_03 «Интеллектуальные инфокоммуникационные технологии» = Development of an experimental testbed for aggregation and classification of warnings produced by static analysis of C/C++ programs
Creators Дробилко Валерий Александрович
Scientific adviser Пархоменко Владимир Андреевич
Organization Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности
Imprint Санкт-Петербург, 2026
Collection Выпускные квалификационные работы ; Общая коллекция
Subjects тестирование ; статический анализ кода ; качество программного обеспечения ; безопасность программного обеспечения ; testing ; static code analysis ; software quality ; software security
Document type Bachelor graduation qualification work
Language Russian
Level of education Bachelor
Speciality code (FGOS) 09.03.03
Speciality group (FGOS) 090000 - Информатика и вычислительная техника
DOI 10.18720/SPBPU/3/2026/vr/vr26-1672
Rights Доступ по паролю из сети Интернет (чтение, печать, копирование)
Additionally New arrival
Record key ru\spstu\vkr\42491
Record create date 8/21/2026

Allowed Actions

Action 'Read' will be available if you login or access site from another network

Action 'Download' will be available if you login or access site from another network

Group Anonymous
Network Internet

Цель исследования — разработать экспериментальный стенд для агрегации и классификации предупреждений после статической проверки C/C++ программ. Объектом исследования в данной работе являются предупреждения об угрозах уязвимости и ошибок в программных продуктах, написанных на C/C++. В данной работе изложен подход к разработке средств классификации предупреждений статического анализа по критичности для программ на C/C++. Сформулированы базовые понятия (тип предупреждения, источник, контекст, уровень критичности) и предложена удобная для автоматизации классификация предупреждений. Проведён обзор и сравнительный анализ актуальных статических анализаторов кода (например, Clang Static Analyzer, Cppcheck, PVS-Studio, CodeQL, Svace) с точки зрения полноты и качества сообщений. Изучены методы построения классификаторов и особенности их применения к данным статического анализа. Разработан прототип программного решения, который выполняет как сквозную, так и помодульную обработку предупреждений: извлечение предупреждений (запуск статических анализаторов + унификация результатов статического анализа), агрегация унифицированных предупреждений, LLM или ML порядковая классификация агрегированных предупреждений, формирования результатов в удобный отчет. В результате тестирования и апробации разработанного стенда показана возможность объединения результатов нескольких статических анализаторов, сокращения количества дублирующихся записей и приоритизация агрегированных предупреждений порядковой классификацией. Таким образом, разработанный экспериментальный стенд может использоваться для автоматизации работы разработчиков и специалистов по качеству программного обеспечения путем сокращения объема ручной проверки. Для достижения данных результатов в работе были использованы облачный сервис OpenRouter и такие статические анализаторы: Cppcheck, Rats, FlawFinder, Clang SA и CodeQL.

The purpose of the research is to develop an experimental testbed for aggregation and classification of warnings after static analysis of C/C++ programs. The object of research in this work is warnings about security vulnerabilities and errors in software products written in C/C++. This paper presents an approach to the development of tools for classifying static analysis warnings by criticality for C/C++ programs. Basic concepts are defined (warning type, source, context, severity level), and a classification of warnings suitable for automation is proposed. A review and comparative analysis of relevant static code analyzers (e.g., Clang Static Analyzer, Cppcheck, PVS-Studio, CodeQL, Svace) is conducted from the perspective of completeness and quality of messages. Methods for constructing classifiers and the specifics of their application to static analysis data are studied. A prototype of a software solution is developed, which performs both end-to-end and modular processing of warnings: extraction of warnings (static analyzers execution + unification of static analysis results), aggregation of unified warnings, LLM or ML ordinal classification of aggregated warnings, and generation of results in a convenient report. Through testing and evaluation of the developed testbed, the possibility of combining results from multiple static analyzers, reducing the number of duplicate entries, and prioritizing aggregated warnings through ordinal classification is demonstrated. Thus, the developed experimental testbed can be used to automate the work of developers and software quality engineers by reducing the volume of manual checking. To achieve these results, we used the OpenRouter cloud service and the following static analyzers: Cppcheck, Rats, FlawFinder, Clang SA, and CodeQL.

Network User group Action
ILC SPbPU Local Network All
Read Print Download
Internet Authorized users SPbPU
Read Print Download
Internet Anonymous
  • Разработка экспериментального стенда для агрегации и классификации предупреждений после статической проверки C/C++ программ
    • Введение
    • 1. Исследование средств классификации предупреждений для программ на C/C++
    • 2. Проектирование экспериментального стенда для агрегации и классификации предупреждений для C/C++ программ после статической проверки
    • 3. Реализация экспериментального стенда для агрегации и классификации предупреждений для C/C++ программ после статической проверки
    • 4. Тестирование и апробация экспериментального стенда для агрегации и классификации предупреждений после статической проверки C/C++ программ
    • Заключение
    • Список использованных источников
    • Приложение 1 Листинг программного кода
...