Pull to refresh

Comments 85

Из полученных цифр надо ещё вычесть стоимость лицензии. Какова она?
На сайте цифр нет, только предложение «написать нам».
Это очень обдуманное и взвешенное решение не говорить сразу о цене. Если услышать просто число, каким бы оно не было, первая реакция человека — это недопустимо много (это больше моей месячной зарплаты!). Поэтому, мы хотим прийти к режиму, что в начале человек оценивает пользу от анализатора кода для команды, а только затем узнаёт цену на него. Тогда восприятие цены будет правильным.
Это не «просто число», это тот минимальный показатель, после которого траты на Ваш продукт будут оправданы.

Из приведённой Вами таблицы 2 видно, что для одного человека с зарплатой менее 200 000 покупка может быть не оправдана. Но почему? Стоимость лицензии может достигать 900 000 в год на человека? Но при этом она оправдана для пятерых, «выхлоп» которых 1 755 000. Но ведь пять лицензий должны стоить в разы дороже одной (даже с учётом потовых скидок). Вообще неясно как с такими цифрами работать.

Плюс есть поправка на опыт. Хороший программист не просто будет читать объяснения анализатора, но и осознавать их. А значит в дальнейшем будет повторять эти ошибки реже, или вовсе перестанет их допускать. Т.е. цифры в столбцах пойдут вниз, а стоимость лицензии потеряет только 20%.

P.S. Я прекрасно понимаю ценность Вашего продукта. Я сам ездил в командировку только для того, чтобы у заказчика обнаружить throw(), который «выпал» из проверки наличия ошибки, и кидался просто так, потому что всё хорошо. И такую ошибку, вероятно, анализатор показал бы заранее.
Вы правы. Но чтобы этот показатель правильно осознать, хорошо начать не с цены, а с объяснения ценности продукта. Это очень, очень важно. Любая цена вне контекста воспринимается как завышенная. Даже когда мы продавали CppCat за $250 было масса возмущающихся. Пример реального отзыва: «Не знаю в каком мире вы живете, но мне кажется что многие компании склонны переоценивать важность своего софта. На 9000 рублей можно кормить двух человек месяц.» (тогда 1$ был равен около 35 рублей). У нас нет цели спрятать цены, как думают некоторые. У нас есть цель, чтобы она была воспринята правильно после предварительной настройки восприятия :).

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к руб в год на одного программиста. Плюс жрут всякую вредную фигню, а это приводит к болезням и дополнительному простою. Поэтому достаточно купить на каждое рабочее место капельницу с полезной питательной смесью, и будете экономить огромные деньги.


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


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

А целевую она раздражает грубым передергиванием фактов.
Статья написана именно для того, чтобы изучить как он воспринимается и внести корректировки в окончательный вариант текста. Какие именно числа, приведённые в статье, кажутся неверными?

Ой, ну только не надо опять искажать факты. Это у вас не первая статья, чтобы попытаться квалифицировать ее как для "изучить". Эта статья исключительно, чтобы продавать.


А по существу вопроса — цифры взяты с потолка, не учтена цена студии, не учтены затраты времени на работы со студией, не учтены альтернативные (и в том числе бесплатные) программы статического анализа. А без этого это обычная рекламная статья.


Похожая на продажу гомеопатии и средств для похудения. Цель которых — впарить.

Не верны те числа, которых в статье нет: :-)

  1. Не учтено время, потраченное программистом на анализ отчетов и исправление (отключение) ложных срабатываний. Далеко не любая диагностика PVS-Studio однозначно определяется как баг или ложное срабатывание, над некоторыми диагностиками приходится думать долго. См. примеры из ваших же статей.
  2. Не учтено ухудшение кода, вызванное исправлением ложных срабатываний анализатора. Такой эффект есть у юниоров и мидлов, иногда в погоне за исключением хинтов компилятора верный код заменяется неверным, зато — не вызывающим нареканий компилятора.
  3. Не учтено время, потерянное на начальную настройку PVS-Stduio. Мы за 3 дня мучений сумели запустить её только в бесплатном режиме.
  4. Не учтено обучение программистов. Как правило, после принудительного включения диагностики компилятора, количество найденных её багов (и не багов) уменьшается по мерее обучения программистов.
  5. Не учтен размер кода. При написании множества простых и слабо связанных программ польза от статического анализа меньше, чем при работе над большой программой.


В итоге, для команды без сеньоров, PVS-Studio скорее всего нейтрален или вреден. Для команды, где один сеньор + джуны — увеличивает нагрузку на сеньора.
Не учтено время, потраченное программистом на анализ отчетов и исправление (отключение) ложных срабатываний.
Вы исходите из предположений, что ложных срабатываний много. Но это не так. После настройки их будет около 10%. Т.е. 9 из 10 сообщений будут указывать на ошибки или явные недочёты, которые в любом случае стоит исправить, дабы не смущать коллег и анализатор. Поэтому потери времени есть, но их нельзя назвать значимыми. Если же на ложные срабатывания тратится много времени, то значит анализатор всё ещё не настроен.
Не учтено ухудшение кода, вызванное исправлением ложных срабатываний анализатора.
См. пункт выше.
Не учтено время, потерянное на начальную настройку PVS-Stduio. Мы за 3 дня мучений сумели запустить её только в бесплатном режиме.
Становитесь нашими клиентами. Мы вам поможем. И при необходимости даже улучшим отдельные диагностики.
Не учтено обучение программистов
Разве это плохо? :) Эффект то достигается. :)
При написании множества простых и слабо связанных программ польза от статического анализа меньше, чем при работе над большой программой.
Да, это так.
Вы исходите из предположений, что ложных срабатываний много. Но это не так. После настройки их будет около 10%.
Я исхожу из опыта работы с gcc c -Wall -Wextra -Wshadow -Wpointer-arith. Ложных срабатываний — меньше процента, но времени они отнимают довольно много, особенно у коллеги-миддла.

Разве это плохо? :) Эффект то достигается. :)
Это хорошо, но эффект от внедрения уменьшается. На второй год он меньше, чем на первый.

Становитесь нашими клиентами. Мы вам поможем.
С учетом того, что уже год (или уже два?) не отвечаете ни мне, ни коллеге — вряд ли. Да и по расчетам — мы на на грани красной и зеленой зоны.
Это хорошо, но эффект от внедрения уменьшается. На второй год он меньше, чем на первый.
Так и цена на второй год меньше :).
Это официальное заявление? И на сколько меньше? Но мы все равно на грани красной и зеленой зоны — не Москва и 5 программеров.
UFO just landed and posted this here
Некоторые ошибки править некритично. Некоторые ошибки стоят дешевле чем цена исправления.
Предлагаю рассмотреть несколько конкретных примеров подобных ошибок в коде и подискутировать на эту тему. Это действительно интересно. Прошу привести именно настоящие ошибки, а не криво написанные макросы, ситуацию с которым можно поправить настройками :)
UFO just landed and posted this here
Настоящие критичные ошибки как правило отлавливаются во время написания юнит тестов и тестирования.
Как правило да. Но не найденные остаются в коде и потом могут долго портить жизнь. Хотя их можно было бы сразу найти. Да и зачем отлавливать что-то при тестировании, открывать баги и т.д., когда многое можно найти сразу после написания кода при помощи статического анализа.

то статические анализаторы приносят очень мало пользы
«Быть может у вас нормального анализатора не было?» ;))) Такое вполне возможно при использовании полумёртвого FindBugs. Какие анализаторы использовались?

И кстати, всё-таки хочется увидеть примеры ошибок, которые лучше не править. :)
А давайте погоняем наш Java анализатор на вашем коде? Одни плюсы:
  • если найдем интересные ошибки, то это полезно вам
  • если не найдем, то будете уверены, что ничего не теряете

Как идея? Только берем реальный коммерческий проект с большой кодовой базой, а не тестовые примерчики. Попробуем?
UFO just landed and posted this here
Вот здесь выберите «Хочу анализатор для Java» и укажите еще свой ник на Хабре, пожалуйста.
Обработка високосного года в коде ядра(!!!) OS/360. Намного лучше было бы перенести это на оператора и уменьшить размер ядра. Пример из «The myfical man-month»
Снизу, показом для программистов, непосредственно занятых анализом кода, что этот продукт улучшает их жизнь.

Так ведь почти все статьи про PVS-Studio содержат прогоны анализатора и разбор ошибок.
Например, эта habr.com/company/pvs-studio/blog/431370
Некоторые ошибки править некритично. Некоторые ошибки стоят дешевле чем цена исправления.
Я уже принес попкорн: приведите пример бага и адекватной оценки его стоимости в рублях/долларах/тенге. Стоимость = сколько заинтересованная сущность потеряет (не «может потерять», не «потеряла», а именно потеряет в будущем) денег. Пример обязательно должен быть про софтверную компанию, поизводящую только софт.
К сожалению все мои попытки выяснить, насколько PVS студия эффективна имеют один ответ — это дополнительный контроль кода, это качество вашего кода, это хорошо.
Абсолютно весь бизнес такой: впарить что угодно за максимальные деньги. Никто вам не ответит, насколько вам действительно нужен айфон и насколько он эффективен в решении ваших задач. Тем не менее, он замечательно продается.
насколько PVS студия эффективна

насколько эта соль эффективна

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

Чисто софтовый пример — ради бога. Мой софт для АСУТП на Северстали проработал 15 лет без видимых эксплуатационщикам сбоев. При этом, по моим внутренним оценкам там осталось порядка 500 багов на 135 тысяч строк кода. Но софт написан так, что любой баг максимум вызывает перезапуск (там 3 уровня контроля). То есть виден только разработчику — в логах. И искать и устранять эти 500 багов- было намного дороже, чем сделать надежный софт.

А программно-аппаратный пример — это любой GPS-приемник. С какими приемниками я не работал — во всех есть баги. И слова «у нас миллион пользователей, и у всех работает» давно не удивляют. Угу, у миллиона работает, но мы первые, кто пытается использовать ваш приемник ценой 2 тысячи рублей вместо приемника ценой за 2 миллиона. Поэтому мы баги видим, а остальной миллион — нет.

А уж править или нет — зависит от желания разработчиков сотрудничать с нами. Иногда мы в своем коде обходим чужие баги, иногда правят разработчики, чаще стараемся и то и то…

Но большинство багов — не критично, они лишь ухудшают качество решения. Причем обычно не катастрофично.

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

Я, как 1С-программист, скорее всего в обозримом будущем не стану пользователем PVS-Studio. И тем не менее, с интересом читаю статьи про анализатор. Да, я понимаю, что все статьи про анализатор имеют целью продать. Но, черт возьми, это, наверно, единственная реклама, которая носит содержательный и познавательный характер.
Лично у меня отторжения не вызывает.
Если говорить об обосновании вмененных издержек то нужно учитывать и издержки из-за ошибок самого продукта. Например, я получаю сотни диагностик V003 на одном из своих проектов. Пока я пользуюсь триальной версией — для меня издержек нет, но как только я куплю продукт, эта диагностика станет для меня прямым убытком. Скорее всего, вам удастся эту ошибку исправить в рамках саппорта, но простои это не отменит, а с ними и убытки.
Так что, не все так однозначно. Не исключено, что озвучивание порядка цен, или хотя бы алгоритма для их расчета, не помешало бы, иначе потенциальному покупателю невозможно принять обоснованное решение, т.к. риски уже видны в триале, а их стоимость остается загадкой.
Отдельно взятую диагностику можно выключить тремя кликами мыши. Если она на самом деле false positive.
Это внутренний код ошибки, о котором нужно сообщить нам. В 99% случаев такое исправляется в течение дня. Правки уже готовы, с gasizdat общаемся.
Раз уж я завел речь про V003, то отпишусь здесь. Ошибка была исправлена и на следующий день стала доступна в beta версии. После чего я смог проверить свой проект нормально. Спасибо SvyatoslavMC.
О, знакомая ссылка :) Еще можете рассмотреть кейс быстрой оценки продукта, который команду нанимают сопровождать и дописывать «небольшие функции» :)
Справедливости ради, для честного расчета надо учесть не только время программиста, которое будет экономиться на самостоятельном поиске ошибок, но и вычесть из него время, которое будет им тратится на анализ незначительных предупреждений, просмотр отчетов и т.п. не всегда продуктивную деятельность сопутствующую использованию анализатора.
После настройки 9 из 10 предупреждений будет указывать на ошибки или код, который явно будет полезно поправить, чтобы он не путал не только анализатор, но и коллег. PVS-Studio генерирует мало незначительных предупреждений. В нём нет диагностик в духе: поменять NULL на nullptr, имя переменной слишком длинное и т.п.
UFO just landed and posted this here
Как-то по умолчанию считается, что в команде из 10 программистов каждый гарантированно тратит в год на поиск и исправление багов по 156 часов (1 560 часов суммарно).
Прошу предложить на рассмотрение Ваши прикидки.

А что, по вашей статистике среднестатистический проект и правда требует такого объема баголовных часов? И более того, из этого времени 100% закрывается анализатором кода?
На мой взгляд, на баги (поиск, отладку и т.д.) программист тратит в год куда больше 156 часов. 156 часов, это то, что можно попробовать сэкономить, найдя часть ошибок с помощью анализатора.

Конечно хочется сказать: да нет, это история не про нашу команду! Так вот только почему у всех багтрекеры забиты багами? :)
UFO just landed and posted this here
А почему не имеется совершенно никакой бесплатной лицензии, ну хотя бы для каких-нибудь мелких наколенных разработок? Да, это могло бы повлечь потери (хотя серьезно, большие клиенты платят за весь софт, за который просят деньги), но я думаю, что это способствовало популяризации PVS-Studio сильно больше, чем регулярная реклама на Хабре, и в долгосрочной перспективе окупилось бы сполна. На всякий случай, наколенные разработки != open-source, так что, насколько я понимаю, таким пользователям Вы бы не одолжили бесплатные ключи.
И на счет ценовой политики, это лишь мое мнение, но мне кажется, что отсутствие определенной цены лишь отпугивает клиентов. Индивидуальная цена для каждого — это субъективизм, и вряд ли кому-либо нравится. Но это лишь мое мнение.
А почему не имеется совершенно никакой бесплатной лицензии, ну хотя бы для каких-нибудь мелких наколенных разработок?
Имеется. В том числе не только для открытых проектов. Как использовать PVS-Studio бесплатно.

Индивидуальная цена для каждого.
Нет никакой цены для каждого. Прайс один для всех. Однако, есть цель а) в начале заинтересовать, иначе любая цена слишком высока б) начать общаться с человеком.
Моя ситуация — закрытый проект, Mercurial, BitBucket. Так что потрачено))
Почитал. Такой подход очевидно может работать, но мне кажется что принцип ограничения не верен. Обычно для бесплатных/более дешевых лицензий отрезают некоторые возможности программы, а Вы вводите неудобства для клиентов (ИМХО, принудительные комментарии — как раз неудобство). Без обид, но напоминает ситуацию, когда хостинги принудительно вставляют рекламные баннеры в страницы клиентов, но там они хотя бы доход получают, а профит для Вас от комментариев в коде, который никогда никто кроме меня не увидит — не совсем ясен.
а Вы вводите неудобства для клиентов
Cтоп, стоп. Не для клиентов. Клиентам ничего никуда вставлять не нужно. Комментарии для бесплатных пользователей.

а профит для Вас от комментариев в коде, который никогда никто кроме меня не увидит — не совсем ясен
Это способ отделить индивидуальные проекты от больших коммерческих разработок. При этом не важно, открытые эти проекты или нет. Хорошее, удобное для многих решение.
Мне кажется, намного лучше было бы поставлять бесплатную версию с вырезанными ошибками не первой существенности. Этого хватило бы для наколенных проектов, а большие клиенты с возгласами «Как это не все ошибки найдем?!» побежали бы покупать продукт. Ну или ввести для платных версий некоторые дополнительные примочки. Ну и поддержку ясное дело только для платных.
Да, общественность требует web-сервиса. Регистрируешься, имеешь 10000 строк кода на проверку в год, например. Думали про такое?
Да, общественность требует web-сервиса.
web-сервис никому не нужен. Компании очень переживают об возможной утечке исходников. Многие наоборот часто спрашивают, не web-сервис ли мы случаем. Ибо если web-сервис, это им не надо из-за опасения утечки.

10000 строк кода на проверку в год
Это противоречит концепции регулярного использования анализатора.
Ну виртуалка, которая вычищается с определенной частотой. Первая доза должна быть бесплатной.
Ну, насчёт никому — это слишком категоричное утверждение.
Совершенно очевидно, что содержать вычислительные мощности под это дело разработчикам совершенно не нужно, особенно с учётом того, что машины разработчиков редко бывают настолько дохлыми, а процесс настолько занятый, чтобы не выполнять ещё одну не самую ресурсоёмкую задачу.
А ещё можно интегрировать анализатор в CI и прогонять, скажем, раз в сутки все анализы с генерацией отчётов.
Так, по-честному, надо учитывать расход времени на работу с инструментом и разгребание ложных сообщений. Теоретически, можно и в минус уйти.
Скрытый текст

Интеграция и настройка анализатора первый раз — немного иной процесс, за счёт этого нельзя усреднять время регулярного использования анализатора. О том, с чего можно начать первый раз за минимальное время, я описал в статье: "Как перешагнуть через legacy и начать использовать статический анализ кода".
Ложные сообщения могут появляться каждый день, в свеженаписанном коде.
Описанные способы позволяют с этим оперативно работать. Например, в Вашем случае можно нажать правый клик на сообщение и кликнуть на подавление предупреждения. Технически это даже быстрее, чем прочитать мой пост сейчас)
Могут. Но вот тут хочется конкретики. Что значит ложные? Если анализатор настроен, размечены хитрые макросы, то ложным срабатываниям практически нет места. Почти всегда предупреждение говорит об ошибке или о кривом коде, который сложно понять анализатору, а заодно и коллегам. И такой код в любом случае лучше переписать. Готов рассматривать и обсуждать обратные примеры.
На скриншоте — пример кода.
Иногда false positives я видел в C#-коде какого-нибудь конвертера значений (WPF), когда нужно сделать отрицание: в этом случае методы Convert и ConvertBack будут иметь идентичные тела, и анализатор начинает на такое кричать.
Рефакторинг с вызовом другого метода всё равно оставляет идентичное тело.
И мы видели, например, одинаковые GetX() и GetY(), потом оказалось, что объект типа куб и так должно быть. Разметили как FA и продолжили править код, вполне штатная ситуация. Но бывают и откровенно ложные предупреждения, которые мы правим уже в ядре анализатора, если есть такой фидбек. К сожалению, мало кто пытается разобраться и просто оценивает цифры в отчётах. Хотя порядки у этих двух групп очень разные.
Раз пошло такое дело, то расскажите пожалуйста, как наиболее корректно в таких ситуациях поступать?
Я так и не разобрался в своё время, куда вписать комментарий для подавления предупреждения.
Кликнуть правой кнопкой мыши в предупреждение и выбрать «False Alarm», комментарий добавится автоматически.
Скрытый текст
Имхо, если GetX и GetY абсолютно эквивалентны, я бы сделал
  retval GetX(args) {
     ...
  }
  retval GetY(args) {
     return GetX(args);
  }


компилятор прекрасно оптимизирует это в один джамп или вообще в одно тело — а код при этом абсолютно ясно показывает их эквивалетность.

снижая вероятноть _неожиданного_ разбега тушек.
Мы так и сделали, но контрибьюторам не понравилось, разметили как FA :D
Есть комментарии для кода в формате //-Vnnn, которые отключают конкретные срабатывания. Эту разметку можно произвести как вручную, так и из интерфейса плагина для Visual Studio. Иногда компании не любят размечать код, поэтому это можно сделать через внешний файл. У этого способа есть отличия, в заисимости от платформы. Познакомиться с ним Вы можете в моей статье "Как перешагнуть через legacy и начать использовать статический анализ кода". Если останутся вопросы, спрашивайте.
Пришли выходные, дома нету PVS.
Есть код
    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 предупреждения, тогда надо использовать первую в списке.

Также мне пришлось немного расширить Ваш пример, чтобы получить предупреждение. Предупреждение об одинаковых функциях не выдаётся, если анализатор посчитает фукнции тестовыми или недописанными. Мы много такого повидали во время разработки, поэтому предусмотрели парочку исключений.
Понимаю такой код в тестах — на то они и тесты, чтоб создавать идиотские ситуации.
В конкретном случае правильно добавить коммент для анализатора «да, я знаю».

А в реальном коде подобный код не должен появиться, так что если код будет пойман анализатором а не тестами — то время вообще сэкономлено.
Я не против анализаторов. Я лишь за объективность статьи. Написали, какие будут преимущества, но не написали, что с внедрением программисты должны будут регулярно отсматривать все сообщения анализатора и гасить ложные предупреждения (какие намного больше, чем реальных ошибок). Это снижает продуктивность, т.к. выбивает из потока и тратит "мыслетопливо".
Гасить ложные предупреждения (которых намного больше, чем реальных ошибок
Но ведь это не так :). Пример. Откуда все эти ложные срабатывания? Анализтор или не настроен или это плохой анализатор.
Прайс один для всех. Однако, есть цель а) в начале заинтересовать, иначе любая цена слишком высока б) начать общаться с человеком.

Вот чисто из любопытства спрошу: вы в магазин ходите, чтобы общаться с продавцами, выпытывая у них, сколько стоит батон хлеба?
Магазин с батонами, это B2C. Статические анализаторы, это B2B. Это не хорошо и не плохо. Просто это так.
Серьезно? И где проходит разница между B2B и B2C в вашем случае?
Прошу утончить вопрос. Вы удивились, что нет цены :). Я ответил, что это стандартная практика для множества подобных продуктов.
Я и уточняю. Что означает «B2B» в вашем случае? Бизнес для бизнеса? Окей, сколько сотрудников должно быть минимально в компании? Какой оборот? Я, как обычный программист, могу приобрести ваш продукт?
Окей, сколько сотрудников должно быть минимально в компании?
Эти прикидки как раз отображены в таблицах. Скорее всего есть смысл говорить о командах от 5 человек, у нас есть такие клиенты. Но надо понимать, что это высокооплачиваемые специалисты, а не джуниоры.

Я, как обычный программист, могу приобрести ваш продукт?
Нет. Подробнее про эту тему: Мы закрываем проект CppCat.
Вы как-то сосредоточились на поиске ошибок в коде в стиле C с классами. Попробуйте проверить что-нибудь с бустовскими библиотеками, где делается свой EDSL типа Proto, Spirit, uBLAS. Ну или хотя бы в своих правилах проверяйте операторы на перегруженность и не давайте предупреждений на них, если не можете их правильно обрабатывать. А то отчёт полон предупреждений не просто ложных, а не имеющих отношения к коду вообще.
Sign up to leave a comment.