О Svace

Шаг 1. Сборка

Запустите svace build, передав в качестве аргументов команду сборки программы. Svace запустит и будет отслеживать процесс сборки, собирая необходимые для анализа данные.

Шаг 2. Анализ

После завершения сборки, запустите svace analyze, чтобы начать фазу анализа. Svace произведёт легковесный анализ на основе абстрактного дерева синтаксиса и запустит чувствительный к путям и контексту межпроцедурный анализ программы.

Шаг 3. Предупреждения

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

Сборка

Перехват сборки

На фазе сборки Svace отслеживает процесс сборки и выявляет особые события (такие, как запуск компилятора, линкера, архиватора и т. п.) для поддерживаемых языков. Svace может анализировать программы, собранные под архитектуры Intel x86/x86-64 Linux/Windows, ARM/ARM64. Поддерживаются как популярные компиляторы C/C++ для Linux и Windows, так и набор компиляторов для встраиваемых систем.

Генерация промежуточного представления

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

Анализ

Легковесный анализ на основе АСД

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

Внутрипроцедурный анализ

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

Межпроцедурный анализ на основе резюме

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

Просмотр и история предупреждений

Svace Web Interface

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