PVS-Studio Demo
У ограничений имеется две цели. Первая — как можно быстрее показать потенциальному пользователю, что статический анализатор может находить ошибки в его коде. Вторая — побудить к общению с нами в почте, чтобы помочь использовать инструмент правильно. Я уверен, что эта взаимосвязь непонятна, поэтому я и решил написать эту маленькую заметку.

Ограничения


Вначале кратко о существующих ограничениях. Во-первых, человек может изучать только предупреждения наибольшего уровня достоверности (High). Во-вторых, ему доступно только ограниченное количество переходов к ошибкам.

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

Много, не значит полезно


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

PVS-Studio Face Palm


Свое поведение программисты объясняют тем, что хотят видеть все возможности анализатора. Это неправильно. Правильная цель — увидеть, что анализатор может быть полезен проекту. То есть, в первую очередь надо увидеть, что анализатор находит настоящие ошибки в коде. Включив же всё на максимум, человек тонет в предупреждениях. Просмотрев 20-30 неинтересных предупреждений, человек теряет интерес. Скорее всего, на этом знакомство с инструментом закончится. Если же мы сокращаем набор предупреждений, который он может просматривать, то велик шанс, что он заметит настоящие ошибки. Тогда программист будет совсем по-другому относиться к инструменту. Он захочет отфильтровать неинтересные предупреждения, настроить анализатор под себя, изучить способы подавления ложных срабатываний в макросах и так далее.

Есть ещё один момент с большим количеством предупреждений. Программист может отдавать себе отчет, что смотрит вперемешку как высокоприоритетные, так и низкоприоритетные предупреждения и готов просмотреть большое количество сообщений. Беда в том, что он быстро теряет внимание. Грубо говоря, просмотрев 10 неинтересных предупреждений, он с большой вероятностью пропустит и одиннадцатое предупреждение, указывающее на серьезную ошибку.

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

Мы спешим на помощь


PVS-Studio спешит на помощь


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

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

Во-вторых, что очень важно, мы можем помочь человеку освоить PVS-Studio. Вы даже не представляете, как есть много способов использовать инструмент неправильно. Приведу только пару примеров.

У кого-то есть «гадкий макрос», на котором анализатор генерирует массу бессмысленных предупреждений. Человек тратит все «клики», ходя по этим предупреждениям. После чего на наш вопрос «Всё хорошо?», отвечает в духе:

Ужасно. Как таким анализатором вообще пользоваться. Я замучался проматывать сотни предупреждений с номером Vxxx.

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

Другой человек жалуется, что мешаются сообщения, относящиеся к сторонним библиотекам.

Мы подсказываем, что сообщения, относящиеся к библиотекам можно отключить в два клика мышкой. Действительно, это 2 клика.

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

Я опытный


PVS-Studio уничтожает баг


Осталось сказать, что делать людям, которые не считают себя новичками в сфере инструментов статического анализа. Всё просто. Свяжитесь с нами, и мы выдадим вам временный ключ для изучения анализатора.
Поделиться с друзьями
-->

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


  1. FractalizeR
    06.05.2016 12:11

    Программист может отдавать себе отчет, что смотрит вперемешку как высокоприоритетные, так и низкоприоритетные предупреждения и готов просмотреть большое количество сообщений. Беда в том, что он быстро теряет внимание. Грубо говоря, просмотрев 10 неинтересных предупреждений, он с большой вероятностью пропустит и одиннадцатое предупреждение, указывающее на серьезную ошибку.


    Не означает ли это, что будет лучше, если PVS-Studio будет сама группировать предупреждения по приоритету, чтобы облегчить жизнь разработчику?


    1. EvgeniyRyzhkov
      06.05.2016 12:13
      +3

      Так и сделано.


    1. Andrey2008
      06.05.2016 14:23

      Имелось в виду, что он включил всё на максимум и именно из-за этого смотрит всё в вперемешку. А так, естественно, есть деление на уровни.


      1. FractalizeR
        07.05.2016 11:20

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


        1. EvgeniyRyzhkov
          07.05.2016 11:28
          +1

          Они не вперемешку, каждое предупреждение имеет свой уровень. Но человек смотрит все и ему надоедает.


  1. Lisio
    06.05.2016 13:27
    +1

    У ограничений имеется две цели.

    На самом деле три, и все это понимают.


    1. EvgeniyRyzhkov
      06.05.2016 13:36
      +2

      Так просто, чтобы сверится. Назовите в слух свой вариант третьей цели?


      1. datacompboy
        06.05.2016 14:13
        +2

        Продать :)


        1. EvgeniyRyzhkov
          06.05.2016 14:18
          +2

          Ни один клиент не купил лицензию только из-за указанных здесь ограничений.


          1. Jogger
            06.05.2016 15:23

            Уверен, что если бы ограничений не было — её бы вообще никто не купил (ну, за исключением может быть тех, кто триалом не пользовался вовсе). Зачем, если всё и так работает? И главное — как объяснить начальству, что вот эту вот программу, которая и так работает, и бесплатно скачана с официального сайта, надо бы ещё и купить? Может быть на западе и покупали бы, но точно не с нашим менталитетом.


            1. EvgeniyRyzhkov
              06.05.2016 15:25

              Да не, тут про другое, как мне показалось. Я это понимаю как «приводят ли конкретно эти ограничения к продаже». А так для «возможности» продавать достаточно в лицензии иметь пункт «Вы должны купить прежде чем использовать» и все.


              1. Jogger
                06.05.2016 16:40
                +1

                Но ведь пункт «Вы должны купить прежде чем использовать» взаимоисключающий с демо-режимом для оценки возможностей, разве нет? Ограничения в демо-режиме в первую очередь и нужны, чтобы у пользователя была необходимость купить полноценный продукт. А вот то, почему ограничения именно такие, а не просто «бесплатно первые 30 дней», и описано в статье.


  1. Lauren
    06.05.2016 14:24

    На мой взгляд, интерфейс студии user friendly, но в дополнении к информации о оставшихся попыток, я бы рядом добавил кнопку, которая вызывает простенькую обучающие программу. На пример, в ней могут рассматриваться описанные в статье ситуации.


    1. EvgeniyRyzhkov
      06.05.2016 14:31

      Есть проблема с реализацией теоретически хорошей идеи. Если это сделать в виде «совет дня» или помощника «Скрепыш», то программисты сразу будут это отключать не читая :-).


      1. datacompboy
        06.05.2016 15:44

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


  1. 4144
    06.05.2016 16:05
    +3

    Обычно я включаю все предупреждения на максимум во всех подобных утилитах,
    С командной строки запускается анализатор, сохраняет все что может найти в лог.
    Потом запускается скрипт с grep, которые делит один файл на множество по типам сообщений.
    И уже потом можно смотреть важные и не важные предупреждения. Также можно исключать «библиотеки» или какие-то файлы, которые не нужно проверять.
    Все логи хранятся в git, поэтому можно видеть что добавилось и что убавилось.

    С pvs studio к сожалению приходится сложнее.
    Нужно запустить в виртуальной машине с windows какую-либо графическую среду для mingw (раньше pvs studio не могло перехватить mingw, хотя его поддерживало),
    запустить перехват и компиляцию,
    потом сохранить лог в xml (раньше был просто текст).
    запустить скрипт для перевода xml в текстовый лог.
    и только после этого можно разделять лог по типам предупреждений.

    В добавок в демо версии лог полностью не сохраняется, хотя последние версии не проверял.


    1. EvgeniyRyzhkov
      07.05.2016 11:28
      +1

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

      Вот для примера — Вам анализатор понравился после такого триала?


      1. 4144
        07.05.2016 13:37

        Когда я первый раз такое делал, лог полностью сохранялся.
        Поэтому да.


        1. EvgeniyRyzhkov
          07.05.2016 20:48

          Что-то не помню Вас среди клиентов…


          1. 4144
            07.05.2016 21:48
            +1

            Я не являюсь клиентом.
            Для личных открытых проектов будет слишком дорого…


      1. 4144
        10.05.2016 23:37

        PVS-Studio перестало видеть компиляцию при помощи MingW.
        Версия 6.01 перехватывала, а версия 6.03 уже нет.
        Компилятор не менялся.


        1. EvgeniyRyzhkov
          11.05.2016 09:42

          Спасибо, проверим. Отпишите, пожалуйста, копию этого сообщения на support@viva64.com.


        1. SvyatoslavMC
          11.05.2016 11:58

          В этот режим работы не вносились изменения, способные его сломать. Компиляцию «Hello World» программы с ошибкой сейчас удалось перехватить и найти ошибку.

          Проверьте следующие моменты:

          1. У вас зовётся The GNU C/C++ Compiler, а не The GNU C/C++ Compiler For MSYS
          2. У утилиты мониторинга не меньше прав, чем у компилятора (вдруг сборка выполняется с правами администратора, а мониторинг нет).
          3. Имя запускаемого компилятора удовлетворяет маске *gcc или *g++.


          1. 4144
            11.05.2016 15:07

            Сейчас проверил еще раз, похоже это моя ошибка.
            Если компилятор запустить «от имени администратора» а PVS-Studio обычным способом, то PVS-Studio ничего не может перехватить.

            Спасибо за быстрый ответ, хоть я и не клиент.
            Извиняюсь, если потревожил по пустякам.


            1. Andrey2008
              11.05.2016 15:16

              Вот именно поэтому мы и хотим общения. :) Общение позволяет устранять неудобства, помочь запуститься, правильно использовать. Без общения анализатор часто выглядит хуже, чем он есть на самом деле. И ничего не поделать — сложный инструмент.


  1. gaki
    07.05.2016 09:38
    +2

    Ну что за сказки для детей младшего дошкольного возраста? Все прекрасно понимают, что цель ограничений одна и только одна — подвигнуть пользователя на покупку полной версии, в которой эти ограничения отсутствуют. И побудить к общению с вами в почте вам нужно не для того, чтобы помочь использовать инструмент правильно, а опять-таки, чтобы заставить купить. Вы будете каждому потенциальному покупателю писать на е-мэйл персональные простыни текста о том, как использовать? Нет, это безумие, на такие темы пишутся общие для всех статьи и FAQ-и и кладутся в общий доступ. А будете вы каждому потенциальному покупателю спамить с применением секретного NLP. Это ж общеизвестно: идёшь, допустим, по магазину, взял с полки штучку, покрутил, посмотрел, положил, дальше пошёл. А если взял штучку, а тут же налетел консультант, помочь-подсказать, того-сего, и уже неловко как-то положить штучку обратно и дальше идти, когда вот человек столько времени на тебя потратил…


    1. Andrey2008
      07.05.2016 10:45
      -1

      Нет. Самым простым и самым на первым взгляд логичным способом было бы ограничение по времени. Так оно когда-то давно и было. Но это как раз и провоцировало 2 проблемы: включение всё на максимум и отсутствие повода написать нам и получить подсказку. Поэтому и приходится делать что-то более сложное.


      1. gaki
        07.05.2016 11:07
        +1

        Получается, если я решил не париться с демо-версиями и сразу купил ваш продукт — я буду страдать?


        1. Andrey2008
          07.05.2016 11:13

          Почему? Вводите ключ и наслаждаетесь. :)


          1. gaki
            07.05.2016 11:17
            +1

            Потому что у меня не будет ни полезных ограничений демо-версии, ни повода вам написать :)


      1. olegchir
        10.05.2016 03:31

        Ограничение по времени это ерунда, обходящаяся элементарным ревертом до снапшота в виртуалке (или чем-то похожим по смыслу) и переустановкой. А вот когда софтина порезаная, то она всегда порезаная, и до реверта и после. Это же очевидно.


    1. EvgeniyRyzhkov
      07.05.2016 11:31

      Вы будете каждому потенциальному покупателю писать на е-мэйл персональные простыни текста о том, как использовать? Нет, это безумие, на такие темы пишутся общие для всех статьи и FAQ-и и кладутся в общий доступ.


      Я пишу. Возможно поэтому мои результаты чуть лучше, чем у консультанта в магазине.

      А статьи и FAQ — можно подумать, их кто-то читает, если его явно не ткнуть в них.


      1. gaki
        07.05.2016 12:14

        Ну ок, возможно, я один такой социопат, что первым делом гуглю статьи и читаю FAQ, а вариант «написать разработчикам» рассматриваю в самую-самую последнюю очередь — как правило, либо если проблема очень специфическая, что в факах нет, либо сам продукт малопопулярен и в интернете вообще ничего о нем не найдёшь, а мне очень надо…


      1. gaki
        07.05.2016 12:22

        А это же вы написали статью «32 OpenMP traps for C++ developers»? Как раз читал недавно…


        1. EvgeniyRyzhkov
          07.05.2016 20:49
          +1

          Статья 2009 года нашла своего читателя!