A biblioteca atual fornece o conjunto de utilitários, direcionados a trabalhar com arquivos .sarif .
Resultados da análise estática SARIF O formato de intercâmbio , é um formato padrão baseado em JSON para a saída de ferramentas de análise estática, elaboradas pela Microsoft.
Existem diferentes ferramentas de análise estática, mas geralmente todos estão unidos por um conceito - para detectar vulnerabilidades de software.
Assim, na saída do trabalho da ferramenta de análise estática, haverá o conjunto de warnings ,
que são apontados para o código cheira. Algumas ferramentas foram mais longe e proporcionaram uma oportunidade
Para fix automaticamente esses cheiros de código.
Consequentemente, os arquivos SARIF , que poderiam ser os formatos possíveis para relatórios de ferramentas de análise estática, conterão seções correspondentes para warnings e fixes , obtidos por essas ferramentas, que são apontadas para as vulnerabilidades correspondentes nos arquivos de destino.
O módulo Fix-Patches está configurado para funcionar com as seções fix object a partir de arquivos formatados SARIF .
fix object representa uma correção proposta para o problema, indicado pela ferramenta.Fix-Patches , por sua vez, analisarão essas seções, criarão cópia dos arquivos de destino, apresentados no SARIF e aplicarão automaticamente correções a essas cópias.A saída do resultado conterá a lista de caminhos para as cópias dos arquivos de destino fornecidos com correções aplicadas.
Nota: Se o arquivo SARIF conter várias correções para a mesma região em um arquivo, apenas a primeira correção será aplicada.
A biblioteca fornece uma API fácil de usar para correção de patches, é necessário apenas fornecer o caminho para o arquivo SARIF , que contém a lista de correções ( fix objects ) para arquivos de destino e a lista de caminhos para esses arquivos, da maneira, na qual eles são apresentados no SARIF (via caminho absoluto/relativo).
val processedFiles : List < Path > = SarifFixAdapter (
sarifFile = sarifFilePath,
targetFiles = listOfTargetFilesPaths,
testRoot = " /path/to/test/root/directory/ " .toPath()
).process()