Текущая библиотека предоставляет набор утилит, направленных на работу с файлами .sarif .
SARIF - Статический анализ Результатов Результаты обмена форматом является стандартным форматом на основе JSON для вывода инструментов статического анализа, разработанный Microsoft.
Существует различный инструмент статического анализа, но, как правило, все они объединены одной концепцией - для обнаружения уязвимостей программного обеспечения.
Таким образом, на результате работы инструмента статического анализа будет набор warnings ,
которые указывают на запахи кода. Некоторые инструменты пошли дальше и предоставили возможность
Чтобы автоматически fix такие запахи кода.
Соответственно, файлы SARIF , которые могут быть одним из возможных форматов для отчетов о инструментах статического анализа, будут содержать соответствующие разделы для warnings и fixes , полученных такими инструментами, которые указываются на соответствующие уязвимости в целевых файлах.
Модуль Fix-Patches установлен для работы с разделами fix object из файлов SARIF - Форматированные.
fix object представляет предложенное решение для проблемы, указанного инструментом.Fix-Patches , в свою очередь, проанализируют такие разделы, создают копию целевых файлов, которые представлены в SARIF , и автоматически применяют исправления к этим копиям.Результат вывод будет содержать список путей к копиям предоставленных целевых файлов с применными исправлениями.
ПРИМЕЧАНИЕ. Если File SARIF будет содержать несколько исправлений для одного и того же региона в одном файле, будет применено только первое исправление.
Библиотека предоставляет простой в использовании API для применения исправлений исправлений, это просто необходимо предоставить путь к файлу SARIF , который содержит список исправлений ( fix objects ) для целевых файлов и список путей к этим файлам, в котором они представлены в SARIF (через абсолютные/относительные пути).
val processedFiles : List < Path > = SarifFixAdapter (
sarifFile = sarifFilePath,
targetFiles = listOfTargetFilesPaths,
testRoot = " /path/to/test/root/directory/ " .toPath()
).process()