Введение
Клиентами анализатора PVS-Studio являются отделы разработчиков различных компаний. Мы бы хотели, чтобы нашими клиентами были и индивидуальные разработчики. К сожалению, у нас ничего не получилось с экспериментальным продуктом CppCat. Мы не знаем, как построить успешный бизнес в сфере статического анализа кода, продавая персональные лицензии. Поэтому сейчас продукт PVS-Studio позиционируется исключительно как B2B решение.
Думаю, что наш провал с CppCat был предопределён. Мир диктует свои законы, и, например, тот же Coverity ориентирован на корпоративные лицензии. Однако, это не значит, что нужно исключать другие варианты взаимодействия с миром.
Мы долго думали, как помочь маленьким командам разработчиков или как распространять академические лицензии. На первый взгляд кажется, что самый простой путь — дарить лицензии тем, кто развивает бесплатное программное обеспечение. К сожалению, это решение не кажется нам правильным.
Стоит пояснить нашу позицию. Впрочем, если вам не терпится, вы можете сразу перейти к разделу «Бесплатная лицензия PVS-Studio». Если же читателю интересно узнать подробности, то предлагаю продолжить чтение.
Размышления
Представим индивидуального разработчика, разрабатывающего и продающего, например, какую-то игру. Его код закрыт и используется в коммерческих целях. Тем не менее, мы рады помочь ему познакомиться с методологией статического анализа кода и готовы подарить ему лицензию. Это рекламный шаг, который со временем может окупиться. Сейчас он один, но кто знает, что произойдёт через 5 лет.
С другой стороны, возьмем команду из 50 человек, работающих в крупной компании и занимающихся созданием открытого бесплатного проекта. Сидят 50 человек в офисе, едят печенье, получают зарплату и при этом позиционируют себя как идеалисты в плане развития свободного программного обеспечения. Да, продукт бесплатен, но компания извлекает из его существования значительную прибыль косвенными методами. Просто по ряду причин компании удобно, чтобы проект был открытым и бесплатным. Нам кажется вполне честным, что такая организация должна приобрести платную лицензию для использования анализатора.
Как видите, критерий бесплатности программы или открытости кода нам не подходит для принятия решения. Хочется разделить проекты, разрабатываемые в компании, и проекты маленьких коллективов энтузиастов. Можно сделать это исключительно лицензионным соглашением, но в таком случае сложно провести границу между разными типами проектов. Вдобавок, это мало поможет нам с точки зрения рекламы. Давайте будем честны: компании предоставляют бесплатные лицензии ради рекламы. В этом мы не хуже и не лучше других.
Решение было найдено интуитивно. Что отличает корпоративные проекты от проектов энтузиастов? В корпоративных проектах меньше свободы и больше бюрократии. Вряд ли руководство компании Microsoft будет радо, если разработчик в коде Microsoft Office напишет, что это его персональный проект. Этим надо воспользоваться и предлагать вносить в код правки, в которых упоминается PVS-Studio. Заодно код открытых проектов будет рекламировать PVS-Studio.
Бесплатная лицензия PVS-Studio
Вам нужно выполнить два шага, чтобы начать бесплатно использовать статический анализатор PVS-Studio.
Шаг 1.
Если вы используете PVS-Studio как плагин к Visual Studio, то введите следующий лицензионный ключ:
Name: PVS-Studio Free
Key: FREE-FREE-FREE-FREE
Если Вы используете PVS-Studio for Linux, то сразу переходите ко второму шагу, файл с лицензией вам не понадобится.
Шаг 2.
Внесите правки во все компилируемые файлы вашего проекта. Имеются в виду файлы с расширениями c, cc, cpp, cs и так далее. Заголовочные h-файлы менять не требуется.
Вы должны вписать в начало каждого файла две строки с комментарием. Мы предоставляем на выбор несколько вариантов. Это своего рода плата за возможность бесплатного использования анализатора PVS-Studio.
Комментарии для студентов (академическая лицензия):
// This is a personal academic project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
Комментарии для открытых бесплатных проектов:
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
Комментарии для индивидуальных разработчиков:
// This is an independent project of an individual developer. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
Конечно, предложенные варианты подходят далеко не всем. В этом и состоит их смысл. Если ни один из предложенных вариантов вам не подходит, то предлагаем обсудить с нами вопрос покупки лицензии.
Примечание. Помимо описанного здесь способа бесплатного использования анализатора, вы можете по-прежнему скачивать с сайта демонстрационную версию анализатора для ознакомления. Если вы хотите на время снять ограничения демонстрационной версии, то просим написать нам.
Автоматизация
Если в вашем проекте много файлов, то вы можете воспользоваться вспомогательной утилитой. Вы должны будете указать ей какой комментарий вставлять и каталог с кодом. Затем утилита рекурсивно обойдет все файлы в папке и вложенных папках, добавляя в файлы с исходным кодом соответствующие комментарии. Скачать утилиту (вместе с исходным кодом) можно здесь: how-to-use-pvs-studio-free.
Заключение
Некоторые разработчики могут сказать, что не хотят видеть в начале файла две строчки с комментарием, не относящимся к сути проекта. Это их право, и они могут просто не использовать анализатор. Или они могут приобрести коммерческую лицензию и использовать её без ограничений. Мы рассматриваем наличие этих комментариев, как благодарность за предоставленную лицензию и, заодно, как дополнительную рекламу нашего продукта. Я думаю, это хороший, честный обмен.
Заодно решается вопрос отделения корпоративных проектов от частных инициатив. Если проект делают энтузиасты, они в праве делать с кодом всё, что им хочется, в том числе и добавлять такие комментарии. Если нет, значит за проектом стоит некая организация, от которой мы хотим получить вознаграждение в виде приобретения лицензии.
Надеемся наше предложение и позиция понятны. Если у вас остаются вопросы, то просим написать нам.
Чтобы убедить ваших коллег начать использовать анализатор кода PVS-Studio, предлагаем познакомить их со следующими разделами нашего сайта:
- Ошибки, обнаруженные в Open Source проектах с помощью PVS-Studio
- Статьи, в которых мы рассказываем о найденных ошибках
Спасибо за внимание. Давайте вместе сделаем программы надежнее и безопаснее.
Update
Возникло очень много рассуждений на тему того, допустимо ли добавлять и удалять комментарии в исходный код, чтобы бесплатно использовать анализатор. Мы считаем такой приём неприемлемым, так как он по факту является способом обхода ограничения, наложенного нами на бесплатную лицензию. Поэтому мы решили добавить следующий раздел в лицензионное соглашение:
Вы имеете право использовать PVS-Studio бесплатно, добавив в исходный код своего проекта комментарии специального вида. Какие именно комментарии следует добавлять и как автоматизировать этот процесс описано в статье «Как использовать PVS-Studio бесплатно».
Отметим, что данный режим не предназначен для оценки возможностей анализатора. Чтобы познакомиться с анализатором, вы должны использовать демонстрационную версию или запросить у нас временный лицензионный ключ.
Вам следует вставлять комментарии, когда вы уже решили, что будете использовать анализатор на регулярной основе. Вы можете удалить в последствии эти комментарии, но можете сделать это только один раз.
Не допускается многократное добавление комментариев в исходный код с последующим их удалением. Также не допускается многократное добавление комментариев с последующим откатом содержимого исходных файлов с помощью системы контроля версий. Такие действия направлены на обход условия, что исходный код должен содержать комментарии, и являются нарушением данного соглашения об использовании анализатора.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Andrey Karpov. How to use PVS-Studio for free.
Комментарии (248)
Tiendil
30.11.2016 09:25+13Отличная новость и интересная реализация, надеюсь она принесёт вам профит.
mezastel
30.11.2016 09:29+3Попытки редактировать поля Registration и Serial в настройках PVS Studio намертво убивают Visual Studio :( (Upd: оказывается не намертво, но где-то полминуты Студия висела.)
EvgeniyRyzhkov
30.11.2016 09:36+1Профайлер плагинов в VS2017 покажет кто где не прав! :-)
mezastel
30.11.2016 10:02+1Боюсь что к тому времени выйдет Rider, и Студия будет постепенно уходить в забвение.
EvgeniyRyzhkov
30.11.2016 10:03+1Придется сделать нам плагинчик для Rider.
kxl
30.11.2016 14:12Боюсь, что Rider для enterprise — это далекое будущее… А значит студия еще поживет…
redQueen_66
30.11.2016 09:41+10Уже два раза пытался внедрить ваш продукт на производстве, но есть проблема. Ищешь ты удобного случая, подходишь к начальству говоришь: «Тут есть такая классная штука .....». А тебе в ответ: «Прайс покажи», ну ты мнешься немного, говоришь ну вот полгода назад мне в письме отвечали столько-то. На тебя смотрят сквозь густую бровь: «Ты что на китайском рынке, где ценник на товар не указывают». И ты снова идешь пишешь письмо, и когда этот удобный случай настанет снова…
EvgeniyRyzhkov
30.11.2016 09:56-16Казалось бы, возьми да напиши на support@viva64.com и не надо ждать удобного случая.
3aicheg
30.11.2016 10:13+53Казалось бы, возьми да повесь прайс прямо на сайте, и не надо никакие письма писать…
khim
30.11.2016 13:08+2Сколько можно пережевывать одно и то же. Корпоративные продукты и их внедрение имеют свою специфику и «прайс по запросу» — одна из них.
Это, собственно, очень хороший первичный тест: если ваше начальство не знает о том, что «прайс по запросу» — это типичный способ продажи корпоративного софта и его практикуют, в частности, такие «мелкие китайские лавочки» как IBM или SAP, а также и конкуренты обсуждаемого здесь продукта, то, в общем, вам стоит сначала об этом с начальством поговорить, а не учить весь мир — как ему следует жить?evocatus
30.11.2016 15:31+6То, что так делает IBM (а ещё тьма тьмущая производителей и поставщиков железа), не значит, что это хорошо. Я не понимаю зачем так делать? Чтобы каждому клиенту разные ценники выставлять? Чтобы от налогов уклоняться?
dartraiden
30.11.2016 17:07+8Я не понимаю зачем так делать? Чтобы каждому клиенту разные ценники выставлять?
Именно. Я читал, что такое практикуется в Китае в ресторанчиках, куда захаживает, как местное население, так и туристы. Фиксированной цены в меню нет. Цена зависит от прикидки «на глазок» платежеспособности клиента. Более «продвинутые» китайцы делают два меню:
Некоторые рестораны (особенно часто мы это наблюдали в городе Санья, остров Хайнань) имеют меню на русском или английском языках. Такое меню ориентировано на иностранных гостей, но цены в нем завышены. Причем иногда в два раза. Заметив такое «кидалово», мой супруг, прищурившись, смотрит на официанта и просит «другое» меню.
Gray_Wolf
30.11.2016 17:11+9Чтобы каждому клиенту разные ценники выставлять?
Если один клиент готов описывать свою проблему в письме на русском языке и ожидать ответ в течении суток, то разумеется цена поддержки для него будет отличатся от цены того кто хочет получить ответ немедленно, по телефону и на чистом мандаринском.
Не существует 2-х одинаковых крупных компаний (а на них и рассчитан данный инструмент) и процесс разработки у них поставлен по разному, при этом они хотят добавить продукт стат. анализа не изменяя данные процессы. В итоге ценник за внедрение у разных заказчиков будет разный.
3aicheg
01.12.2016 03:58+7Да знаем, хлебали этого говна. Начинаешь изучать, какие продукты на нужную тему вообще есть на рынке. Находишь три варианта, цена от компании X и от компании Y отличается в разы, а у компании Z на сайте цены вообще нет, один только маркетинговый буллшит и вот это вот «возьмите да напишите». При этом ни о какой кастомизации и аццкой интеграции вопрос не стоит. Вообще не стоит, не может стоять, в силу специфики продукта. Вот нахуа?? Зачастую «возьмите да напишите» означает совершенно антигуманные цены, но и это не всегда. Пишу, высылают прайс, явно стандартный какой-то. Всё то же самое, как если бы просто цену на сайте указали, только ещё дополнительно надо прыгнуть через горящее кольцо и подождать ответа от нескольких часов до нескольких дней. По-приколу люблю таким писать с личного мусорного гмайл-аккаунта, всё равно отвечают, высылают тот же самый прайс :)
vlivyur
01.12.2016 09:16+1Ладно если так, а то иногда для запроса цены надо анкету заполнить в которой разве что результатов твоих анализов нет.
nikolaynnov
01.12.2016 13:58Главное, чтобы как Интел не сделали, чтобы анкету надо было заполнять только чтобы скачать триалку новой версии.
Или как постоянные посетители бара «Голубая устрица» компания Оракл — чтобы скачать что-то надо сперва зарегистрироваться на сайте, при попытке регистрации должно сперва письмо придти для окончания регистрации, а письмо-то и не приходит…3aicheg
01.12.2016 14:20+7NVidia тоже не отстаёт — для каждой ихней библиотечки надо подавать заявление на очередную «девелоперскую программу», в процессе чего заполнить анкету, а кто ты, да что ты, да как ты собираешься использовать, после чего они тебя рассмотрят на пленуме ЦК и зааппрувят, а может быть и нет. При этом аппрув, хоть и занимает порой несколько дней, похоже, автоматический — я как-то раз написал в ответ на вопрос «зачем хотите это использовать?» что для пост-обработки детской порнографии, деньги от которой планирую направить на наркоторговлю, работорговлю и поддержку международного терроризма — таки всё равно зааппрувили.
Keroro
30.11.2016 10:18+3Странно, на самом деле. Сплошь и рядом такое (к сожалению), и не только в России. Недавно 2 недели MaximIntegrated мурижил, чтоб выставили счёт на одну отладочную платку, ну никак не хотели продавать.
зы: хочу PVC studio для эмбеда (БЕЗ Visual Studio)Andrey2008
30.11.2016 10:35-4Это нормальная стандартная практика.
P.S. PVS-Studio без VS уже давно есть :)Ogi
30.11.2016 11:54+10Когда ты видишь, что SpaceX запросто указывает цены на свои ракеты-носители, понимаешь, насколько смехотворна эта «нормальная стандартная практика».
SvyatoslavMC
30.11.2016 12:06+6Если мы сейчас начнём по очереди приводить примеры товаров с ценниками и без, то ветка уйдёт в бесконечность, учитывая, что ни география, ни предметная область вопроса не ограничена.
webkumo
30.11.2016 13:52+9Так в чём проблема продумать и построить схему ценообразования такой, что её не придётся прятать? Думаете JetBrains добился бы распространения своей IDE, если бы прятал ценник?
poxu
30.11.2016 14:22Стоит дополнительно заметить, что ещё у JetBrains есть бесплатная версия с открытым исходным кодом. Первая доза — бесплатно. А ещё — студенческие лицензии. Подсадить их смолоду!
Rivus
01.12.2016 21:09Студенческие лицензии которые, кстати, можно использовать на производстве пока ты студент. Был сильно удивлён когда на мой вопрос в поддержку «А можно ли?» мне ответили прямым текстом «Да» без каких-либо условий.
Вот уж действительно, подсадили на иглу смолоду.
navion
30.11.2016 20:39+1И тоже дают с неё скидку при покупке через sales@jetbrains.com или реселлеров.
crea7or
30.11.2016 17:07+1Только это ничего не значит. NASA, например, платит в два раза больше им. Недавно вон пуск за $120млн. купили.
640509-040147
30.11.2016 19:02+3Потому что NASA, если сильно упростить, покупает примерно так:
— Хотим вот эту позицию (тычет пальцем в прайс), плюс вот это, это и это. И чтобы ещё всё застраховано было по максимальному тарифу. Ах да, и ещё хотим контролировать каждый ваш чих в момент предоставления услуги.
— Не вопрос. Тогда цена будет вот такая.
— По рукам.knstqq
30.11.2016 19:29+1NASA не страхует пуски как государственная компания. Она вкладывает дополнительные деньги в дополнительные проверки.
gaelpa
04.12.2016 17:25+1Вот вы ведете себя как очень прогрессивная компания, готовая искать новые каналы сбыта и рекламы. Чего только стоит этот топик.
Так может попробуете «сломать систему» еще разок и сформировать подход при котором потенциальный клиент может заранее оценить затраты на внедрение?Andrey2008
04.12.2016 17:29Я ничего не понял. Прошу сформулировтаь предложение как-то иначе.
gaelpa
04.12.2016 20:52Стандартная практика — не публиковать прайсы и не раздавать бесплатных лицензий за комментарии в коде.
От второго вы смогли отойти, попробуйте отойти и от первого.EvgeniyRyzhkov
04.12.2016 21:28В день когда на viva64.com появится прайс, миллионы россиян вздохнут спокойно… А собственно почему? Вот лично Вам какое дело до наличия цен на сайте?
Если у Вас есть интерес к PVS-Studio, то напишите с корпоративной почты и узнаете цены, секрета в них нет. А если интереса нет, то какая разница, указаны они на сайте или нет.
Armleo
30.11.2016 09:52+2Прочитал статью на сайте обрадовался! Попытаюсь с ней разобраться. Спасибо за замечательный инструмент.
3aicheg
30.11.2016 10:08+1Я что-то не понял, вот, допустим, я очень корпоративный разработчик — кроме мук моей воспалённой совести мне что-то помешает держать ваши комментарии только в моей рабочей копии и автоматически удалять перед каждым коммитом?
pehat
30.11.2016 10:28+5В очень корпорации иногда приходит очень внезапно проверка. И очень внезапно обнаруживает у вас нелицензионный софт на компе. В конце концов, для очень корпорации это не такие уж и деньги.
3aicheg
30.11.2016 10:41+1Возможно. Но зачем тогда требовать какой-то дополнительный комментарий в начале каждого файла?
khim
30.11.2016 13:12+3Очевидно чтобы они работали как реклама? Да, какой-то «Злобный Буратино» может настроить в своём личном проекте всё так, как вы сказали — ну так он и без того платить не будет.
А для корпорации сам факт того, что подобный «обработанный файл» может случайно попасть в репозиторий и потом всплыть где-нибудь в суде — хороший повод так не играться.
Andrey2008
30.11.2016 10:37+19Ничто не помешает. А раз Ваше рабочее время стоит так дешево, чтобы заниматься на работе фигнёй, то значит компания где Вы работаете не является нашим потенциальным клиентом. :)
3aicheg
30.11.2016 10:51+3Вот я и думаю: по-замыслу, вроде как, вы пытаетесь создать мне достаточно неудобств, чтобы побудить не заниматься на работе фигнёй и купить уже лицензию. А по-факту, скрипт, который добавляет-удаляет всё, что нужно, я сваяю левой ногой минут за пять, а потом повешу pre-commit hook-ом (или как там оно называется), и мне даже хоткей никакой нажимать не придётся. Уж всяко меньше я с таким подходом потрачу времени на «фигню», чем пытаясь пробить покупку вашего софта по корпоративным каналам (это даже без учёта времени на написание вам письма и ожидание ответа :)
Andrey2008
30.11.2016 11:03+13Делайте. Я же поставлю свечку, чтобы однажды скрипт сглючил и комментарии попали в систему контроля версий. За что кого-то накажут. :)
А если серьезно, то мы отлично понимаем, что систему можно обойти. Более того, её легко было обойти и раньше. Вся идея в том, что тот, кто готов заниматься подобным не является нашим клиентом. Есть компании, которые умеют ценить время и понимают, что приобретают не только программу, но и сопровождение, что крайне важно в больших и сложных проектах. На них мы и ориентируемся.sborisov
30.11.2016 12:48Делайте. Я же поставлю свечку, чтобы однажды скрипт сглючил и комментарии попали в систему контроля версий. За что кого-то накажут. :)
Какой вы злой и мстительный… :)
Varim
30.11.2016 11:08+33aicheg, для приличия хоть, добавить бы, сослагательное наклонение
3aicheg
30.11.2016 11:35*для приличия делает вид, что понял комментарий*
mwambanatanga
01.12.2016 10:35Имеется в виду замена явного намерения
всё, что нужно, я сваяю левой ногой минут за пять
на что-то гипотетическое, типа
всё, что нужно, я сваял бы левой ногой минут за пять
для смягчения эффекта.
sborisov
30.11.2016 12:50А по-факту, скрипт, который добавляет-удаляет всё, что нужно, я сваяю левой ногой минут за пять, а потом повешу pre-commit hook-ом (или как там оно называется), и мне даже хоткей никакой нажимать не придётся.
Не забудьте на гитхаб выложить и опубликовать ссылку! :)
Steed
30.11.2016 11:06+2Знаете, написать приложеньку для такого трюка стоит по времени гораздо дешевле, чем стоимость годовой лицензии на человека (в составе команды из 10 человек). Впрочем, в моей, например, компании, даже и в git это можно было бы залить без проблем. Но совесть. Поэтому сидим без лицензии (один год попользовались, профит меньше ожидаемого, продлевать не стали).
По-моему, вашу — действительно очень здравую и хорошую — задумку с бесплатным использованием лучше продвигать и обсуждать в терминах совести, а не игры в кошки-мышки.maniacscientist
30.11.2016 21:02>Знаете, написать приложеньку для такого трюка стоит по времени гораздо дешевле, чем стоимость годовой лицензии на человека
Вывод — без поддержки вы не обойдетесь. Ну, или по крайней мере дорого выйдет самим колупаться. Логические бомбы — они такиеSteed
01.12.2016 10:52Казалось бы, если продукт содержит логические бомбы и с ним нельзя работать без постоянной поддержки, то его качество вызывает большие сомнения и покупать его себе дороже.
При этом мой небольшой опыт работы с PVS Studio говорит, что это вполне нормальный подукт, которым можно пользоваться без посторонней помощи. Отсюда вопрос — что именно входит в ту поддержку, без которой не обойтись, какие операции, какая помощь? Может, я пропустил какие-то важные ее возможности, с которыми от студии был бы гораздо больший профит?3aicheg
01.12.2016 14:26Вверху кликните по ссылке на «блог компании» и отмотайте в прошлое где-то на пол-годика, у них там есть пост, как их триальные ограничения, на самом деле, благо для юзера, ибо стимулируют писать им в техподдержку, а без неё никак. На мой взгляд, не особо убедительно, но, может, вас сильнее убедит.
Steed
01.12.2016 15:11+2Спасибо, прочел. Не лишено смысла, но пара ссылок на документацию — это явно не та поддержка. которая требуется годами. В целом, аргументация "почему у нас подписочная модель оплаты" у PVS очень слабая (поддержка, добавление новых правил, ...) и искусственная, призванная заменить настоящую мотивацию "нам надо больше денег". Поэтому дальше обсуждать ее, наверное, бесполезно.
TheDaemon
30.11.2016 16:08Очень правильная философия. Искренне желаю вашему проекту расти и процветать.
asm0dey
30.11.2016 21:16+1Да ну ладно вам. Я от мира С очень далёк, но я напишу такой скрипт, ну, скажем, за два часа. Это сколько-то тысяч рублей. На этом я сэкономлю компании все деньги на покупку вашего продукта. Я это даже чисто из любви к компании могу сделать, в свободное время, просто потому что для меня это интересный челлендж. И цена моего времени вообще ни при чём тут.
3aicheg
01.12.2016 06:36Для мелких компаний — возможно, а в особом мире корпоративного маразма дело не в деньгах, и эффективные менеджеры вряд ли одобрят подобную экономию, а ещё меньше того её одобрит юридический отдел. Зачастую вообще боятся бесплатного ПО (да, именно бесплатного, безо всяких ограничений) из соображений «а вот как бы чего не вышло», типа у них на душе неспокойно, пока за него денег кому-то не занесли (чтобы недалеко ходить за примерами, вспомним хоть российский маразм несколько лет назад, когда приходит проверка лицензионности ПО и требует предъявить платёжки за Линукс). Так что с этой стороны как раз идея нормальная… ну или, как минимум, прикольная.
С другой же стороны, эффективные менеджеры слыхом не слыхивали ни про какое PVS-Studio, а ещё меньше того про него слышал юридический отдел. Надо переговорить с начальником, замначальника, начальником начальника, представителем юридического отдела, написать заявление от руки в пяти экземплярах, подписать, пере-подписать, размножить, подшить, отксерить, похерить, вот это вот всё, уйдут годы на эту деятельность, которой нормальный разработчик вряд ли желает заниматься. Даже в лучшем случае, когда просто говоришь своему менеджеру, чего ты хочешь, это ждать, ждать, ждать, пока он ответит (если ещё не забудет). Вот с этой стороны да — несложное техническое решение, и сразу играйся с цацкой.asm0dey
01.12.2016 07:27Я работаю в мире большого корпоративного софта, я всякое видел :) И я знаю что когда я тимлид — у меня есть возможность в своём отделе сделать так как мне хочется мимо всякого начальства на худой конец ))
3aicheg
01.12.2016 10:12ggo
01.12.2016 21:10Зачастую вообще боятся бесплатного ПО (да, именно бесплатного, безо всяких ограничений) из соображений «а вот как бы чего не вышло», типа у них на душе неспокойно, пока за него денег кому-то не занесли
Все проще. У больших контор там (там), как правило, процессы зрелые, деньги посчитаны, и есть такая штука — операционные риски. И один из рисков — ПО, которое развернуто без наличия поддержки. Это риск. Вдруг в один прекрасный день обнаружится баг, уязвимость, и прочие радости мира ПО. И остановится какой-то важный процесс, компания будет терять реальные деньги. В результате, появляется требование — любое ПО должно иметь поддержку. Очевидно, у бесплатного, поддержки скорее всего не будет. И второе требование, поставщик поддержки — не компания-однодневка.
Кстати, в связи с этим и процветают конторы типа Red Hat и т.д.3aicheg
02.12.2016 03:17Возможно, для какого-то ПО это и так, но какой важный процесс остановит баг в статическом анализаторе? И зачем тогда так извращаются герои статьи, если все, кто могут заплатить, и так заплатят?
ggo
02.12.2016 11:39Вы рассуждаете, как типичный ИТ-шник, что нормально.
К счастью, или к сожалению, за операционные риски отвечает чувак, как правило, далекий от ИТ. Этот умный чувак пишет правила. Задача всех прочих, в том числе ИТ-шников, эти правила соблюдать. Написали: все ПО должно быть с поддержкой, это значит все (все) ПО должны быть с поддержкой.
Авторы PVS пробуют еще один канал продажи. Больше каналов хороших и полезных!
khim
02.12.2016 20:28И зачем тогда так извращаются герои статьи, если все, кто могут заплатить, и так заплатят?
Затем что при работе в больших компаниях «здравый смысл» часто можно оставить за дверью.
Есть один отдел — он считает риски. И с его точки зрения продукт (тем более бесплатный) от фирмы-однодневки — страшный риск.
Есть другой отдел — он отвечает за закупки. И старается закупать, разумеется, подешевше (а как иначе?). Может и бесплатную версию за'approve'ить, если фирма уже первым отделом одобрена.
А у PVS'ников задача — пройти их все и получить денег, однако…
rusbaron
30.11.2016 10:38+1Попробуемс))
Для небольших групп можно сделать как у Unreal Engine, типо в проектах с прибылью до скольки то там, юзай бесплатно, как превысил — отчисляй пенни.Andrey2008
30.11.2016 10:39+1Это сложно и непонятно как отслеживать. Плюс это не решает вопроса с большой компанией, продукт которой бесплатен, но по факту косвенно приносит прибыль.
alex_zzzz
01.12.2016 06:14+1Unity требует покупки Pro лицензий, если годовой доход организации превышает $200k. Не знаю, как они проверяют и проверяют ли вообще, но смысл в том, что им не важно, чем занимается контора.
Контора может
- делать продукты на Unity и продавать;
- раздавать их даром, зарабатывая на рекламе или поддержке;
- использовать Unity для каких-то внутренних целей (обучение сотрудников, хз);
- жить пожертвования пользователей или получать деньги из гос. бюджета.
Вообще не важно, откуда берутся деньги, но если откуда-то всё-таки берутся, изволь купить лицензии.
Whiteha
30.11.2016 10:39+6Мне кажется если кто и ведет взвешенную и разумную политику по продвижению своего продукта так это вы ребята, приятно видеть столь логичные шаги в сторону сообщества, очень надеюсь что через некоторое время год-два это действительно приведет к ожидаемому профиту.
ktod
30.11.2016 10:40+4Отличная идея.
Меня, как независимого разработчика под лин, это устраивает почти на 100%.
А с заказчиками по поводу «лишних строк в начале файла» договориться не сложно: внести допусловие в стандартный договори и/или озвучить цену того, чтоб этих строк не было. :)
Единственная просьба, разрешите, чтоб эти сроки были не первые в файле, просто в пределах «шапки», в пределах ~20 строк, например. Все же, информация о разработчике и владельце прав на код важнее, имхо.Andrey2008
30.11.2016 10:40+3Если информация о разработчике и владельце прав на код важнее, то предлагаем рассмотреть вариант приобретения платной лицензии. А так, извините, нет.
ktod
30.11.2016 11:30Воля Ваша.
Тогда давайте проясним один момент. Допустимо ли, с Вашей точки зрения, удаление «шапки» после окончания разработки?EvgeniyRyzhkov
30.11.2016 11:31+3Я вот кстати не знаю, что такое «окончание разработки». А вы?
ktod
30.11.2016 11:35Это случай, когда продукт на 100% соответствует требованиям технического задания.
Еще одним примером является момент запуска продукта в серию.EvgeniyRyzhkov
30.11.2016 11:37+1Ну а потом его все, сразу на кладбище?
Вот у PVS-Studio окончание разработки — это когда продукт на кладбище окажется, как мне кажется. А у вас как?3aicheg
30.11.2016 11:58+3Вот, допустим, человек разрабатывал-разрабатывал код, честно ставил в начале каждого файла ваш комментарий. Заказчик видит, говорит: «Убери.» Должен ли он сказать в ответ твёрдое и решительное «Нетъ!», или же допустимо убрать комментарий, но перестать пользоваться бесплатной версией PVS-Studio для этого проекта? А когда интенсивная фаза разработки, в целом, закончена, и код
выкинут на кладбищепередан заказчику, который вообще не слышал ни о каком PVS-Studio — этот заказчик имеет право убрать комментарий? А если заказчик что-то ещё сам дописал и хочет от изначального разработчика неких доработок — должен ли тот добавить комментарий обратно?SvyatoslavMC
30.11.2016 12:10+4Ответ прост: если возникают сложности с бесплатной лицензией, значит лицензия не подходит для данного проекта.
LoadRunner
30.11.2016 12:49+1Стоит ли это понимать, как:
«Пользуетесь PVS-Studio — вставляйте комментарии. Перестали пользоваться — можно удалить.»?
3aicheg
30.11.2016 16:22+4Вообще не ответ, а вольные фантазии в духе гоголевской Коробочки:
— Право, я боюсь на первых-то порах, чтобы как-нибудь не понести убытку. Может быть, ты, отец мой, меня обманываешь, а они того… они больше как-нибудь стоят.
Понятна вполне ваша боязнь понести убытку, но ответить-то можно на поставленный конкретный ответ, а не изворачиваться, как аскариды в прямой кишке?Jigglypuff
30.11.2016 17:23+4А можно просто поблагодарить разработчиков крутого продукта за предоставление его широким массам, а не вести себя как нехороший человек, выискивая неточности в формулировках и доставая авторов?
3aicheg
01.12.2016 03:39+2А продукт Боженька разрабатывает, что даже спросить ничего нельзя, а можно только «славатебегосподи»?
EvgeniyRyzhkov
30.11.2016 13:39Не вижу смысла обсуждать абстрактные «а что если». Но Святослав рядом правильно написал.
ktod
30.11.2016 12:01Конечно. На кладбище. Кладбище ПО — т.е. в архив.
Проекты они разные бывают. Бывают, внезапно, и со статическим и полным ТЗ. ТЗ выполнил — работа окончена, код изменениям более не подвергается.
GennPen
30.11.2016 10:41Замечательная новость!
Еще бы ребята из JetBrains ввели подобную практику. =)Whiteha
30.11.2016 11:03+4Если бы у ребят из JetBrains пичарм не тормозил на топовом железе на файлах с всего 800+ строками…
grossws
30.11.2016 15:34На далеко не топовом i5-2520m с
-Xmx750m
(на ssd, ессно) и существенно большими файлами не тормозит. Исключение — первичное индексирования sdk/большого проекта (при добавлении sdk или обновлении самого pycharm), но это не сильно долгий процесс.
Вы в багтрекер писали, результаты профилирования отправляли?
Whiteha
30.11.2016 16:07При далеко не полной загрузке процессора, дисков, памяти, на i7 3820 3.6GHz, 12 Гб DDR3 1333 MHz, отдельный SSD для ОС и программ, отдельный SSD для исходников, пичарм 2016.3 CE (точный билд пичарма указывать смысла нет, на всех предыдущих было примерно одинаково) были микрофризы, мелкие подвисания, не часто, но периодически, иногда при разворачивании из фона он капитально подвисал, при скроллинге файлов до тысячи строк — микрофризы.
В багтрекер не писал тк пользуюсь не часто. Почти убежден что это не баг а фича джава движка и лучше вряд ли кто на нем сделает и что выход тут один — переписать это дело на C++ Qt.grossws
30.11.2016 16:24+1Это может сильно зависеть от используемой версии xorg, используемого видеодрайвера, композитора и версии самой jdk (например, много проблем было на openjdk, которые отсутствовали на oracle jdk). Если у вас win, то может ощутимо влиять резидентный антивирус. Факторов выше крыши.
На C++ никто в здравом уме продукт такого объема переписывать не будет, тем более, что у меня по комментариям на хабре и на форумах складывается впечатление, что продукты jetbrains лагают у очень небольшого процента пользователей (но такие пользователи, естественно более заметны, чем те, у кого всё работает). По наблюдению за некоторыми проектами, которые пытались просто портировать готовое решение на java на c++ — обычно сильно не успевают за темпом разработки при попытке иметь сходный уровень качества, а часто и уровень качества проседает настолько, что оно становится просто не нужно.
ZaMaZaN4iK
30.11.2016 16:44+1Скажу от себя, как активный пользователь Clion(это от JetBrains IDE для C++). Конфигурация системы: i7-3630QM, 12 Gib RAM, SSD; ОС Kubuntu 16.10, пробовал на Интеле и Нвидия со свободными дровами и блобом.
1) Жрёт память оно довольно сильно. Сжирает первый гиг быстро. Но! Я импортировал проект ReactOS, и он после индексации сожрал 2.7 Gib RAM. Так что с IDE от JetBrains не так всё плохо. Но конкретно в Clion много чего не хватает, очень много.grossws
30.11.2016 18:06Clion сыроват на мой взгляд, правда после 1.0 его не пробовал. Экспериментировал с ним начиная с private EAP.
А проекты на C и C++ и будут более прожорливы, чем, например, на java, где с анализом и индексами существенно попроще. У clion и xmx по умолчанию 2g. Меня не сильно парит прожорливость по памяти, если она обменивается на нормальную навигацию, автодополнение и рефакторинги. И в этом месте clion'у ещё стоит дать времени на развитие.
Мне лично сильно не хватает фич для embedded разработки, но они не слишком популярны в багтрекере.
ZaMaZaN4iK
01.12.2016 11:36На самом деле он стал много лучше со времени своего первого релиза. Но да, продукту ещё стоит развиваться дальше. Я думаю, что в конце-концов они сделают достойного конкурента Visual Studio.
0xd34df00d
01.12.2016 19:29+1Очень зря не пробовали. После 1.0 я плевался, после 2016.2 я его купил и переехал на него с kdevelop.
grossws
02.12.2016 00:40Запилят нужные куски — попробую ещё раз. Так-то у меня all products pack и clion 2016.3 даже, кажется, установлен =)
grossws
30.11.2016 15:46У них есть академические лицензии (для студентов и преподавателей), лицензии для учебных заведений, лицензии для open source проектов (проект должен быть живым и иметь живое community, это стандартная практика для многих подобных продуктов).
GennPen
30.11.2016 17:50Для обычных домашних пользователей у них $89..149/год
grossws
30.11.2016 17:58+1Для индивидуальных разработчиков — да. Что приятно, эти лицензии не ограничивают область применения.
Плюс IDEA CE и PyCharm CE, которые не просто бесплатные, но и свободные, но функционала связанного со всякими web-dev и enterprise фичами там не будет.
dion
30.11.2016 19:42+1Мне больше всего нравится что Jetbrains разрешает купить IDE себе для индивидуального использования и притащить на работу. (Например, если не получается выбить бабло на корпоративные лицензии, а пользоваться хочется).
grossws
30.11.2016 19:46Это и имел ввиду под "не ограничивают область применения".
Я лично перешел на индивидуальные лицензии пока контора закупала 5 лицензий в течении полугода. И купили минимальную, без возможности upgrade'а на следующую. Естественно к тому моменту вышла новая major версия =)
0xd34df00d
30.11.2016 21:33+1У них персональные лицензии такие дешёвые, что проще их купить, чем доказывать живость опенсорса, имхо.
grossws
30.11.2016 22:54Ну, для чего-нибудь well establised живость доказать просто: статистика активности mailing list'а, форума и т. п.
По сути, этим вариантом закрывается кейс, когда разработчик на работе пользуется корпоративной лицензией, а дома ему idea/rm/ws/pc/whatever нужна для работы только над open source проектом.
0xd34df00d
01.12.2016 19:30+2Я неудачник и у меня проект, который я пилю уже больше десяти лет, но который не особо активен по части мейллистов и форумов.
:(
Plesser
30.11.2016 10:43+1а с Java нет планов научить работать PVS-Studio?
Andrey2008
30.11.2016 11:05+2Чисто теоретически это направление нам интересно. Но в планы пока ничего такого не вписано.
vsb
30.11.2016 12:01+1Сейчас FindBugs висит в непонятном состоянии. С одной стороны им все пользуются (кому это надо). С другой стороны им никто толком не занимается и тем, кто им занимается, никто толком не платит. Я думаю, у вас есть шанс в этой ситуации зайти на рынок, если никто вас не обгонит.
https://mailman.cs.umd.edu/pipermail/findbugs-discuss/2016-November/004321.html
Torvald3d
30.11.2016 10:55+3Как быть, если в проекте используется 3rd party код со своими копирайтами и комментариями в начале файлов исходников? Другими словами, что, если не все исходники будут помечены этим комментарием?
SvyatoslavMC
30.11.2016 11:03+23rd party можно исключить из анализа. Часто это и нужно делать, т.к. чужой код не рискуют править, а тратить процессорное время на анализ ненужных файлов нет смысла.
Varim
30.11.2016 11:07Есть где то бинарник утилиты? Не хочется устанавливать с++ на 4 Гб, что бы скомпилить, у меня только c# в студии
MikelSV
30.11.2016 13:20+2Так вот зачем я пишу код в .h файлах!
При обсуждении способов не вспомнили про технологию fuse, через которую можно добавлять соответствующий заголовок ко всем .cpp.
astudent
30.11.2016 13:24-1Предлагаю вам пойти дальше и сделать автоматический анализ проектов на github / bitbucket / ….
Как это может работать:
1) Разработчики добавляют файл в проект с рекламной информацией и, возможно, своими контактами. Запушивают его в публичный репозиторий.
2) Ваш web crawler находит такие проекты и запускает их анализ на ваших серверах.
3) Результат анализа отправляется разработчикам через возможности самих github / bitbucket / … или по указанным контактам разработчикам.
4) Profit!EvgeniyRyzhkov
30.11.2016 13:44-2Нету профита. Это мусорный спам будет.
astudent
30.11.2016 14:13-1Вы заблуждаетесь. Разработчики учатся друг у друга, и будут явно видеть, какой инструмент используется в проекте. Сильнее рекламы не бывает в принципе!
EvgeniyRyzhkov
30.11.2016 14:15+4Мусорный спам — это не реклама.
astudent
30.11.2016 15:22-8Я правильно понял, что генеральный директор компании, производящей PVS-Studio, признает отчеты, генерируемые этим инструментом, спамом?
Kot_Dymok
30.11.2016 15:11-4Простите, вы сами считаете, что «результат анализа» вашего инструмента является «мусорным спамом»? =)
Или я что-то неправильно понял?khim
30.11.2016 18:51+7Так же, как и сырой «результат анализа» clang'а, gcc и тому подобных с дефолтными найстройками. Соберите какой-нибудь проект постарше с
-Wall -Wextra -W...
и посмотрите на результат. Большая часть сообщений — будет из-за того, что проект некоторые «рекомендации лучших собаководов» не соблюдает. Например не обрабатывает все вариантыenum
вswitch
. Что вовсе не значит что подобные сообщения отлавливать не нужно — для тех проектов, у кого в style guide подобные вещи прописаны эта диагностика, разумеется — очень полезна.
P.S. Кстати -Wall и в clang и в gcc включает в себя далеко не все сообщения обшибках — именно поэтому.
mwizard
30.11.2016 13:47+2Великолепно. Теперь можно будет и в самом деле попробовать использовать в своих проектах — а то все читаешь статьи, но ценник настолько кусючий, что для личных проектов просто нет смысла использовать. С комментарием хорошая мысль, т.к. размещать его не жалко, в принципе.
И да, раз вы сделали версию и под Linux — можно ли ждать консольную версию для macOS?SvyatoslavMC
30.11.2016 13:59Как уже сказал мой коллега:
Чисто теоретически это направление нам интересно. Но в планы пока ничего такого не вписано.
Amr
30.11.2016 14:40Относительно лицензии для индивидуальный разработчиков, я бы с довольствием приобрел если бы она стоила 100-200 у.е. даже в варианте подписки на год.
Вы не хотели бы рассмотреть вариант подписок которые предлагает например JetBrains для своих продуктов?Andrey2008
30.11.2016 14:41+1Уже проходили: неудачная история CppCat.
Amr
30.11.2016 14:58+2Насколько понимаю CppCat урезанная версия PVS-Studio, соответственно другая ветка кода, дополнительная команда, тестирование и т.д. А если продавать тот же PVS-Studio, но для индивидуальных разработчиков?
Andrey2008
30.11.2016 15:10+1На данный момент мы позиционируем себя как B2B и пока нет поводов пересматривать эту позицию.
Amr
30.11.2016 15:14Успел увидеть ваш первый комментарий, спасибо :)
webkumo
30.11.2016 17:24+2А что там было?
Adamantium
30.11.2016 22:38Видимо, имелась ввиду ссылка на комментарий несколькими ветками выше, где уже было написано про модель B2B. Так что не «а что там было», а «про какой конкретно первый комментарий».
quzor
30.11.2016 14:41+4Я ожидал, что будут подвохи с Вашей бесплатной лицензией.
Простите, но зачем правило на комментарии? Да еще и в таком стиле?
>Dear PVS-Studio, please check it
Складывается впечатление о каком-то высокомерии.
Насколько урезанной выглядит эта ваша бесплатная версия?Andrey2008
30.11.2016 14:43+6- Мне кажется, в статье дан ответ, на вопрос «зачем правило на комментарии?»
- Они не урезанная. Это полноценная версия. Комментарий — плата за неё.
quzor
30.11.2016 16:03-9Сами же себе палки в колеса ставите.
Мне кажется, вы живете в своем идеальном мире.
Поиграться, народ поиграет в вашу подделку, а после забудет.
Никто не будет в своем разуме засорять код нелепыми комментариями (да еще и в каждом файле!).
Это бред.
«Нельзя так просто взять и выпустить бесплатную версию, нужно обязательно сделать ее неюзабельной» — девиз PVS-StudioOplkill
30.11.2016 17:55+1Для того, чтобы поиграться в эту "«подделку»" есть такая вещь как демонстрационная версия, со своими ограничениями, которые не мешают поиграться.
quzor
30.11.2016 16:19-10> Они не урезанная. Это полноценная версия. Комментарий — плата за неё.
Кажется, где-то вы не договариваете.
Если уж зашла речь о комментариях, зачем из целых 3 вида? Почему нельзя было остановиться на каком-то одном? Есть подоздрение, что вы просто парсите эти комментарии и отключаете множество диагностик для полученного типа (студент, разраб, open-source).
vt4a2h
30.11.2016 15:14+7Честно, я рад первым шагам в эту сторону. Но тут возникает вопрос мотивации добавления рекламы в код. Если для своего открытого проекта за полчаса можно настроить интеграцию с Travis-CI+Coveralls+Coverity, при этом не получив никакой рекламной нагрузки, то зачем использовать ваш продукт?
borisxm
30.11.2016 15:43+5Спасибо за шаг на встречу «пишущим за так». Прогнал анализатор на среднем embedded-проекте объёмом порядка 280 килострок. Получил несколько V547, да и то, только из-за того, что нижнее значение в условии определялось через макрос, и оно оказалось равным нулю. Затем скормил анализатору стороннюю коммерческую embedded-библиотеку, результат ошарашил — около сотни совсем не безобидных ошибок. Теперь буду пинать разработчиков в сторону вашего продукта, пускай покупают и правят свой **** код.
Это, кстати, опровергает тезис из статьи о провале cppcat: «Уровень культуры программирования индивидуальных разработчиков и маленьких команд ниже, чем в крупных компаниях.» Библиотека от очень крупной компании…khim
30.11.2016 19:01+2Это, кстати, опровергает тезис из статьи о провале cppcat: «Уровень культуры программирования индивидуальных разработчиков и маленьких команд ниже, чем в крупных компаниях.» Библиотека от очень крупной компании…
Это embedded. У embedded главное — чтобы было «Дёшево, дёшево, дёшево? Нет — ещё дешевле!»
Этот мир ещё ждёт своих регуляторов. Есть хорошая статья-предупреждение от Брюса. Не знаю — был ли тут перевод, но чувак совершенно прав: в развитии IoT неизбежно (и довольно скоро) наступит момент когда «мир Internet» (где подобный подход приводит к проблемам) и мир embedded (где разработчикам за безопасность и отсуствие ошибок никто не платит) столкнутся. Интересно сколько будет жертв до того, как какие-то нормы будут разработаны…LeftRadio
01.12.2016 21:09+1… мир embedded (где разработчикам за безопасность и отсуствие ошибок никто не платит)…
===============================================================================
Это Вы, простите, так шутите да? В мире embedded 1 единственная ошибка может покалечить, и/или даже убить, в отличии от повисшего сайта, или некорректной вставки фото пользователя в бложик. И тестируют продукты в embedded не меньше, и относятся к этому не менее серьезно. Если это не ардуино-перделка-всепогодная-хрень-показометр конечно :).
А за возможность использовать Ваш продукт (полностью легально для себя любимого) спасибо!khim
02.12.2016 21:06В мире embedded 1 единственная ошибка может покалечить, и/или даже убить, в отличии от повисшего сайта, или некорректной вставки фото пользователя в бложик.
Есть такое.
И тестируют продукты в embedded не меньше, и относятся к этому не менее серьезно.
Его тестируют примерно как и любую другую железяку. Мы там придумали какие-то тесты, их прогнали, если всё работает — все счастливы. А потом — мы типа релиз выпустили и всё зашибись.
А в мире ПО — этот подход не работает! Для того, чтобы ваше поделие в ступор ввести нужно, чтобы кто-то специально на него как-то воздействие оказал так, чтобы там буфера переполнились, счётчики обнулились и т.д. и т.п. Причём люди активно и постоянно работают над тем, чтобы найти подобные вещи и использовать их. Всё это хвалёное тестирование ничего этого не выявит. Потому я и сказал то, что сказал.
Embedded всё ещё считает что он живёт в мире, где бывает софт без багов. И из этого исходит. А это — уже давно не так. В результате всё это тестирование превращается в фарс: зачем нужны какие-то анализаторы и статистика, если в результате все всё равно знают что в релизе будет полно ошибок и их после этого уже никто и никогда не будет править? А раз никого не волнует реальная безопасность создаваемого продукта и важно только пройти тесты — то зачем вкладываться в культуру программирования? Если за это никто не платит?
JerleShannara
30.11.2016 16:23+1А что делать, если я как разработчик участвую в каком-то очень крупном opensource проекте, где, пардон, уже начинает лезть бюрократия на оформление комментариев (конкретно в этом случае — coreboot, там жестко прописан формат начального комментария во всех файлах исходников)?
ZaMaZaN4iK
30.11.2016 16:36-51) Покупка лицензии.
2) Пишешь несложные хуки на post-merge — добавление нужного комментария ко всем нужным файлам, pre-commit — удаление этого комментария.mapron
30.11.2016 17:57+3думаю это нарушает лицензию
thauquoo
01.12.2016 06:14Не нарушает. Проверяться будет локальный проект, в которой соблюдены все условия, и добавлены комментарии. А в апстрим (удаленный сервер) проекта мы будем отсылать отдельные изменения из локального проекта.
Если запретить такое, то фактически PVS-Studio нельзя будет использовать для форков проектов, и для локальной копии проекта, где разработчики могут держать собственные ветки и наработки, которых нет в апстриме. А на таких условиях оно точно не взлетит.
JohnyD
30.11.2016 16:35-1Когда анализ кода 1С будет?
Old_Chroft
30.11.2016 22:47+4Когда АнализКода1С Будет Если Вопрос("А оно точно надо?") = Истина Тогда Возврат Неопределено; КонецЕсли; КонецКогдаБудет;
SvyatoslavMC
30.11.2016 22:57+1Кстати в 1C некоторые ошибки MS Word и подобные инструменты найдут :D
Old_Chroft
30.11.2016 23:55Ради интереса вставил сейчас кусок 1С-ного кода в LibreOffice — почти все красным :-)
А если серьезно — мне кажется статический анализ в динамических ЯП с «никакой» типизацией (где переменная сначала число, а на следующей строке она по if-else внезапно превращается в объект) мало чем поможет.
vba
30.11.2016 16:45Скажите а поддержки F# в планах нет?
SvyatoslavMC
30.11.2016 16:55Java, 1C, Brainfuck, F# в планах на 2016 год нет.
nikolaynnov
01.12.2016 02:36+1Главное, чтобы и на 2017й их поменьше было в планах, а то C++ вообще забросили в пользу C#.
SvyatoslavMC
01.12.2016 09:23Не соглашусь. Разработка C++ сейчас активнее, чем когда либо. Откуда по-вашему Linux версия взялась?)
nikolaynnov
01.12.2016 13:53+1Линукс так же отвлекал от написания новых правил для C++, и от улучшения (исправления false positives) существующих.
А когда вышел анализатор для C# реально скорость добавления диагностик для C++ снизилась в разы. Это даже по changelog'у видно.SvyatoslavMC
01.12.2016 16:37Любое новое новое направление требует затрат из доступных ресурсов. Так всё новое и осваивается.
nikolaynnov
01.12.2016 16:49С этим никто и не спорит. Поэтому я и говорю, что эти новые направления C# и линукс отвлекли разработку от C++. А если ещё Java, Brainfuck, и т.д. будут, то ещё больше времени от плюсов будет отниматься. Вот про что я говорил, когда вы со мной не согласились.
ZaMaZaN4iK
30.11.2016 16:47+2Скажите пожалуйста, рассматривается ли в ближайшем будущем возможность интеграции в GitHub/BitBucket/etc. по аналогии с Coverity? Могли бы там кнопку побольше вставить «Checked by PVS-Studio». Ещё один способ рекламы, и пользователям хорошо.
skobkin
01.12.2016 12:35+1Да. Баннер на главной странице репозитория (README.md) был бы гораздо более адекватным решением, чем правка вообще всех сорцев.
NickViz
30.11.2016 16:57Я правильно понимаю, что при отсутствии шапки в файлах — бесплатная версия просто их не будет обрабатывать(ну по логике так должно быть)?
Andrey2008
30.11.2016 16:57+1Будет выдано предупреждение V009. Если вы не хотите проверять файл/папку или не можете изменять файлы, то просто исключите этот файл/папку из анализа.
NickViz
30.11.2016 17:20+2По любому — большое вам спасибо, за появившуюся возможность легально использовать PVS-Studio для своих проектов!
Ещё два вопроса перед тем как нырять в чистые воды статического анализа — если (или когда) вы решите, что «халяву» прикрывать надо и уберёте возможность бесплатного использования:
1. могу ли я удалить шапки после этого? Или они должны остаться навсегда после первого использования согласно лиц.соглашению?
2. требуется ли обновлять раз в год бесплатную версию или она не «превращается в тыкву» с течением времени? (да, я помню преимущества постоянного обновления анализатора, но вот представим, что не обновиться никак)Andrey2008
30.11.2016 17:55+41. Можете удалить. Всё равно мы не можем это контролировать.
2. Превращать в тыкву не планируем. Превращение в тыкву возможно, если всё это пойдёт совсем сильно не туда. Не знаю, какой может быть сценарий беды, но и исключать форс-мажор смысла нет.
JIghtuse
30.11.2016 17:41+1Если Вы используете PVS-Studio for Linux, то сразу переходите ко второму шагу, файл с лицензией вам не понадобится.
Не подскажете, что не так делаю?
$ cat malloc.c // This is an open source non-commercial project. Dear PVS-Studio, please check it. // PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com #include <stdlib.h> int main(int argc, char **argv) { (void)argv; int *i = malloc(argc); return i[0]; } $ ./pvs-studio-6.11.20138.1-x86_64/bin/pvs-studio-analyzer trace -- gcc malloc.c -o malloc $ ./pvs-studio-6.11.20138.1-x86_64/bin/pvs-studio-analyzer analyze [100%] Analyzing: /home/user/malloc.c Please request a trial license from our support at support@viva64.com. Analysis finished in 0:00:00.05 $ ./pvs-studio-6.11.20138.1-x86_64/bin/pvs-studio-analyzer analyze -l malloc.c [100%] Analyzing: /home/user/malloc.c License information is incorrect. Please check your registration data or contact Customer Support at support@viva64.com Analysis finished in 0:00:00.02
PavelBelikov
30.11.2016 18:00./pvs-studio-6.11.20138.1-x86_64/bin/pvs-studio-analyzer analyze -l malloc.c
нужно поменять на:
./pvs-studio-6.11.20138.1-x86_64/bin/pvs-studio-analyzer analyze
-l — это путь до файла с лицензией.JIghtuse
30.11.2016 18:13Это от безысходности добавил. Пятью строками выше вызов в точности такой, как вы пишете.
JIghtuse
30.11.2016 18:33С триальной (истёкшей) лицензией тоже не действует:
./pvs-studio-6.11.20138.1-x86_64/bin/pvs-studio-analyzer analyze -l PVS-Studio.lic [100%] Analyzing: /home/user/malloc.c Your license for PVS-Studio has expired. You may renew your license at http://www.viva64.com/en/renewal/. Analysis finished in 0:00:00.02
PavelBelikov
30.11.2016 18:44+3Пардон, не заметил. Старого бинарника pvs-studio нет в PATH?
danfe
05.12.2016 10:26+1А вы намеренно полагаетесь на то, что бинарник
pvs-studio
будет в$PATH
? Почему бы не запускать его из того же каталога, что и запускаемый пользователемpvs-studio-analyzer
? Relocatable/PATH-agnostic программы — это же так хорошо. :-)
AgentFire
30.11.2016 17:51Congratulations! PVS-Studio has not found any issues in your source code! 0
Хммм, а я-то думал, что-нибудь да вылезет на крупном проекте. :)
Jeditobe
30.11.2016 18:10+2Вы должны вписать в начало каждого файла две строки с комментарием.
Прям-прям каждого?
Даже при полном отсутствии возражений со стороны всех разработчиков, для проектов вроде ReactOS, необходимость перелопатить около 50 000 файлов, чтобы дописать в них эти комментарии выглядит несколько пугающей.Armleo
30.11.2016 18:22+3Автоматизация
Если в вашем проекте много файлов, то вы можете воспользоваться вспомогательной утилитой. Вы должны будете
указать ей какой комментарий вставлять и каталог с кодом. Затем утилита рекурсивно обойдет все файлы в
папке и вложенных папках, добавляя в файлы с исходным кодом соответствующие комментарии. Скачать
утилиту (вместе с исходным кодом) можно здесь: how-to-use-pvs-studio-free.webkumo
30.11.2016 18:48+2Прикольный коммитик получится…
Jeditobe
30.11.2016 20:07+5Вот вот! А потом еще сотни удивленных людей, которые сделают рутинный чекаут и внезапно обнаружат, что к ним приехал весь репозиторий заново и целиком.
А среди наших разработчиков можно встретить тех тех, кто до сих пор сидит на EDGE. И таких не мало.EvgeniyRyzhkov
30.11.2016 20:44-7тех, кто до сих пор сидит на EDGE
Послушайте, а у бомжа, который сидит у вокзала вообще проблема — у него даже компьютера нет.
«Разработчики PVS-Studio — проклятые капиталисты! Заставляют голодающих африканцев 50000 файлов апдейтить.»
Давайте до абсурда не доводить?Jeditobe
30.11.2016 21:05+9Вы зря приравниваете к бомжам наших программистов, да и не только наших. В некоторых странах и регионах просто нет хорошего быстрого и недорого интернет-доступа. А программисты там есть. Это не выдуманная, а вполне реальная ситуация.
Так что, действительно, лучше не доводить до абсурда.
В капитализме я никого не упрекал.
rekby
01.12.2016 00:07У вас используется SVN, он хранит и пересылает только изменения (подозреваю что в сжатом виде).
Комментарий
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
занимает 160 байт. Для 50000 файлов получается около 8Мб несжатых изменений. Даже без учета сжатия для EDGE и тарифов порядка $1/мб трафик вполне подъемный.rekby
01.12.2016 00:12Скачал для интереса исходники с
svn://svn.reactos.org/reactos/trunk/reactos
файлов там 19 тыс (50 тыс. это видимо посчитались служебные файлы внутри .svn), а *.c* — файлов 7063 — примерно 1.1Мб изменений.
Так что мне кажется это не так страшно.Jeditobe
01.12.2016 01:35+5На бумаге это кажется все гладким, но даже сейчас меня гложут сомнения, что что-то может пойти не так. Вот например, это незначительное для компилятора изменение разом меняет нумерацию строк почти во всех файлах, соотвественно, если где-то была справочная информация с номерами срок, собраннная и записанная человеками, она сразу становится инвалидной. Следом прокисают все патчи, чахнущие в баг-трекере и ждущие своего часа. А переделка патчей может оказаться непростой, при условии, что разработчик патча мог перестать выходить на связь. Т.е. нужно провести огромную подготовительную и огромную разяснительную работу перед мега-коммитом трех бесполезных строк в кучу файлов.
А на практике, у нас была история, когда глюкнула вспомогательная эксперементальная тулза, что то там чирканула в свн (вроде бы поменялся корневой путь), в результате, хотя файлы синтаксически не поменялись, свн решил, что всем нужно полный чекаут провести. Не смотря на то, что что беду быстро обнаружили и в течение часа свн откатили из бэкапа, в рассылке и ирк-чате шквал вопросов и дискуссий не стихал еще неделю.asm0dey
01.12.2016 07:36Как минимум гиту такие изменения не страшны. Меркуриалу тоже. Про другие VCS не знаю.
rekby
01.12.2016 08:28Системы патчей сейчас вполне умеют применять патчи в примерно похожие файлы — т.е. сдвиг на несколько строк для них не проблема — равно как и для человека: при разборе ошибки обычно есть не только номер строки, но и какой-то контекст по которому ± 3 строки вполне ищутся. Собственно так же как при изменении самого файла при штатном редактировании — потом всплывает баг и номера строк вполне могли немного уехать.
Информация собранная людьми становится незначительно менее качественной — строки всё равно плывут и вроде никто не следит за тем чтобы после коммита сохранялись номера строк.
Я не исключаю вероятности что в большом проекте при огромном числе изменений (даже таком синтаксически нейтральном) может быть какая-то непредвиденность, однако я бы тут оценивал не возможные проблемы из-за коммита
трех бесполезных строк в кучу файлов
а возможные проблемы vs выгода от получения инструмента с ценником если не изменяет память — несколько тысяч долларов.
т.е. если инструмент не нужен — то и возможные проблемы от коммита не нужны
если нужен — то соответственно сравнивать степень риска/пользы с выгодой от инструмента, а не с бесполезными изменениями в файлах.Jeditobe
01.12.2016 12:58+1Мы все-таки подождем еще более рациональной схемы лицензирования. Ведь дождались же бесплатной лицензии для Opensource. Осталось дождаться бесплатной лицензии для Opensource, адекватной для крупных проектов. И этого дождемся.
rekby
01.12.2016 13:16+3Тут вопрос двоякий.
Я на всякий случай себе анализаторы и инструкцию скачал и сохранил. Вдруг завтра (или когда еще анализатор потребуется) точка зрения у разработчика будет другое и доступного варианта лицензирования не будет вообще. Тогда можно будет сохранённой версией воспользоваться.
NickViz
30.11.2016 19:24+4Да ладно вам. Зато бесплатно получаете возможность использовать отличную тулзу. Кому шашечки, кому ехать…
Скажите спасибо, что по милой привычке гугла и прочих «корпораций бобра» бесплатное приложение не будет отправлять «соверешенно обезличенную статистическую телеметрию» на сервера PVS на каждый чих.
Вам дали бесплатную возможность. Каменты — плата за эту возможность. Кто-то может «поставить adblock» см.выше, а кто-то с удовольствием будет пользоваться и с рекламой.
Гораздо лучше чем отсутствие анализа вообще и/или анализ и с рекламой и со сбором данных. Ну а у богатых другие проблемы, нам не интересные.3aicheg
02.12.2016 03:40+1>«соверешенно обезличенную статистическую телеметрию»
По-моему, куда как более здравая была бы тема, чем вставлять дурацкие комменты в каждый файл. И опенсорсерам пофиг, и мега-корпорации не позволят у себя такое, и проконтролировать каждого инициативного васю, использующего не ту лицензию в обход начальства, можно будет легко и просто по логам сетевой активности.NickViz
02.12.2016 12:54ну не знаю, мне не пофиг. если какая-то локальная программа начинает слать что-то с моего компа… это то в отличии от камента в сорцах — не особо проконтролируешь. ну и например в закрытых сетях внезапно отвалится, недостучавшись до СС.
в общем, если есть возможность программе в интернет не ходить — это кмк лучше, чем наоборот.
Cid
30.11.2016 19:55+1Остроумно придуман критерий бесплатности.
Пользовался лицензионной версией для корпоративного проекта (большая кодобаза, > 15 лет разработки).
Несколько мелких, но вредных ошибок PVS нам поймал.
Теперь обязательно буду применять этот инструмент и в личных проектах.
Psychosynthesis
30.11.2016 20:01А подскажите, почему у вас нет отдельного приложения, в которое я мог бы загрузить свой исходник на Сях, и получить результат прямо в этом приложении? Почему обязательно заниматься встраиванием анализатора в свою систему сборки и т.п.?
Многие же ошибки можно проверять не зависимо от особенностей используемого компилятора.
Чтоб было понятно о чём речь и почему меня MS VS не устроил, уточню — я сейчас веду речь о embedded-проектах, конкретно, например, о связке MPLABX + XC8.Andrey2008
30.11.2016 20:13+3Нормальный анализ С/С++ кода без препроцессирования невозможен. Типы, макросы, объявления классов, где лежит h-файл…
Psychosynthesis
30.11.2016 20:14Оукей, в чём проблема все используемые .h- и.с-файлы в программу грузить?
Кстати, макросы я в основном c-файле пишу, не знаю, может это и плохая практика для desktop, но для embedded вполне нормально…
Да, опять же, я не просто так написал про embedded, типы, например, у меня все стандартные.mayorovp
30.11.2016 20:16Вручную? Проще попросить компилятор собрать из вместе.
Psychosynthesis
30.11.2016 20:19У меня пять файлов в проекте получается всего. Учитывая что моя среда не поддерживается, мне было бы проще таки именно вручную их указать.
Jeditobe
30.11.2016 21:17+5Предлагаю вам альтернативную модель.
Для OpenSource-проектов, которые поддерживают больше чем 2-3 человека, вам нужна совершенно другая модель распространения лицензий. Сделайте web-сервис наподобие openhub.net . Автор опенсорс-проекта отправляет на этот сайт ссылку на свой публичный репозиторий, а вы автоматически выкачиваете код, анализируете, публикуете общедоступный отчет об ошибках о проектах, параллельно рекламируете платную версию для корпоративных пользователей.
Плюс интересная модель монетизации на основе абонентской платы — задержка общедоступной публикации о найденных ошибках на 30 дней, с приоритетным доступом только для авторов проекта. Это будет интересно открытым проектам, которые переживают о своей репутации.EvgeniyRyzhkov
01.12.2016 04:29+2Возможно ReactOS и разрабатывают в качестве хобби. Не знаю. Но PVS-Studio это бизнес, в котором стоимость разработки чего-либо весьма существенна. Поэтому у любой «а давайте попробуем сделать так» есть цена. У той реализации бесплатной версии, которая сделана сейчас затраты на разработку были адекватными.
То, что описали вы, стоит хрен знает сколько много человеко-часов разработки, которые мы совершенно точно не будем тратить на такую ерунду.
Мы лучше что-нибудь полезное этими ресурсами сделаем.skobkin
01.12.2016 12:46+1Сделайте альтернативой комментарию в каждом файле плашку с баннером в README.md репозитория. Вас будут рекламировать красивой картинкой на главной странице репозиториев опенсорс-проектов.
kloppspb
01.12.2016 13:52+1Я пытался пользоваться чем-то вроде. Не помню уж какой анализатор там был, но — да, после регистрации туда нужно было закинуть ссылку на гитхаб и ждать. Пару дней подождал, потыкался на «в очереди, ждите», плюнул и забыл.
Может для каких-то проектов подобный сервис и имеет смысл, но для не очень больших смысла в нём не вижу никакого. Результат нужен тогда, когда он нужен, а не когда кто-то там далеко разгребёт свою очередь непонятно когда :)Jeditobe
01.12.2016 14:00К сожалению, ваш пример никак нельзя экстраполировать на другие подобные сервисы. Это будет логической ошибкой.
kloppspb
01.12.2016 00:00Раз:
$ cat void.c // This is an independent project of an individual developer. Dear PVS-Studio, please check it. // PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com int main(void) { return 0; }
Два:
$ cat pvs.ini platform = linux64 preprocessor = gcc output-file = void.log cl-params = -Wall -pedantic void.c
Три:
$ pvs-studio-analyzer trace -- gcc -Wall -pedantic void.c ... $ pvs-studio-analyzer analyze -c pvs.ini [100%] Analyzing: ... void.c Please request a trial license from our support at support@viva64.com. Analysis finished in 0:00:00.02
SvyatoslavMC
01.12.2016 00:10Укажите, пожалуйста, версию (убедиться в работе с комментариями):
pvs-studio --version
В остальном запуск в корне неверный, в Вашем случае надо было так:
pvs-studio-analyzer trace -- gcc -Wall -pedantic void.c pvs-studio-analyzer analyze -o void.log plog-converter -a GA:1,2 -t tasklist -o /path/to/project.tasks void.log
Вы можете смело проверять конкретный проект и смотреть результаты. Результаты будут гораздо нагляднее, чем на тестовом файле.kloppspb
01.12.2016 00:16> pvs-studio --version
PVS-Studio 6.11.20138.1
> pvs-studio-analyzer trace — gcc -Wall -pedantic void.c
> pvs-studio-analyzer analyze -o void.log
[100%] Analyzing:… void.c
Please request a trial license from our support at support@viva64.com.
Analysis finished in 0:00:00.02
rekby
01.12.2016 00:27Отличный вариант.
Мне особенно понравился критерий бесплатности: по сути клиент сам решает будет ли он пользоваться платной версией или бесплатной.
Большие организации скорее всего действительно купят, т.к. они явно не индивидуальный проект и тут может сработает бюрократия, может внутренний имидж + нужна поддержка и т.п.
В конце концов большие предприятия и redhat покупают просто из-за поддержки, даже без доп. условий хотя есть бесплатный centos/oracle — точно такие же но без поддержки.
А те, кто будут пользоваться бесплатной версией скорее всё равно всё равно бы никогда анализатора не купили.
YaakovTooth
01.12.2016 02:05+2Какой странный хабр. Разработчики занимают достаточно жёсткую позицию, но предлагают бесплатный вариант. И в ответ на предложение бесплатного варианта — всё не так, это не так, и это не так; господи, так не используйте.
Разработчики могли бы быть мягче, но, чай, бесплатно работать никто не хочет.webkumo
01.12.2016 14:04+2Нормальный хабр. Предлагают не бесплатный продукт, а продукт за рекламу. Вот люди и пытаются договориться о более удобных (для них) способах.
Ну и четверть комментариев про странную политику ценников-по-запросу. Да, есть компании, которые так делают. Да есть крупные компании так делают. Но почему такая политика обязана нравиться — я не понимаю категорически. Почему нельзя сказать о том, что такая политика тебе не нравится — я тоже не понимаю.
Возьмём для примера JetBrains и их смену схемы лицензирования недавнюю — ведь вой же поднялся! Но! JetBrains прислушались и немного модифицировали эту схему — в результате почти все довольны! Хотя некоторые представители оного в той теме тоже не понимали чего хотят все эти люди...
Так может и до этих корпаратов дойдёт их собственная выгода, которую они смогут достичь, если примут некоторые предложения сообщества… ну если тему постоянно мусолить.
Mox
01.12.2016 03:40-1Сделайте облачную версию, продавая время работы PVS-Studio + хранилище для исходников.
Тогда небольшие организации смогут использовать ваш продукт «раз от разу» не переплачивая.
borisko
01.12.2016 11:49+1Мне кажется, было бы очень здорово поддерживать комментарии, разбитые на строчки так, чтобы длина одной строки не превышала 80 символов. Во многих проектах используются автоформаттеры и хуки, которые не пропустят запрошенные комментарии.
Lauren
01.12.2016 19:21-2Насколько я понимаю, лицензия по который Вы предоставляет свой продукт бесплатно по замыслу похожа на облегченный GPL. Так чего ещё нужно для opensource проектов?
FoxCanFly
02.12.2016 15:58+4Где тут GPL то? xD
rogoz
02.12.2016 17:05-1Возможно человека неправильно поняли вы или я, но я с ним в меру своего понимания согласен.
Судя по этому https://habrahabr.ru/company/pvs-studio/blog/316484/#comment_9938592 комментарию, если вы 1 раз добавили строчки в файл и проверили бесплатной версией, эти строчки должны оставаться как GPL. То есть если вы их удалили потом, это будет «лицензия не подходит для данного проекта», но вы использовали её.
Вот только я затрудняюсь оценить это со стороны закона, в отличие от GPL, которая законна (по крайней мере в США точно).
ShaltaiBoltai
02.12.2016 09:31Первый раз имею возможность хоть что-то написать на хабре. Вообще, у меня иногда было желание задать вопросы авторам статей, но отсутствие возможности писать комментарии задать эти вопросы не позволяло. Зачем тогда вообще декларировать возможность писать, если существующие ограничения таковы, что сводят эту возможность на нет? (Это был вопрос хабравладельцам, ответ на который не требуется.)
Andrey2008, у меня 2 вопроса:
1. FREE лицензия позволяет использовать PVS-Studio без каких-либо ограничений в ее функциональности, или же разница с коммерческим вариантом есть (предположим, анализатор пропускает какие-то вещи и т.д.)?
2. Когда планируете начать поддерживать VS 2017.
PS: И вопрос из любопытства: Вы сами пишете англоязычные варианты своих статей? Просто интересно.Andrey2008
02.12.2016 09:33+11. Версия полностью функциональна.
2. В планах уже стоит задача.
3. Переводчик.
T-Khan
02.12.2016 09:33+5Сделайте один из возможных вариантов «баннер на сайте». Я вот использую кучу свободных опенсорсных проектов, но в их исходники лазил чуть реже чем никогда. Увидев же баннер на сайте, SF, github, в меню «О программе» я бы как минимум заинтересовался.
К тому же, формулировка комментария очень странная. Можно подумать, что люди отправляют свои исходники на какой-то конкурс, по результатам которого лучший проект будет проверен PVS. Лучше бы написали просто, без кривляний: «This project was checked with free version of PVS-Studio».
KpuTuK
03.12.2016 00:27-2Вот у нас (в России) всегда так — дали что-то
нахалявубесплатно, а они и нос воротят, то им ни так, это им ни этак. А потом удивляются —почему все деньги за все дерут?
BlackRaven86
03.12.2016 23:56+4// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
Вот это фрагмент сомнительный. Выглядит так, будто бы исходный код является частью проекта PVS-Studio.
Wohlstand
07.12.2016 22:26+1Хотя можно было бы написать что-то вроде этого, (хотя можно на выбор): "// We are using PVS-Studio Static code Analyzer for C, C++ and C#: ..., try it yourself!", "// This project is debugging with PVS-Studio Static code Analyzer for C, C++ and C#: ...", и т.п. Хотя, можно и не обращать внимания на эту надпись, ведь теперь PVS нацелен в основном на большой бизнес, а там дополнительные подписи в коде совсем неприемлемы, да и у них денег всегда достаточно, чтобы купить даже дешевую лицензию (только маленькие компании с ограниченным финансированием не могут себе позволить даже лицензию по цене как на одного человека). Бизнес даже если и пользуются бесплатным и свободным софтом, иногда крайне нуждается в наличии официальной поддержки производителя, чтобы можно было на кого свалить за убытки и чтобы не тратить время и деньги на собственной поддержке дополнительных проектов и либ, чтобы просто позвонить, задать любой тупой вопрос или чтобы тем побыстрее исправили баги.
Deu
04.12.2016 09:51-1Спасибо команде PVS за возможность попользоваться вашим продуктом. Внесу свои пару копеек в этот проект. Первый раз пользую статический анализатор, есть много интересного. Есть кое какие логические ошибки, которые могли бы анализатором тоже определяться. Например сегодня обнаружил, что если в сеттере свойтсва присвоение вызывать после OnPropertyChanged, это может давать непредвиденные результаты при попытке обрабатывать новое присвоенное значение в событие PropertyChanged. Короче вот так не правильно
set { if (_value == value) { return; } OnPropertyChanged("Value"); _value = value; }
Wohlstand
07.12.2016 22:14Мне Австрийский друг как раз слил официальную статью на английском (которую я быстро переключил на русский) как раз про это. Скажу, что это очень интересный сюрприз!
Опробовал его некоторое время назад на Linux, чего я долго ждал. Это пока был недельный триал, и как раз попробовал его в деле, и очен хорошо работает из под Qt Creator! Конечно много работы в коде (редактор уровней придётся переписать целиком, чтобы позже можно было добавить полноценную поддержку кооперативного редактирования через сеть). Огромное спасибо за такую возможность!
(Немного подробнее: мои проекты все писаны под MinGW, GCC и CLang и они не совместимы почти с ни одной MSVC (хотя возможно с 2015-й условно совместим, остальное всё либо забаговано, либо имеют отсталую поддержку C++11 и не имеют даже набросков C++14, которые уже были в MinGW, GCC (аж 4.8/4.9-х версий) и CLang на момент VisualStudio 2012/2013), тем более даже на винде предпочитаю Qt Creator, который по мне более дружелюбный и гибкий, через него меньше телодвижений, чтобы прыгать от функции к функции, встроенная возможность рефакторинга, которая в студиях отсутствует (хотя, исправляется плагином VisualAssist, но он в разы медленее чем это через Qt Creator, что чувтсвуется на больших проектах), а MinGW за то, что он быстрее чем MSVC получает поддержку всех современных стандартов C++ и весит в разы легче, и даже за собственный набор библиотек, не требующий доустановки msvcr-ы).
Wohlstand
07.12.2016 22:50P.S. Так и не спросил: среди сообщённых предупреждений были и о явном привидении float / double к целому числу. (Хотя и приводил их к double / long double для более точного деления с последующим отсеканием дробной части и приведение к целому. Либо, например, округление плавающего в целое с привидением, тоже выдавалось предупреждение). Как по вашему лучше делать такие окруления?
Andrey2008
07.12.2016 23:03Мне кажется как-то так:
int ToInt(const float val) { return static_cast<int>(val > 0 ? val + 0.5 : val - 0.5); }
Wohlstand
07.12.2016 23:09Я сначала использовал старый подход:
double floating = ....; long integer = static_cast<long>(std::round(floating));
И он как раз выдавал мне предупреждение здесь. Уже позже я скопировал код из Qt-шного qRound и сделал множество функций под разные unsigned/signed short, long, long long, и т.п., потому что штатный только под int, и получил вот такое:
inline long lRound(double d) { return d >= 0.0 ? static_cast<long>(d + 0.5) : static_cast<long>(d - static_cast<double>(static_cast<long>(d - 1)) + 0.5) + static_cast<long>(d - 1); }
Анализатором проверить тут увы, не успел, дела, да и триал просрочился.
DeXPeriX
Отлично! Супер! Единственная просьба — разрешить не только С++ комментарии, но и Си (/* */). Проект в релиз собирается по стандарту С90, там комментарии "//" не даст вставить компилятор
EvgeniyRyzhkov
Расскажите, пожалуйста, что за проект? C90 сейчас все-таки экзотика.
DeXPeriX
Если честно, Си вообще в принципе почти экзотика для энтерпрайза)
Подозреваю, что примерно про мой проект в статье и написано: Winter Novel. Подробнее о реализации тут
С90 и остальные "зверские" опции компилятора сейчас использую почти вместо PVS-Studio — они заставляют писать чище, потом меньше времени на отладку.
PTM
например, в микроконтроллерах распространен.
aknew
Я сталкивался с подобным наследством в медицинской области, где некоторые файлы были еще старше (там был сильнозапущеный принцип "работает — не трожь", помноженый на медицинскую специфику что любой код или либа по умолчанию считаются опасной и глючной). И проблем там была куча из-за этого, тот же кланг вообще не смог проанализировать или собрать проект из-за отсутствия -fpermissive и присутсвия в коде кнострукций void a(){ return 1;}
Andrey2008
Да, такая возможность есть. Вы можете написать:
Замечу, утилита для вставки комментариев так не умеет. Поэтому надо либо вставить комментарии вручную, либо доработать утилиту (на github доступен её исходный код).