Благодаря новому плагину PVS‑Studio преимущества статического анализа теперь доступны и при работе с редактором Visual Studio Code. В этой статье мы разберём использование плагина от этапа установки до работы с результатами анализа. Присоединяйтесь!

PVS‑Studio — это статический анализатор кода, предназначенный для проверки C, С++, С# и Java проектов. В декабре 2022 года командой PVS‑Studio было выпущено два плагина: для Qt Creator и для Visual Studio Code. На данный момент оба плагина поддерживают основной функционал, необходимый для работы с результатами анализа. Анализировать проекты непосредственно из интерфейса плагинов пока нельзя, но мы планируем добавить эту возможность в будущих релизах. Сейчас же анализ можно выполнить в плагинах для Rider, Visual Studio или с помощью командной строки.

Но вернемся к главной теме этой статьи. Предлагаю познакомимся с плагином PVS‑Studio для Visual Studio Code и узнать, как вы можете использовать его в своей работе.

Устанавливаем анализатор PVS-Studio и плагин для VS Code

Для начала установим анализатор PVS‑Studio, чтобы позже проанализировать проект. Установочный файл анализатора вы можете скачать с официального сайта.

Установка анализатора на Windows

В процессе установки анализатора у вас не должно возникнуть трудностей. Тем не менее вы всегда можете воспользоваться инструкцией по установке PVS‑Studio на Windows.

Примечание. На этапе установки 'Select Components' можно выбрать пункт 'Integration with Visual Studio Code'. В результате вместе с анализатором будет установлен и плагин к VS Code.

Установка анализатора на Linux и macOS

Процессы установки анализатора на операционных системах Linux и macOS детально описаны в следующих разделах документации:

Установка плагина к VS Code

Если плагин не был установлен вместе с анализатором, можно сделать это вручную. Чтобы установить плагин PVS‑Studio, откройте Visual Studio Code и перейдите на вкладку 'Extensions', затем введите в поле поиска 'PVS‑Studio' и кликните по кнопке 'Install':

Запускаем анализ

Давайте опробуем плагин и анализатор, проверив какой‑нибудь проект. В этой статье я буду демонстрировать работу анализатора на примере Open Source проекта.

Запуск анализа непосредственно из VS Code пока не поддерживается, однако эту возможность планируется добавить в будущих релизах. Сейчас же предлагаю воспользоваться командной строкой.

Для запуска анализа C#‑приложения на операционной системе Linux я использовал команду следующего вида:

pvs-studio-dotnet -t Solution.sln -o PVS-Studio_Result.json -r

В этой команде применяются следующие параметры:

  • ‑t [project/sln] — обязательный параметр, путь до файла проекта или решения;

  • ‑o [outputPath] — путь, по которому будет сгенерирован отчет с результатами анализа. Поддерживаются два формата отчета: 'plog' и 'json'. Формат отчета определяется по заданному расширению файла. В зависимости от версии анализатора и используемой ОС формат по умолчанию может отличаться. Важно отметить, что на данный момент плагин поддерживает работу только с отчетами формата json, поэтому лучше задавать этот параметр явно;

  • ‑r — включает режим подробного логирования в терминале для отслеживания хода выполнения анализа.

Примечание. Запуск анализа из командной строки может отличаться в зависимости от операционной системы и языка программирования анализируемого проекта. Вы можете обратиться к документации PVS‑Studio для получения инструкции по запуску анализа конкретно для вашего случая.

Работа с результатами анализа

Вернемся в VS Code и перейдем во вкладку 'PVS‑Studio'. Здесь кликаем по кнопке 'Open report':

В появившемся диалоговом окне выбираем файл с отчетом. Напомню, что на данный момент плагин работает только с json‑отчетами. Если вы работаете на Windows, ваш отчет мог сгенерироваться в формате 'plog'. В этом случае следует предварительно сконвертировать его в 'json' с помощью прилагаемой к анализатору утилите — 'PlogConverter'. Больше информации о работе с утилитой вы можете получить в разделе документации о просмотре и конвертации результатов анализа.

Интерфейс плагина можно условно разделить на пять областей:

  1. Фильтры по кодам предупреждений, сообщениям и названиям файла.

  2. Фильтры по уровням предупреждений.

  3. Фильтры по группам диагностик.

  4. Функции сохранения и загрузки отчета, а также настройки плагина.

  5. Список предупреждений, представленный в виде таблицы.

С частью функционала мы познакомимся далее. Если же вы захотите получить больше информации о плагине, можете обратиться к документации.

Обратите внимание на область интерфейса под номером 2:

Кнопки этой области позволяют включить/отключить предупреждения с определенным уровнем. Уровень отражает «уверенность» анализатора в том, что предупреждение указывает на ошибку.

Каждой кнопке соответствует число — количество предупреждений данного уровня.

А сейчас почему бы нам не найти какую‑нибудь ошибку в проекте, используя отчет анализатора?

Анализатор сообщает об использовании анонимной функции для отписки от события. Чтобы перейти к коду, дважды кликнем по строке предупреждения:

Действительно, здесь создается анонимная функция, которая используется для отписки от события CollectionChanged. Разработчик не учёл, что все анонимные функции являются уникальными объектами. Таким образом, данная анонимная функция никак не связана ни с одним обработчиком события, а значит и отписка от события выполнена не будет.

Планы развития плагина для VS Code

Уже сейчас плагин предоставляет основной функционал, необходимый для работы с отчетами анализатора PVS‑Studio. Скоро он станет ещё удобнее благодаря возможности запускать анализ непосредственно из плагина. Эта возможность будет реализовываться поэтапно: сначала будет поддержан запуск анализа C и C++ проектов, а затем проектов на C#.

Заключение

В этой статье мы познакомились с принципом работы анализатора кода вместе с новым плагином PVS‑Studio для Visual Studio Code.

Если вы до сих пор не попробовали анализатор, напомню, что вы можете скачать его здесь.

На этом статья завершается, надеюсь она показалась интересной :)

Чистого кода и успешных проектов! До встречи в следующих статьях!

Комментарии (8)


  1. yarkov
    02.02.2023 18:18
    +5

    Пошёл на сайт смотреть цену. Вижу форму "Запросить цену". Открываю и вижу что просят корпоративную почту. Иду почитать зачем корпоративная почта и вижу прекрасное (см. скриншот). Так если цена фиксированная, то может стоит её и опубликовать? А то это похоже на ноготочки в инсте:
    - Сколько стоит?
    - Ответила в директ ))


    1. aegoroff
      02.02.2023 23:41
      +1

      Никогда не понимал, политики цена по запросу - первое что приходит в голову - она такая, что если опубликовать, люди со стула попадают от жадности. Это раз. Потом, - если я независимый разработчик, у меня нет корпоративной почты - я не могу купить этот продукт? Почему?!

      В общем они сами себе такой политикой продажи снижают.


      1. EvgeniyRyzhkov
        03.02.2023 00:11

        Александр, спасибо за комментарий. Вопрос частый, поэтому буду рад ответить.

        Меня зовут Евгений Рыжков. Вот уже 15 лет я генеральный директор и сооснователь PVS-Studio. Более 10 лет продажами занимался я сам. Но и сейчас, когда есть команда продаж, РОП, проработаны методологии, продажи PVS-Studio под моим прямым контролем.

        Наш бизнес построен на понятии воронка продаж. Уверен, Вы сто раз его слышали. Для нас этапы воронки продаж следующие: посетители сайта -> запросы триала -> запросы цен -> покупки. Мы считаем все эти показатели. У нас есть данные за несколько лет.

        Интересный факт. Чтобы ни происходило в мире (ковид в 2020 или вот 2022), конверсии на каждом этапе примерно одинаковые. Это говорит о том, что у нас качественный трафик и хорошая методология продаж. Например, мы отслеживаем сколько клиентов продлевает лицензии. Причем как в штуках, так и в деньгах.

        Зачем? Ну вот в штуках в 2019 году лицензии продлили 67% клиентов.А в 2021 году - 79%. О чем это говорит? Что мы работаем лучше и лучше, и клиенты голосуют за это деньгами.

        Также мы строим модель прогноза по выручке на продлениях за следующие три года (так как продаем лицензии на год, два и три). То есть я знаю, что в этом году всего клиентам продлевать лицензии на XXXX рублей. Но по данным за прошлый год у нас продлевают 80%. То есть на текущих клиентах в 2023 году я заработаю 0,8 * XXXX рублей.

        Согласитесь, круто иметь бизнес с такой ясной и прогнозируемой финансовой моделью?

        А теперь вы предлагаете поломать мне эту модель к хренам, чтобы что? Порадовать кого-то с Хабра? Извините, я ответственный руководитель и на это пойти не могу.


        1. aegoroff
          03.02.2023 07:10

          не, не - я вам не предлагаю, я сказал что просто не понимаю почему не написать сразу цены, раз он для всех одинаковые. Так как например делает та же  JetBrains (вы с ними в какой-то степени играете на одном поле) - к ним можно пойти на сайт, прицениться и купить то что тебе надо (что я собственно в свое время и сделал, пока их можно было покупать в РФ), без всяких приседаний с корпоративной почтой, загадочными ценами и прочим - это привлекает а не отталкивает, как в случае с вашей с моделью. То что я высказал - лишь личное мнение и ни в коем случае не руководство к действию. Это ваша компания и вы вольны делать как вам угодно. Считаете что у вас прекрасные результаты? Отлично, я правда раз за вас, но пытаться пройти этот квест и купить, а также рекомендовать к покупке другим - я конечно же не буду из-за всех этих сложностей.

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


          1. EvgeniyRyzhkov
            03.02.2023 07:48

            JetBrains вне всякого сомнения в 100 раз успешнее нас. Это не комплимент, это математический факт, который следует из сравнения выручек двух компаний. Я написал это, чтобы не казалось, что я самый умный.

            Но написать я хотел не про это. Вы затронули еще одну мою любимую тему: «Квалификация лидов». Тот, кто вбил в сознание миллионов людей фразы вроде «Клиент всегда прав!» и т.п. был или неграмотный теоретик от бизнеса, или конкурент-вредитель :-).

            Нет ничего хуже, чем считать всех людей своими потенциальными клиентами.

            Почему? Очень просто. Ресурсы команды ограничены. Мы можем «обработать» только N запросов на этапе presale от потенциальных клиентов. Если вместо N к нам придет хотя бы 10*N запросов, то мы не сможем их отработать. И тогда те, кто скорее всего купили бы, не будут обслужены должным образом. И не купят.

            Это и называется «квалификация» (или предварительный отбор) лидов (заявок)».

            Вы конечно можете возразить: «Умничаешь тут, вместо того, чтобы цены вывесить на сайте! Может в 100 раз выросли бы как JetBrains?»

            А я отвечу, что не факт. Может наоборот продажи упали бы в 3 раза? Ну и что, что и наши пользователи, и пользователи JetBrains пишут код? У покупателей машин и у покупателей молока тоже есть руки и ноги. Это не значит, что аудитории одинаковые.


            1. aegoroff
              03.02.2023 07:51

              Спасибо за ответ - теперь ваша позиция стала более понятной. В общем хочу пожелать вам стать в 100 раз успешнее и наконец вывесить цены :) чтобы людям было проще


              1. EvgeniyRyzhkov
                03.02.2023 07:56

                Если напишите мне на почту evg@viva64.com, то возможно смогу немножко порадовать.


  1. Mingun
    02.02.2023 19:18
    +2

    Ужас, а не интерфейс. Зачем у вас половина места под кнопки? Не уподобляйтесь установщикам из 90-х, предлагавших читать лицензионное соглашение на 10 листов A4 в нерастягиваемом окошке на 3 строки.