﻿# PVS\-Studio 7\.15: развитие MISRA, CWE, OWASP, Unreal Engine

Инструмент PVS\-Studio активно развивается в сторону выявления дефектов Safety и Security направленности\. А именно: улучшается поддержка стандартов MISRA C:2012 и OWASP ASVS\. Поддержан стандарт MISRA Compliance 2020\. Из необычных нововведений можно назвать режим отображения лучших \(наиболее интересных\) срабатываний анализатора, который будет полезен для оценки инструмента при знакомстве с ним\.

![0872_PVS_Studio_Release_715_ru/image1.png](https://import.viva64.com/docx/blog/0872_PVS_Studio_Release_715_ru/image1.png)

## Лучшие срабатывания анализатора

В Visual Studio плагине PVS\-Studio появилась возможность легко посмотреть лучшие срабатывания анализатора среди найденных в проверенном проекте\. Другими словами, это самые интересные срабатывания, которые демонстрируют возможности анализатора на этапе знакомства с ним\.

Мы называем этот новый режим Analyzer Best Warnings\. PVS\-Studio всегда группировал срабатывания анализатора по 3 уровням достоверности\. И эти уровни традиционно использовались для приоритизации просмотра результатов анализа — все лучшие предупреждения должны попадать на 1\-ый уровень\. В новой версии анализатора мы разработали более точный механизм оценки предупреждений, использующий помимо уровней много дополнительных критериев — как статических \(средняя "ценность" диагностики\), так и динамических, основанных на срабатываниях анализатора на конкретной кодовой базе \(например, частота обнаружения\)\.

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

В будущих релизах мы планируем расширять возможности нового режима оценки предупреждений, а также добавить его поддержку в другие IDE плагины и режимы интеграции анализа\. Подробнее про работу режима Analyzer Best Warnings можно почитать в нашем блоге и [документации](https://pvs-studio.ru/ru/docs/manual/6532/)\.

## Unreal Engine

Улучшено качество анализа проектов для Unreal Engine — в C\+\+ анализаторе PVS\-Studio были дополнительно проаннотированы несколько сотен стандартных функций из этого игрового движка\.

## MISRA Compliance

В утилитах для конвертации отчётов поддержана генерация отчёта соответствия на основе стандарта MISRA Compliance 2020\. Подробнее про этот формат и генерацию отчёта о соответствии MISRA можно почитать в нашем блоге: [Зачем нужен отчёт MISRA Compliance и как его получить в PVS\-Studio?](https://pvs-studio.ru/ru/blog/posts/cpp/0863/)

## Диагностики

Так как данный релиз посвящен развитию направлений Safety и Security, новые диагностики предназначены расширить поддержку одного из следующих стандартов: MISRA C, AUTOSAR, OWASP\.

Достигнута [поддержка стандарта MISRA C](https://pvs-studio.ru/ru/pvs-studio/sast/misra/) на уровне 70%\. До конца этого года мы планируем увеличить поддержку MISRA C не менее чем до 80%\.

Поддержка [OWASP Top 10 2017](https://pvs-studio.ru/ru/pvs-studio/sast/owasptopten/) теперь составляет 9 из 10 категорий\. Таким образом, в данном списке осталась лишь одна не поддерживаемая в PVS\-Studio категория — использование компонентов с известными уязвимостями\. Данная категория относится к классу инструментов, известных как SCA \(Software Composition Analysis\)\. В будущих релизах для полного закрытия OWASP Top 10 мы планируем реализовать SCA в PVS\-Studio C\# анализаторе\.

На сайте появилось сопоставление диагностик анализатора PVS\-Studio со списком наиболее опасных и распространённых потенциальных уязвимостей [CWE Top 25](https://pvs-studio.ru/ru/pvs-studio/sast/cwetop25/)\.

### Новые диагностики \(C, C\+\+\)

1. [V2604](https://pvs-studio.ru/ru/docs/warnings/v2604/)\. MISRA\. Features from <stdarg\.h\> should not be used\.
1. [V2605](https://pvs-studio.ru/ru/docs/warnings/v2605/)\. MISRA\. Features from <tgmath\.h\> should not be used\.
1. [V2606](https://pvs-studio.ru/ru/docs/warnings/v2606/)\. MISRA\. There should be no attempt to write to a stream that has been opened for reading\.
1. [V2607](https://pvs-studio.ru/ru/docs/warnings/v2607/)\. MISRA\. Inline functions should be declared with the static storage class\.
1. [V2608](https://pvs-studio.ru/ru/docs/warnings/v2608/)\. MISRA\. The 'static' storage class specifier should be used in all declarations of object and functions that have internal linkage\.
1. [V2609](https://pvs-studio.ru/ru/docs/warnings/v2609/)\. MISRA\. There should be no occurrence of undefined or critical unspecified behaviour\.
1. [V2610](https://pvs-studio.ru/ru/docs/warnings/v2610/)\. MISRA\. The ', " or \\ characters and the /\* or // character sequences should not occur in a header file name\.
1. [V2611](https://pvs-studio.ru/ru/docs/warnings/v2611/)\. MISRA\. Casts between a pointer to an incomplete type and any other type shouldn't be performed\.
1. [V2612](https://pvs-studio.ru/ru/docs/warnings/v2612/)\. MISRA\. Array element should not be initialized more than once\.
1. [V2613](https://pvs-studio.ru/ru/docs/warnings/v2613/)\. MISRA\. Operand that is a composite expression has more narrow essential type than the other operand\.
1. [V2614](https://pvs-studio.ru/ru/docs/warnings/v2614/)\. MISRA\. External identifiers should be distinct\.
1. [V3555](https://pvs-studio.ru/ru/docs/warnings/v3555/)\. AUTOSAR\. The 'static' storage class specifier should be used in all declarations of functions that have internal linkage\.

### Новые диагностики \(C\#\)

1. [V3173](https://pvs-studio.ru/ru/docs/warnings/v3173/)\. Possible incorrect initialization of variable\. Consider verifying the initializer\.
1. [V5612](https://pvs-studio.ru/ru/docs/warnings/v5612/)\. OWASP\. Do not use old versions of SSL/TLS protocols as it may cause security issues\.
1. [V5613](https://pvs-studio.ru/ru/docs/warnings/v5613/)\. OWASP\. Use of outdated cryptographic algorithm is not recommended\.
1. [V5614](https://pvs-studio.ru/ru/docs/warnings/v5614/)\. OWASP\. Potential XXE vulnerability\. Insecure XML parser is used to process potentially tainted data\.
1. [V5615](https://pvs-studio.ru/ru/docs/warnings/v5615/)\. OWASP\. Potential XEE vulnerability\. Insecure XML parser is used to process potentially tainted data\.

## Другие улучшения

В C\+\+ анализаторе PVS\-Studio был стандартизован формат выдачи диапазона значений переменных для больших чисел\. Изменение текста некоторых сообщений может привести к тому, что они вновь появятся в отчёте, хотя ранее были подавлены с помощью baselining механизма\. Если вы столкнулись с этим — пожалуйста, подавите эти предупреждения заново\.

В Visual Studio плагине добавлена возможность задавать shortcut'ы для операций подавления ложных срабатываний и разметки предупреждений\.

Очередная оптимизация производительности C\# анализатора PVS\-Studio позволит ускорить проверку крупных проектов за счёт значительного уменьшения времени подготовки \(разбора\) проекта перед анализом\. Подробнее почитать про это можно [в нашем блоге](https://pvs-studio.ru/ru/blog/posts/csharp/0864/)\.

## Некоторые свежие публикации в нашем блоге

1. [CWE Top 25 2021\. Что такое, с чем едят и чем полезен при статическом анализе?](https://pvs-studio.ru/ru/blog/posts/0869/)
1. [Как Visual Studio 2022 съела 100 Гб памяти и при чём здесь XML бомбы?](https://pvs-studio.ru/ru/blog/posts/csharp/0865/)
1. [Зачем нужен отчёт MISRA Compliance и как его получить в PVS\-Studio?](https://pvs-studio.ru/ru/blog/posts/cpp/0863/)
1. [Обзор нововведений в C\# 9](https://pvs-studio.ru/ru/blog/posts/csharp/0860/)\.
1. [Создание статического анализатора для C\# на основе Roslyn API](https://pvs-studio.ru/ru/blog/posts/csharp/0867/)\.
1. [Выявляем ошибки в релизе LLVM 13\.0\.0](https://pvs-studio.ru/ru/blog/posts/cpp/0871/)\.