Инструменты статического анализа исходного кода программ на языках C, C++ и C#


Инструменты статического анализа исходного кода программ на языках C, C++ и C#

Начало проекта – 2001 год. Окончание проекта - 2017 год. Заказчик - Klocwork a Rogue Wave Company.

По заказу и совместно с канадской компанией Klocwork a Rogue Wave Company (ранее Klocwork Inc.) в группе анализа программ разрабатывается семейство инструментов статического анализа исходного кода программ на языках C, C++ и C# с объемом кода в несколько миллионов строк.

В рамках проекта непосредственно в ИСП РАН разработан фронтенд компилятора языков C и C++ с поддержкой расширений языка для компиляторов GCC, Microsoft C++ Compiler, Green Hills, CodeWarior и других, а также собственный фронтенд компилятора для языка C#. На основе разработанной компиляторной инфраструктуры построен набор статических анализаторов, позволяющих с высокой вероятностью и точностью обнаруживать критические дефекты времени исполнения программы, такие как разыменование неинициализированного или нулевого указателя, выход за границы массива и переполнение буфера и другие. Также, на основе разработанной компиляторной инфраструктуры возможно проведение анализа программы на соответствие различным стандартам разработки программного обеспечения (MISRA).

В рамках работ по созданию инструментов статического анализа сотрудниками группы разработан язык описания дефектов в виде шаблонов на дереве разбора программы KAST и инфраструктура проведения рефакторинга исходного кода программ на языках C и C++.

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

Исполнитель

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

Перейти к списку всех проектов