VS Code — это знакомый многим редактор кода, главная особенность которого — возможность дополнить свой функционал с помощью множества полезных расширений. Одно из них теперь помогает эффективнее находить ошибки не только в C, С++, но и в C# коде. На сегодняшний день существует множество общепринятых способов, которые используются разработчиками для обеспечения качества кода. Это и руководство принципами проектирования, и внедрение различных процессов, таких как code review и unit-тестирование, в процесс разработки. Кроме того, быстро набирают популярность программные инструменты для выявления ошибок и уязвимостей в коде. Примером такого инструмента может служить статический анализатор С, C++, C# и Java кода — PVS-Studio. Этот анализатор прост в использовании и интегрируется с самыми разными IDE (а также с VS Code) через соответствующие расширения, позволяющие удобно запускать анализ и эффективно работать с его результатами. Обзор расширения PVS-Studio для Visual Studio Code я уже делал ранее. С тех пор в него было добавлено несколько новых возможностей: Запуск анализа C, С++ (CMake) и C# (MSBuild) решений из интерфейса VS Code; Подавление предупреждений c помощью suppress-файлов; Запуск анализа отдельных файлов с кодом или .NET проектов (.csproj). В этой же статье на примере анализа .NET проекта я продемонстрирую, что выявлять ошибки с помощью расширения PVS-Studio для VS Code – это просто! Перед анализом стоит проверить, установлены ли анализатор PVS-Studio для вашего языка программирования и расширение PVS-Studio для VS Code. Если это не так, можно воспользоваться инструкциями по установке из предыдущей статьи, посвященной этому расширению. Открываем папку с решением. Запустить анализ всего решения можно, кликнув по кнопке Analyze project в окне PVS-Studio. Обычно это окно находится в одной из вкладок нижней панели VS Code. Если окно PVS-Studio скрыто, вы можете отобразить его с помощью команды Show window в палитре команд (Ctrl + Alt + P). А как быть, если нужно проанализировать только определенные файлы с кодом или проекты? В этом случае можно воспользоваться одним из новых способов запуска анализа, например, через контекстное меню обозревателя. С остальными способами вы можете ознакомиться в документации. При первом анализе .NET решения вы увидите следующее сообщение: При клике по кнопке Edit перед вами откроется .jsonc файл, в котором можно указать необязательные параметры анализа, аналогичные некоторым аргументам консольной версии анализатора. Ознакомившись с этим файлом, следует запустить анализ еще раз. Теперь вам может быть предложено выбрать в палитре команд решение (.sln), которое включает анализируемые файлы или проекты (в случае, если в открытой директории более одного решения). После этого анализ будет запущен, а окно PVS-Studio примет следующий вид: К концу анализа у нас сформируется полный список предупреждений. Так как я анализировал всего несколько файлов из решения, их получилось немного. Для удобной обработки результатов анализа в плагине есть несколько фильтров и функций, ознакомиться с которыми вы можете в документации. Среди полученных предупреждений есть два, которые заслуживают особого внимания. Давайте посмотрим код, на который они указывают. Для этого дважды кликнем по одному из выбранных предупреждений. В результате этого нужный код отобразится в редакторе. Предупреждение: V3142. Unreachable code detected. It is possible that an error is present. SharedDoAfterSystem.cs: 52. Данное предупреждение указывает на 52 строку и говорит о недостижимости последующего кода. Долго думать не приходится, ведь следующее предупреждение явно указывает на причину этой проблемы. Предупреждение: V3022. Expression is always true. Probably the '&&' operator should be used here. SharedDoAfterSystem.cs: 49. Обратите внимание на условное выражение на строке 49. Согласно предупреждению, данное выражение всегда истинно. В этом нетрудно убедиться, ведь здесь одно и то же поле args.NewMobState проверяется на неравенство с двумя значениями MobState.Dead и MobState.Critical через оператор ИЛИ. В результате вторая проверка всегда истинна, если первая ложна и наоборот. Эта ошибка приводит к тому, что метод OnStateChanged всегда завершается возвратом на строке 50, а весь последующий код никогда не выполняется. Просмотрев предупреждения и исправив ошибки, стоит подавить ложные или несущественные предупреждения, чтобы не отвлекаться на них при последующих анализах. Для этого нужно выделить их в таблице (с помощью комбинации клавиш Ctrl + A можно выделить сразу все), открыть контекстное меню и выбрать опцию Mark as a False Alarm или Add selected messages to suppression file (данную функцию также представляет кнопка в виде молнии в верхнем правом углу окна PVS-Studio). Первая функция отличается от второй тем, что она подавляет предупреждение путем добавления комментария вида //-V[Код предупреждения] в первую строку кода, на который указывает предупреждение. Вторая функция, в свою очередь, сохраняет информацию о подавленных предупреждениях в специальном файле. Стоит отметить, что для подавления ненужных предупреждений предпочтительно использовать функцию Mark as a False Alarm. Функция добавления предупреждений в suppression-файл, в свою очередь, является удобным способом отложить технический долг на потом и сосредоточиться на качестве нового кода. В этом случае стандартный сценарий использования функции, следующий: Выполняется общий анализ решения; Полученные предупреждения подавляются; Подавленные предупреждения периодически просматриваются разработчиком небольшими порциями. Чтобы вернуть подавленные предупреждения, нужно отредактировать или удалить файл с расширением .suppress.json, который можно найти в папке .PVS-Studio в директории решения. Подробнее эта тема рассматривается в статье "Как внедрить статический анализатор кода в legacy проект и не демотивировать команду". Надеюсь, мне удалось продемонстрировать вам, уважаемые читатели, что расширение PVS-Studio – это удобный и полезный в разработке инструмент. В заключении хочу отметить, что оно активно развивается, и уже в ближайших релизах у Java-разработчиков тоже появится возможность использовать его для проверки своих проектов, но об этом будет уже другая статья. Напомню, что вы можете установить расширение вместе с анализатором кода PVS-Studio c официального сайта. Чистого кода и успешных проектов! До встречи в следующих статьях! Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Andrey Moskalev. Using the PVS-Studio extension for VS Code to effectively handle errors in C# code.  Программист C#