Релиз Svace 3.4

Выходит наш основной релиз за год Svace 3.4.231130. Это баг-фикс релиз для версии 3.4.230712. Помимо множества исправлений мы добавили некоторое количество новых возможностей.

Этот релиз будет поддерживаться ещё год. Исправления будут выпускаться в виде обновлений. Новые фичи войдут уже в релиз следующего год.

Анализ Scala

Теперь Svace может анализировать код на языке Scala. Поддержка языка выполнена не в полной мере как для других языков. Основное отличие заключается в том, что мы не стали интегрировать компиляторы языка в Svace. Для языка Scala у нас не реализовано анализов на основе абстрактных синтаксических деревьев. Также из-за отсутствия модификаций компилятора Scala анализатор не может находить ошибки, чувствительные к конструкциям, сгенерированным компилятором. В остальном используется тот же самый движок анализа, что и для языков Java и Kotlin.

Подробнее о Scala написано здесь.

Обновление clang и llvm

Мы обновили компилятор clang. Теперь доступны самые свежие изменения clang, что позволит лучше анализировать код на C/C++.

Промежуточное представление llvm, используемое для языков C/C++ было обновлено с версии 12 до версии 16.

Анализ Go

Мы обновили поддерживаемую версию Go с 1.20 до 1.21.

Кроме этого мы уменьшили размер директории .svace-dir для Go, а также поправили ошибки, связанные с ОС Windows.

Анализ Python

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

Аннотации Java

Теперь Svace реагирует на аннотации языка Java @SuppressWarnings и не выдаёт предупреждения о разыменовании нулей для полей классов, помеченных этой спецификацией. Подобная аннотация может требоваться для случаев, когда байткод будет меняться после компиляции.

Саппрессинг предупреждений

Мы наконец добавили возможность подавления предупреждений по комментариям в исходном коде. Поддержали сразу множество вариантов: svacer_review, NOLINK, NOSONAR and noqa. По умолчанию данное поведение выключено. Как включить – смотрите документацию.

Удалённый анализ

Мы добавили команду svace remote kill, которая позволяет остановить запущенную задачу на удалённом сервере.

Также теперь есть возможность автоматически настроить (опции сервера DELETE_ANALYZE_DIR_ALL, DELETE_ANALYZE_DIR_SUCCESS) удаление директорий (всех, либо только для успешного анализа) с сервера после завершения анализа. Это позволит экономить место на сервере и не чистить логи анализа вручную.

Команда server admin create-defaults

Мы добавили команду svace server admin create-defaults для удобного создания конфигурации сервера Svace. Этот сервер используется для удалённого анализа.

Исправления

Исправления можно посмотреть в наших changelog-ах. Я здесь не буду дублировать эту информацию.


Алексей Бородин