У ограничений имеется две цели. Первая — как можно быстрее показать потенциальному пользователю, что статический анализатор может находить ошибки в его коде. Вторая — побудить к общению с нами в почте, чтобы помочь использовать инструмент правильно. Я уверен, что эта взаимосвязь непонятна, поэтому я и решил написать эту маленькую заметку.
Ограничения
Вначале кратко о существующих ограничениях. Во-первых, человек может изучать только предупреждения наибольшего уровня достоверности (High). Во-вторых, ему доступно только ограниченное количество переходов к ошибкам.
Давайте теперь разберём эти два ограничения и причины из-за которых потребовалось их создавать. Все истории, которые я расскажу основаны на реальных событиях. Созданные ограничения являются не придумкой маркетолога, а результатом длительного общения с потенциальными пользователями и наблюдениями за процессом знакомства людей с PVS-Studio.
Много, не значит полезно
Самый типовой неправильный паттерн: программист сразу выставляет настройки предупреждений на максимум. Это самая наша большая боль. Они включают все типы предупреждений (общие, 64-битные, оптимизации), все уровни предупреждений, некоторые даже умудряются добраться в настройках до диагностик, созданных на заказ, и включить их.
Свое поведение программисты объясняют тем, что хотят видеть все возможности анализатора. Это неправильно. Правильная цель — увидеть, что анализатор может быть полезен проекту. То есть, в первую очередь надо увидеть, что анализатор находит настоящие ошибки в коде. Включив же всё на максимум, человек тонет в предупреждениях. Просмотрев 20-30 неинтересных предупреждений, человек теряет интерес. Скорее всего, на этом знакомство с инструментом закончится. Если же мы сокращаем набор предупреждений, который он может просматривать, то велик шанс, что он заметит настоящие ошибки. Тогда программист будет совсем по-другому относиться к инструменту. Он захочет отфильтровать неинтересные предупреждения, настроить анализатор под себя, изучить способы подавления ложных срабатываний в макросах и так далее.
Есть ещё один момент с большим количеством предупреждений. Программист может отдавать себе отчет, что смотрит вперемешку как высокоприоритетные, так и низкоприоритетные предупреждения и готов просмотреть большое количество сообщений. Беда в том, что он быстро теряет внимание. Грубо говоря, просмотрев 10 неинтересных предупреждений, он с большой вероятностью пропустит и одиннадцатое предупреждение, указывающее на серьезную ошибку.
С ограничением уровня предупреждений я думаю, разобрались. Теперь поговорим о количестве переходов по ошибкам.
Мы спешим на помощь
Когда «клики» кончатся, программа предложит заполнить небольшую форму с контактными данными, которые мы используем чтобы поинтересоваться, не можем ли мы чем-то помочь. После этого будут выделены дополнительные «клики».
В чем смысл контакта с нами? Во-первых, мы можем выдать временный ключ для более полного изучения PVS-Studio. К этому моменту программист уже освоился с PVS-Studio, нашел ошибки в своём коде, и теперь для него можно открыть и другие уровни предупреждений.
Во-вторых, что очень важно, мы можем помочь человеку освоить PVS-Studio. Вы даже не представляете, как есть много способов использовать инструмент неправильно. Приведу только пару примеров.
У кого-то есть «гадкий макрос», на котором анализатор генерирует массу бессмысленных предупреждений. Человек тратит все «клики», ходя по этим предупреждениям. После чего на наш вопрос «Всё хорошо?», отвечает в духе:
Ужасно. Как таким анализатором вообще пользоваться. Я замучался проматывать сотни предупреждений с номером Vxxx.
И мы помогаем ему, рассказывая о способах подавления предупреждений в макросах, или что для начала, он может просто выключить эту диагностику.
Другой человек жалуется, что мешаются сообщения, относящиеся к сторонним библиотекам.
Мы подсказываем, что сообщения, относящиеся к библиотекам можно отключить в два клика мышкой. Действительно, это 2 клика.
В обоих случаях важно, что мы подсказали, как упростить работу. Если бы не было общения с нами, люди бы продолжали мучиться и скорее всего, решили даже не начинать обсуждение приобретения лицензии.
Я опытный
Осталось сказать, что делать людям, которые не считают себя новичками в сфере инструментов статического анализа. Всё просто. Свяжитесь с нами, и мы выдадим вам временный ключ для изучения анализатора.
Комментарии (35)
Lisio
06.05.2016 13:27+1У ограничений имеется две цели.
На самом деле три, и все это понимают.EvgeniyRyzhkov
06.05.2016 13:36+2Так просто, чтобы сверится. Назовите в слух свой вариант третьей цели?
datacompboy
06.05.2016 14:13+2Продать :)
EvgeniyRyzhkov
06.05.2016 14:18+2Ни один клиент не купил лицензию только из-за указанных здесь ограничений.
Jogger
06.05.2016 15:23Уверен, что если бы ограничений не было — её бы вообще никто не купил (ну, за исключением может быть тех, кто триалом не пользовался вовсе). Зачем, если всё и так работает? И главное — как объяснить начальству, что вот эту вот программу, которая и так работает, и бесплатно скачана с официального сайта, надо бы ещё и купить? Может быть на западе и покупали бы, но точно не с нашим менталитетом.
EvgeniyRyzhkov
06.05.2016 15:25Да не, тут про другое, как мне показалось. Я это понимаю как «приводят ли конкретно эти ограничения к продаже». А так для «возможности» продавать достаточно в лицензии иметь пункт «Вы должны купить прежде чем использовать» и все.
Jogger
06.05.2016 16:40+1Но ведь пункт «Вы должны купить прежде чем использовать» взаимоисключающий с демо-режимом для оценки возможностей, разве нет? Ограничения в демо-режиме в первую очередь и нужны, чтобы у пользователя была необходимость купить полноценный продукт. А вот то, почему ограничения именно такие, а не просто «бесплатно первые 30 дней», и описано в статье.
Lauren
06.05.2016 14:24На мой взгляд, интерфейс студии user friendly, но в дополнении к информации о оставшихся попыток, я бы рядом добавил кнопку, которая вызывает простенькую обучающие программу. На пример, в ней могут рассматриваться описанные в статье ситуации.
EvgeniyRyzhkov
06.05.2016 14:31Есть проблема с реализацией теоретически хорошей идеи. Если это сделать в виде «совет дня» или помощника «Скрепыш», то программисты сразу будут это отключать не читая :-).
datacompboy
06.05.2016 15:44Этот совет хорошо показывать в панели результатов проверки первой строчкой над гридом.
4144
06.05.2016 16:05+3Обычно я включаю все предупреждения на максимум во всех подобных утилитах,
С командной строки запускается анализатор, сохраняет все что может найти в лог.
Потом запускается скрипт с grep, которые делит один файл на множество по типам сообщений.
И уже потом можно смотреть важные и не важные предупреждения. Также можно исключать «библиотеки» или какие-то файлы, которые не нужно проверять.
Все логи хранятся в git, поэтому можно видеть что добавилось и что убавилось.
С pvs studio к сожалению приходится сложнее.
Нужно запустить в виртуальной машине с windows какую-либо графическую среду для mingw (раньше pvs studio не могло перехватить mingw, хотя его поддерживало),
запустить перехват и компиляцию,
потом сохранить лог в xml (раньше был просто текст).
запустить скрипт для перевода xml в текстовый лог.
и только после этого можно разделять лог по типам предупреждений.
В добавок в демо версии лог полностью не сохраняется, хотя последние версии не проверял.EvgeniyRyzhkov
07.05.2016 11:28+1На наш взгляд это самый плохой способ знакомства с анализатором. После него очень большой риск, что человеку инструмент не понравится, так как будет выглядеть все не удобно.
Вот для примера — Вам анализатор понравился после такого триала?4144
07.05.2016 13:37Когда я первый раз такое делал, лог полностью сохранялся.
Поэтому да.
4144
10.05.2016 23:37PVS-Studio перестало видеть компиляцию при помощи MingW.
Версия 6.01 перехватывала, а версия 6.03 уже нет.
Компилятор не менялся.EvgeniyRyzhkov
11.05.2016 09:42Спасибо, проверим. Отпишите, пожалуйста, копию этого сообщения на support@viva64.com.
SvyatoslavMC
11.05.2016 11:58В этот режим работы не вносились изменения, способные его сломать. Компиляцию «Hello World» программы с ошибкой сейчас удалось перехватить и найти ошибку.
Проверьте следующие моменты:
- У вас зовётся The GNU C/C++ Compiler, а не The GNU C/C++ Compiler For MSYS
- У утилиты мониторинга не меньше прав, чем у компилятора (вдруг сборка выполняется с правами администратора, а мониторинг нет).
- Имя запускаемого компилятора удовлетворяет маске *gcc или *g++.
4144
11.05.2016 15:07Сейчас проверил еще раз, похоже это моя ошибка.
Если компилятор запустить «от имени администратора» а PVS-Studio обычным способом, то PVS-Studio ничего не может перехватить.
Спасибо за быстрый ответ, хоть я и не клиент.
Извиняюсь, если потревожил по пустякам.Andrey2008
11.05.2016 15:16Вот именно поэтому мы и хотим общения. :) Общение позволяет устранять неудобства, помочь запуститься, правильно использовать. Без общения анализатор часто выглядит хуже, чем он есть на самом деле. И ничего не поделать — сложный инструмент.
gaki
07.05.2016 09:38+2Ну что за сказки для детей младшего дошкольного возраста? Все прекрасно понимают, что цель ограничений одна и только одна — подвигнуть пользователя на покупку полной версии, в которой эти ограничения отсутствуют. И побудить к общению с вами в почте вам нужно не для того, чтобы помочь использовать инструмент правильно, а опять-таки, чтобы заставить купить. Вы будете каждому потенциальному покупателю писать на е-мэйл персональные простыни текста о том, как использовать? Нет, это безумие, на такие темы пишутся общие для всех статьи и FAQ-и и кладутся в общий доступ. А будете вы каждому потенциальному покупателю спамить с применением секретного NLP. Это ж общеизвестно: идёшь, допустим, по магазину, взял с полки штучку, покрутил, посмотрел, положил, дальше пошёл. А если взял штучку, а тут же налетел консультант, помочь-подсказать, того-сего, и уже неловко как-то положить штучку обратно и дальше идти, когда вот человек столько времени на тебя потратил…
Andrey2008
07.05.2016 10:45-1Нет. Самым простым и самым на первым взгляд логичным способом было бы ограничение по времени. Так оно когда-то давно и было. Но это как раз и провоцировало 2 проблемы: включение всё на максимум и отсутствие повода написать нам и получить подсказку. Поэтому и приходится делать что-то более сложное.
gaki
07.05.2016 11:07+1Получается, если я решил не париться с демо-версиями и сразу купил ваш продукт — я буду страдать?
Andrey2008
07.05.2016 11:13Почему? Вводите ключ и наслаждаетесь. :)
gaki
07.05.2016 11:17+1Потому что у меня не будет ни полезных ограничений демо-версии, ни повода вам написать :)
olegchir
10.05.2016 03:31Ограничение по времени это ерунда, обходящаяся элементарным ревертом до снапшота в виртуалке (или чем-то похожим по смыслу) и переустановкой. А вот когда софтина порезаная, то она всегда порезаная, и до реверта и после. Это же очевидно.
EvgeniyRyzhkov
07.05.2016 11:31Вы будете каждому потенциальному покупателю писать на е-мэйл персональные простыни текста о том, как использовать? Нет, это безумие, на такие темы пишутся общие для всех статьи и FAQ-и и кладутся в общий доступ.
Я пишу. Возможно поэтому мои результаты чуть лучше, чем у консультанта в магазине.
А статьи и FAQ — можно подумать, их кто-то читает, если его явно не ткнуть в них.gaki
07.05.2016 12:14Ну ок, возможно, я один такой социопат, что первым делом гуглю статьи и читаю FAQ, а вариант «написать разработчикам» рассматриваю в самую-самую последнюю очередь — как правило, либо если проблема очень специфическая, что в факах нет, либо сам продукт малопопулярен и в интернете вообще ничего о нем не найдёшь, а мне очень надо…
gaki
07.05.2016 12:22А это же вы написали статью «32 OpenMP traps for C++ developers»? Как раз читал недавно…
FractalizeR
Не означает ли это, что будет лучше, если PVS-Studio будет сама группировать предупреждения по приоритету, чтобы облегчить жизнь разработчику?
EvgeniyRyzhkov
Так и сделано.
Andrey2008
Имелось в виду, что он включил всё на максимум и именно из-за этого смотрит всё в вперемешку. А так, естественно, есть деление на уровни.
FractalizeR
Понятно. Мне просто казалось, что неважно, максимальные настойки или нет, вперемешку предупреждения выводиться не должны.
EvgeniyRyzhkov
Они не вперемешку, каждое предупреждение имеет свой уровень. Но человек смотрит все и ему надоедает.