Comments 85
На сайте цифр нет, только предложение «написать нам».
Из приведённой Вами таблицы 2 видно, что для одного человека с зарплатой менее 200 000 покупка может быть не оправдана. Но почему? Стоимость лицензии может достигать 900 000 в год на человека? Но при этом она оправдана для пятерых, «выхлоп» которых 1 755 000. Но ведь пять лицензий должны стоить в разы дороже одной (даже с учётом потовых скидок). Вообще неясно как с такими цифрами работать.
Плюс есть поправка на опыт. Хороший программист не просто будет читать объяснения анализатора, но и осознавать их. А значит в дальнейшем будет повторять эти ошибки реже, или вовсе перестанет их допускать. Т.е. цифры в столбцах пойдут вниз, а стоимость лицензии потеряет только 20%.
P.S. Я прекрасно понимаю ценность Вашего продукта. Я сам ездил в командировку только для того, чтобы у заказчика обнаружить throw(), который «выпал» из проверки наличия ошибки, и кидался просто так, потому что всё хорошо. И такую ошибку, вероятно, анализатор показал бы заранее.
P.S. Статические анализаторы кода приносят пользу всему проекту, а не только тому пользователю, которые его запускают. Поэтому у нас, как и у многих, нет Single User лицензии. И, да, на одного человека это скорее всего не выгодно.
Неужели столь частое окучивание аудитории хабра со столь неприкрытым впариванием пвсстудии (может, и неплохой инструмент, речь не об этом) все ещё работает? По мне, так оно уже в обратную сторону работает, блевать хочется, как единорог на вашем лого.
А по поводу ваших подсчётов — обычная манипуляция. Нет там экономии такой большой. Это видно и по вашему анализу опен сорс проектов. Все ошибки довольно незначительные и редко проявляющиеся, собственно, поэтому даже необязательные к исправлению. Потому вы их и нашли, а не пользователи и сами разработчики. При этом для нахождения этих ошибок приходится перелопатить тонны ложных срабатываний, а это, между прочим, тоже время программистов, которое вы "забыли" учесть.
Я восхищён тем, что вы сумели сделать неплохой продукт, который даже работает, я восхищён вашим упорством по его впариванию, при том, что впаривание, очевидно, продвигается не очень, судя по тому, что это делают все те же основатели в течение многих лет, но навязчивость и неприкрытость этого впаривания раздражает.
Неужели столь частое окучивание аудитории хабра со столь неприкрытым впариванием пвсстудии (может, и неплохой инструмент, речь не об этом) все ещё работает? По мне, так оно уже в обратную сторону работает, блевать хочется, как единорог на вашем лого.Время от времени программисты и менеджеры просят нас помочь им обосновать важность приобретения лицензии PVS-Studio для их компании. Особенно я прочувствовал это после цикла осенних конференций. Подходят люди и просят какие-то материалы, которые помогут им презентовать наш инструмент перед начальством. Это статья является попыткой помочь им обосновать ценность инструмента.
А по поводу ваших подсчётов — обычная манипуляция. Нет там экономии такой большой. Это видно и по вашему анализу опен сорс проектов. Все ошибки довольно незначительные и редко проявляющиеся, собственно, поэтому даже необязательные к исправлению. Потому вы их и нашли, а не пользователи и сами разработчики. При этом для нахождения этих ошибок приходится перелопатить тонны ложных срабатываний, а это, между прочим, тоже время программистов, которое вы «забыли» учесть.Про это уже много раз было. Да, ошибки исправляются альтернативно, но гораздо большей ценой. Здесь как раз показано, какие ресурсы теряются из-за неэффективного подхода к их обнаружению и исправлению. По поводу количества ложных срабатываний: Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний.
Я восхищён тем, что вы сумели сделать неплохой продукт, который даже работает, я восхищён вашим упорством по его впариванию, при том, что впаривание, очевидно, продвигается не очень, судя по тому, что это делают все те же основатели в течение многих лет, но навязчивость и неприкрытость этого впаривания раздражает.Осенью я стоял на стенде на таких конференциях, как TeamLead, HighLoad++, CEE SECR, YappyDays, InfoSec. Так вот, половина посетителей вообще ничего не слышала про PVS-Studio. И что интересно, половина из тех, кто никогда про нас не слышал, говорят, что читают Хабр. Так что как-то не могу согласиться, прям все знают и что мы всем впариваем :).
Я понимаю, что вы не перестанете это делать, ибо считаете это одним из наименее затратных средств продвижения. Я просто сообщаю свое мнение, что я уже все ваши посты воспринимаю как однозначную неприкрытую рекламу. И столь частая реклама лично у меня вызывает отторжение. Вероятно, я далеко не один такой.
Уверен, что 90% аудитории уже о вас знает и вам бы освоить новые площадки. Так вы и клиентов новых получите и у аудитории хабра отторжение вызывать не будете.
Я просто сообщаю свое мнениеУ вас довольно специфическое мнение:
Все ошибки довольно незначительные и редко проявляющиеся, собственно, поэтому даже необязательные к исправлению. Потому вы их и нашли, а не пользователи и сами разработчики. При этом для нахождения этих ошибок приходится перелопатить тонны ложных срабатываний, а это, между прочим, тоже время программистов, которое вы «забыли» учесть.Начиная от того, что ошибки в коде могут быть необязательными к исправлению (?) и заканчивая тем, что, оказывается, ошибки лучше не искать, потому что «время программистов». Ну что вам сказать, у PVS-studio прямо противоположное мнение и лично я его разделяю.
Видимо, вы программист. Вы и так пвсстудио не купите. А статья как бы для людей, принимающих решение о покупке. А для них время программистов важно.
Я не про то, что не надо искать ошибки. Я про то, что данная реклама может быть интересна для прочтения нецелевой аудитории. А целевую она раздражает грубым передергиванием фактов.
В этой статье (да и во всех их статьях) пвсстудия преподносится как золотая пуля, можно сказать, основной компонент успешной работы программистов. Но это совсем не так.
Например, давайте рассмотрим комплекс питания программистов через капельницу. Типа, каждый день программисты тратят минимум часа полтора на еду. Если посчитать, то это более 350 часов в год, а значит, по самым минимальным подсчетам от пвсстудии, более 500к руб в год на одного программиста. Плюс жрут всякую вредную фигню, а это приводит к болезням и дополнительному простою. Поэтому достаточно купить на каждое рабочее место капельницу с полезной питательной смесью, и будете экономить огромные деньги.
Заметьте, это экономит ещё больше денег, чем пвсстудия, точно так же скрывает стоимость капельницы и затраты на её обслуживание и уже естественно воспринимается как реклама. Потому что я отбросил всю мишуру, которую навешали на этот материал пвсстудийцы.
Поскольку лично меня мишура не обманывает и я вижу суть их посыла, я и возмущаюсь. Конечно, это моё личное мнение. Важность статического анализа я прекрасно осознаю. Знаю, какие инструменты для этого есть, и пользуюсь ими. Именно поэтому однобокое рекламное рассмотрение этой области от пвсстудии мне не нравится.
А целевую она раздражает грубым передергиванием фактов.Статья написана именно для того, чтобы изучить как он воспринимается и внести корректировки в окончательный вариант текста. Какие именно числа, приведённые в статье, кажутся неверными?
Ой, ну только не надо опять искажать факты. Это у вас не первая статья, чтобы попытаться квалифицировать ее как для "изучить". Эта статья исключительно, чтобы продавать.
А по существу вопроса — цифры взяты с потолка, не учтена цена студии, не учтены затраты времени на работы со студией, не учтены альтернативные (и в том числе бесплатные) программы статического анализа. А без этого это обычная рекламная статья.
Похожая на продажу гомеопатии и средств для похудения. Цель которых — впарить.
- Не учтено время, потраченное программистом на анализ отчетов и исправление (отключение) ложных срабатываний. Далеко не любая диагностика PVS-Studio однозначно определяется как баг или ложное срабатывание, над некоторыми диагностиками приходится думать долго. См. примеры из ваших же статей.
- Не учтено ухудшение кода, вызванное исправлением ложных срабатываний анализатора. Такой эффект есть у юниоров и мидлов, иногда в погоне за исключением хинтов компилятора верный код заменяется неверным, зато — не вызывающим нареканий компилятора.
- Не учтено время, потерянное на начальную настройку PVS-Stduio. Мы за 3 дня мучений сумели запустить её только в бесплатном режиме.
- Не учтено обучение программистов. Как правило, после принудительного включения диагностики компилятора, количество найденных её багов (и не багов) уменьшается по мерее обучения программистов.
- Не учтен размер кода. При написании множества простых и слабо связанных программ польза от статического анализа меньше, чем при работе над большой программой.
В итоге, для команды без сеньоров, PVS-Studio скорее всего нейтрален или вреден. Для команды, где один сеньор + джуны — увеличивает нагрузку на сеньора.
Не учтено время, потраченное программистом на анализ отчетов и исправление (отключение) ложных срабатываний.Вы исходите из предположений, что ложных срабатываний много. Но это не так. После настройки их будет около 10%. Т.е. 9 из 10 сообщений будут указывать на ошибки или явные недочёты, которые в любом случае стоит исправить, дабы не смущать коллег и анализатор. Поэтому потери времени есть, но их нельзя назвать значимыми. Если же на ложные срабатывания тратится много времени, то значит анализатор всё ещё не настроен.
Не учтено ухудшение кода, вызванное исправлением ложных срабатываний анализатора.См. пункт выше.
Не учтено время, потерянное на начальную настройку PVS-Stduio. Мы за 3 дня мучений сумели запустить её только в бесплатном режиме.Становитесь нашими клиентами. Мы вам поможем. И при необходимости даже улучшим отдельные диагностики.
Не учтено обучение программистовРазве это плохо? :) Эффект то достигается. :)
При написании множества простых и слабо связанных программ польза от статического анализа меньше, чем при работе над большой программой.Да, это так.
Вы исходите из предположений, что ложных срабатываний много. Но это не так. После настройки их будет около 10%.Я исхожу из опыта работы с gcc c
-Wall -Wextra -Wshadow -Wpointer-arith
. Ложных срабатываний — меньше процента, но времени они отнимают довольно много, особенно у коллеги-миддла.Разве это плохо? :) Эффект то достигается. :)Это хорошо, но эффект от внедрения уменьшается. На второй год он меньше, чем на первый.
Становитесь нашими клиентами. Мы вам поможем.С учетом того, что уже год (или уже два?) не отвечаете ни мне, ни коллеге — вряд ли. Да и по расчетам — мы на на грани красной и зеленой зоны.
Некоторые ошибки править некритично. Некоторые ошибки стоят дешевле чем цена исправления.Предлагаю рассмотреть несколько конкретных примеров подобных ошибок в коде и подискутировать на эту тему. Это действительно интересно. Прошу привести именно настоящие ошибки, а не криво написанные макросы, ситуацию с которым можно поправить настройками :)
Настоящие критичные ошибки как правило отлавливаются во время написания юнит тестов и тестирования.Как правило да. Но не найденные остаются в коде и потом могут долго портить жизнь. Хотя их можно было бы сразу найти. Да и зачем отлавливать что-то при тестировании, открывать баги и т.д., когда многое можно найти сразу после написания кода при помощи статического анализа.
то статические анализаторы приносят очень мало пользы«Быть может у вас нормального анализатора не было?» ;))) Такое вполне возможно при использовании полумёртвого FindBugs. Какие анализаторы использовались?
И кстати, всё-таки хочется увидеть примеры ошибок, которые лучше не править. :)
- если найдем интересные ошибки, то это полезно вам
- если не найдем, то будете уверены, что ничего не теряете
Как идея? Только берем реальный коммерческий проект с большой кодовой базой, а не тестовые примерчики. Попробуем?
Снизу, показом для программистов, непосредственно занятых анализом кода, что этот продукт улучшает их жизнь.
Так ведь почти все статьи про PVS-Studio содержат прогоны анализатора и разбор ошибок.
Например, эта habr.com/company/pvs-studio/blog/431370
Некоторые ошибки править некритично. Некоторые ошибки стоят дешевле чем цена исправления.Я уже принес попкорн: приведите пример бага и адекватной оценки его стоимости в рублях/долларах/тенге. Стоимость = сколько заинтересованная сущность потеряет (не «может потерять», не «потеряла», а именно потеряет в будущем) денег. Пример обязательно должен быть про софтверную компанию, поизводящую только софт.
К сожалению все мои попытки выяснить, насколько PVS студия эффективна имеют один ответ — это дополнительный контроль кода, это качество вашего кода, это хорошо.Абсолютно весь бизнес такой: впарить что угодно за максимальные деньги. Никто вам не ответит, насколько вам действительно нужен айфон и насколько он эффективен в решении ваших задач. Тем не менее, он замечательно продается.
насколько PVS студия эффективна
насколько эта соль эффективна
Вот я вас спрашиваю, насколько лопата эффективна? Отвечайте.
Пример обязательно должен быть про софтверную компанию, поизводящую только софт.Почему? Чем хуже софтверно-железячные компании?
Чисто софтовый пример — ради бога. Мой софт для АСУТП на Северстали проработал 15 лет без видимых эксплуатационщикам сбоев. При этом, по моим внутренним оценкам там осталось порядка 500 багов на 135 тысяч строк кода. Но софт написан так, что любой баг максимум вызывает перезапуск (там 3 уровня контроля). То есть виден только разработчику — в логах. И искать и устранять эти 500 багов- было намного дороже, чем сделать надежный софт.
А программно-аппаратный пример — это любой GPS-приемник. С какими приемниками я не работал — во всех есть баги. И слова «у нас миллион пользователей, и у всех работает» давно не удивляют. Угу, у миллиона работает, но мы первые, кто пытается использовать ваш приемник ценой 2 тысячи рублей вместо приемника ценой за 2 миллиона. Поэтому мы баги видим, а остальной миллион — нет.
А уж править или нет — зависит от желания разработчиков сотрудничать с нами. Иногда мы в своем коде обходим чужие баги, иногда правят разработчики, чаще стараемся и то и то…
Но большинство багов — не критично, они лишь ухудшают качество решения. Причем обычно не катастрофично.
Это тот самый длинный хвост, если знаете такой термин…
Я понимаю, что вы не перестанете это делать, ибо считаете это одним из наименее затратных средств продвижения. Я просто сообщаю свое мнение, что я уже все ваши посты воспринимаю как однозначную неприкрытую рекламу. И столь частая реклама лично у меня вызывает отторжение. Вероятно, я далеко не один такой.
Я, как 1С-программист, скорее всего в обозримом будущем не стану пользователем PVS-Studio. И тем не менее, с интересом читаю статьи про анализатор. Да, я понимаю, что все статьи про анализатор имеют целью продать. Но, черт возьми, это, наверно, единственная реклама, которая носит содержательный и познавательный характер.
Лично у меня отторжения не вызывает.
Так что, не все так однозначно. Не исключено, что озвучивание порядка цен, или хотя бы алгоритма для их расчета, не помешало бы, иначе потенциальному покупателю невозможно принять обоснованное решение, т.к. риски уже видны в триале, а их стоимость остается загадкой.
Как-то по умолчанию считается, что в команде из 10 программистов каждый гарантированно тратит в год на поиск и исправление багов по 156 часов (1 560 часов суммарно).Прошу предложить на рассмотрение Ваши прикидки.
А что, по вашей статистике среднестатистический проект и правда требует такого объема баголовных часов? И более того, из этого времени 100% закрывается анализатором кода?На мой взгляд, на баги (поиск, отладку и т.д.) программист тратит в год куда больше 156 часов. 156 часов, это то, что можно попробовать сэкономить, найдя часть ошибок с помощью анализатора.
Конечно хочется сказать: да нет, это история не про нашу команду! Так вот только почему у всех багтрекеры забиты багами? :)
И на счет ценовой политики, это лишь мое мнение, но мне кажется, что отсутствие определенной цены лишь отпугивает клиентов. Индивидуальная цена для каждого — это субъективизм, и вряд ли кому-либо нравится. Но это лишь мое мнение.
А почему не имеется совершенно никакой бесплатной лицензии, ну хотя бы для каких-нибудь мелких наколенных разработок?Имеется. В том числе не только для открытых проектов. Как использовать PVS-Studio бесплатно.
Индивидуальная цена для каждого.Нет никакой цены для каждого. Прайс один для всех. Однако, есть цель а) в начале заинтересовать, иначе любая цена слишком высока б) начать общаться с человеком.
а Вы вводите неудобства для клиентовCтоп, стоп. Не для клиентов. Клиентам ничего никуда вставлять не нужно. Комментарии для бесплатных пользователей.
а профит для Вас от комментариев в коде, который никогда никто кроме меня не увидит — не совсем ясенЭто способ отделить индивидуальные проекты от больших коммерческих разработок. При этом не важно, открытые эти проекты или нет. Хорошее, удобное для многих решение.
Да, общественность требует web-сервиса.web-сервис никому не нужен. Компании очень переживают об возможной утечке исходников. Многие наоборот часто спрашивают, не web-сервис ли мы случаем. Ибо если web-сервис, это им не надо из-за опасения утечки.
10000 строк кода на проверку в годЭто противоречит концепции регулярного использования анализатора.
Совершенно очевидно, что содержать вычислительные мощности под это дело разработчикам совершенно не нужно, особенно с учётом того, что машины разработчиков редко бывают настолько дохлыми, а процесс настолько занятый, чтобы не выполнять ещё одну не самую ресурсоёмкую задачу.
А ещё можно интегрировать анализатор в CI и прогонять, скажем, раз в сутки все анализы с генерацией отчётов.
Рефакторинг с вызовом другого метода всё равно оставляет идентичное тело.
Я так и не разобрался в своё время, куда вписать комментарий для подавления предупреждения.
retval GetX(args) {
...
}
retval GetY(args) {
return GetX(args);
}
компилятор прекрасно оптимизирует это в один джамп или вообще в одно тело — а код при этом абсолютно ясно показывает их эквивалетность.
снижая вероятноть _неожиданного_ разбега тушек.
Есть код
class NotValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value;
}
}
В каком месте надо поставить //-Vnnn (понятно что не буквально), чтобы ругаться перестал анализатор?
class NotValueConverter : IValueConverter
{
public object Convert(....) //-V3013
{
....
}
public object ConvertBack(....)
{
....
}
}
Вот так это будет выглядеть для дигностики из C# анализатора. Комментарий добавляется в конце строки, на которую выдаётся предупреждение. Иногда анализатор выдаёт multi-line предупреждения, тогда надо использовать первую в списке.
Также мне пришлось немного расширить Ваш пример, чтобы получить предупреждение. Предупреждение об одинаковых функциях не выдаётся, если анализатор посчитает фукнции тестовыми или недописанными. Мы много такого повидали во время разработки, поэтому предусмотрели парочку исключений.
В конкретном случае правильно добавить коммент для анализатора «да, я знаю».
А в реальном коде подобный код не должен появиться, так что если код будет пойман анализатором а не тестами — то время вообще сэкономлено.
Гасить ложные предупреждения (которых намного больше, чем реальных ошибокНо ведь это не так :). Пример. Откуда все эти ложные срабатывания? Анализтор или не настроен или это плохой анализатор.
Прайс один для всех. Однако, есть цель а) в начале заинтересовать, иначе любая цена слишком высока б) начать общаться с человеком.
Вот чисто из любопытства спрошу: вы в магазин ходите, чтобы общаться с продавцами, выпытывая у них, сколько стоит батон хлеба?
Окей, сколько сотрудников должно быть минимально в компании?Эти прикидки как раз отображены в таблицах. Скорее всего есть смысл говорить о командах от 5 человек, у нас есть такие клиенты. Но надо понимать, что это высокооплачиваемые специалисты, а не джуниоры.
Я, как обычный программист, могу приобрести ваш продукт?Нет. Подробнее про эту тему: Мы закрываем проект CppCat.
PVS-Studio ROI: как не терять миллионы (черновой вариант статьи)