Пояснение про ограничения демонстрационной версии PVS-Studio

    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 уничтожает баг


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

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

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


      Не означает ли это, что будет лучше, если PVS-Studio будет сама группировать предупреждения по приоритету, чтобы облегчить жизнь разработчику?
        +3
        Так и сделано.
          0
          Имелось в виду, что он включил всё на максимум и именно из-за этого смотрит всё в вперемешку. А так, естественно, есть деление на уровни.
            0
            Понятно. Мне просто казалось, что неважно, максимальные настойки или нет, вперемешку предупреждения выводиться не должны.
              +1
              Они не вперемешку, каждое предупреждение имеет свой уровень. Но человек смотрит все и ему надоедает.
          +1
          У ограничений имеется две цели.

          На самом деле три, и все это понимают.
            +2
            Так просто, чтобы сверится. Назовите в слух свой вариант третьей цели?
              +2
              Продать :)
                +2
                Ни один клиент не купил лицензию только из-за указанных здесь ограничений.
                  0
                  Уверен, что если бы ограничений не было — её бы вообще никто не купил (ну, за исключением может быть тех, кто триалом не пользовался вовсе). Зачем, если всё и так работает? И главное — как объяснить начальству, что вот эту вот программу, которая и так работает, и бесплатно скачана с официального сайта, надо бы ещё и купить? Может быть на западе и покупали бы, но точно не с нашим менталитетом.
                    0
                    Да не, тут про другое, как мне показалось. Я это понимаю как «приводят ли конкретно эти ограничения к продаже». А так для «возможности» продавать достаточно в лицензии иметь пункт «Вы должны купить прежде чем использовать» и все.
                      +1
                      Но ведь пункт «Вы должны купить прежде чем использовать» взаимоисключающий с демо-режимом для оценки возможностей, разве нет? Ограничения в демо-режиме в первую очередь и нужны, чтобы у пользователя была необходимость купить полноценный продукт. А вот то, почему ограничения именно такие, а не просто «бесплатно первые 30 дней», и описано в статье.
            0
            На мой взгляд, интерфейс студии user friendly, но в дополнении к информации о оставшихся попыток, я бы рядом добавил кнопку, которая вызывает простенькую обучающие программу. На пример, в ней могут рассматриваться описанные в статье ситуации.
              0
              Есть проблема с реализацией теоретически хорошей идеи. Если это сделать в виде «совет дня» или помощника «Скрепыш», то программисты сразу будут это отключать не читая :-).
                0
                Этот совет хорошо показывать в панели результатов проверки первой строчкой над гридом.
              +3
              Обычно я включаю все предупреждения на максимум во всех подобных утилитах,
              С командной строки запускается анализатор, сохраняет все что может найти в лог.
              Потом запускается скрипт с grep, которые делит один файл на множество по типам сообщений.
              И уже потом можно смотреть важные и не важные предупреждения. Также можно исключать «библиотеки» или какие-то файлы, которые не нужно проверять.
              Все логи хранятся в git, поэтому можно видеть что добавилось и что убавилось.

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

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

                Вот для примера — Вам анализатор понравился после такого триала?
                  0
                  Когда я первый раз такое делал, лог полностью сохранялся.
                  Поэтому да.
                    0
                    Что-то не помню Вас среди клиентов…
                      +1
                      Я не являюсь клиентом.
                      Для личных открытых проектов будет слишком дорого…
                    0
                    PVS-Studio перестало видеть компиляцию при помощи MingW.
                    Версия 6.01 перехватывала, а версия 6.03 уже нет.
                    Компилятор не менялся.
                      0
                      Спасибо, проверим. Отпишите, пожалуйста, копию этого сообщения на support@viva64.com.
                        0
                        В этот режим работы не вносились изменения, способные его сломать. Компиляцию «Hello World» программы с ошибкой сейчас удалось перехватить и найти ошибку.

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

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

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

                          Спасибо за быстрый ответ, хоть я и не клиент.
                          Извиняюсь, если потревожил по пустякам.
                            0
                            Вот именно поэтому мы и хотим общения. :) Общение позволяет устранять неудобства, помочь запуститься, правильно использовать. Без общения анализатор часто выглядит хуже, чем он есть на самом деле. И ничего не поделать — сложный инструмент.
                    +2
                    Ну что за сказки для детей младшего дошкольного возраста? Все прекрасно понимают, что цель ограничений одна и только одна — подвигнуть пользователя на покупку полной версии, в которой эти ограничения отсутствуют. И побудить к общению с вами в почте вам нужно не для того, чтобы помочь использовать инструмент правильно, а опять-таки, чтобы заставить купить. Вы будете каждому потенциальному покупателю писать на е-мэйл персональные простыни текста о том, как использовать? Нет, это безумие, на такие темы пишутся общие для всех статьи и FAQ-и и кладутся в общий доступ. А будете вы каждому потенциальному покупателю спамить с применением секретного NLP. Это ж общеизвестно: идёшь, допустим, по магазину, взял с полки штучку, покрутил, посмотрел, положил, дальше пошёл. А если взял штучку, а тут же налетел консультант, помочь-подсказать, того-сего, и уже неловко как-то положить штучку обратно и дальше идти, когда вот человек столько времени на тебя потратил…
                      –1
                      Нет. Самым простым и самым на первым взгляд логичным способом было бы ограничение по времени. Так оно когда-то давно и было. Но это как раз и провоцировало 2 проблемы: включение всё на максимум и отсутствие повода написать нам и получить подсказку. Поэтому и приходится делать что-то более сложное.
                        +1
                        Получается, если я решил не париться с демо-версиями и сразу купил ваш продукт — я буду страдать?
                          0
                          Почему? Вводите ключ и наслаждаетесь. :)
                            +1
                            Потому что у меня не будет ни полезных ограничений демо-версии, ни повода вам написать :)
                          0
                          Ограничение по времени это ерунда, обходящаяся элементарным ревертом до снапшота в виртуалке (или чем-то похожим по смыслу) и переустановкой. А вот когда софтина порезаная, то она всегда порезаная, и до реверта и после. Это же очевидно.
                          0
                          Вы будете каждому потенциальному покупателю писать на е-мэйл персональные простыни текста о том, как использовать? Нет, это безумие, на такие темы пишутся общие для всех статьи и FAQ-и и кладутся в общий доступ.


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

                          А статьи и FAQ — можно подумать, их кто-то читает, если его явно не ткнуть в них.
                            0
                            Ну ок, возможно, я один такой социопат, что первым делом гуглю статьи и читаю FAQ, а вариант «написать разработчикам» рассматриваю в самую-самую последнюю очередь — как правило, либо если проблема очень специфическая, что в факах нет, либо сам продукт малопопулярен и в интернете вообще ничего о нем не найдёшь, а мне очень надо…
                              0
                              А это же вы написали статью «32 OpenMP traps for C++ developers»? Как раз читал недавно…
                                +1
                                Статья 2009 года нашла своего читателя!

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

                          Самое читаемое