LINUX.ORG.RU

Бесплатная лицензия PVS-Studio для открытых проектов

 , , , ,


4

7

Разработчики PVS-Studio хотели бы помочь миру программного обеспечения лучше познакомиться с инструментами статического анализа кода и повысить его качество. Теперь PVS-Studio предоставляется бесплатного студентам в учебных целях, индивидуальным разработчикам и коллективам энтузиастов.

Как помочь маленьким командам разработчиков или как распространять академические лицензии? На первый взгляд кажется, что самый простой путь — дарить лицензии тем, кто развивает бесплатное программное обеспечение. К сожалению, это решение не кажется правильным. Многие компании извлекают из таких проектов прибыль косвенным путём.

Решение было найдено интуитивно.
Что отличает корпоративные проекты от проектов энтузиастов? В корпоративных проектах меньше свободы и больше бюрократии. Вряд ли руководство Microsoft будет радо, если разработчик в коде MS Office напишет, что это его персональный проект. Этим надо воспользоваться и предлагать вносить в код правки, в которых упоминается PVS-Studio. Заодно код открытых проектов будет рекламировать PVS-Studio.

Бесплатная лицензия PVS-Studio

Внесите правки во все компилируемые файлы вашего проекта. Имеются в виду файлы с расширениями c, cc, cpp, cs и так далее. Заголовочные файлы менять не требуется.

Вы должны вписать в начало каждого файла две строки с комментарием (существует выбор из нескольких вариантов). Это своего рода плата за возможность бесплатного использования 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

Для Windows-разработчиков сценарий немного отличается.

Если в вашем проекте много файлов, можете воспользоваться вспомогательной утилитой. После указания комментария для вставки и каталога с кодом утилита рекурсивно обойдёт все файлы в папке и во вложенных папках, добавляя в файлы соответствующие комментарии. Скачать утилиту (вместе с исходным кодом) можно из репозитория на GitHub.

Некоторые разработчики могут сказать, что не хотят видеть в начале файла две строчки с комментарием, не относящимся к сути проекта. Это их право, и они могут просто не использовать анализатор. Или же они могут приобрести коммерческую лицензию и использовать её без ограничений. Авторы PVS-Studio рассматривают наличие этих комментариев как благодарность за предоставленную лицензию и заодно как дополнительную рекламу их продукта, и считают, что это честный обмен.

>>> Подробная статья на Хабре

сделать вроде бы хорошее дело, но так, что бы сообщество не оценило. Браво :)

JB ★★★★★ ()

Т.е. я должен навсегда запилить в свои файлы комменты с рекламой вашего анализатора? Даже после того как вы проверите и выдадите лицензию? Тогда пожалуй я выбираю торрент едишн. :)

anonymous ()
Ответ на: комментарий от JB

сделать вроде бы хорошее дело, но так, что бы сообщество не оценило. Браво :)

Снял с языка :)

AP ★★★★★ ()
Ответ на: комментарий от JB

Да, годное извращенство, согласен.

Сделали бы просто картинку, которую помещаешь в Readme на GitHub/Bitbucket с надписью «Checked with PVS-Studio» и скидываешь ссылку на проект на их сайт, чтобы краулер компании раз в некоторое время заходил в репозиторий и закидывал ссылку на отчёт в Issues.

Но в каждый исходник писать... Жесть.

Причём моим способом тоже гарантируется открытость проекта.

Deleted ()
Последнее исправление: merhalak (всего исправлений: 2)

JB как нельзя лучше описал ситуацию, согласен с ним. Когда прочитал заголовок, подумал уже, что вы наконец додумались сделать что-то полезное, но после прочтения новости стало ясно, что всё как всегда. И вместо действительно интересной для аудитории информации — всё та же маркетинговая отрыжка и ни слова про такие вещи, как, например, срок действия лицензии.

Мы хотим помочь миру программного обеспечения лучше познакомиться с инструментами статического анализа кода и повысить качество программного обеспечения.

Нет. Не надо прикрываться благими намерениями. Вы просто хотите посильнее распиарить своё детище.

Внесите правки во все компилируемые файлы вашего проекта.
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

Вспомнились эпизоды разных историй, когда главного героя заставляли делать неприятные вещи в качестве платы за выполнение его просьбы; ИЧСХ, почти всегда заканчивалось так, что либо герой соглашался, но в итоге ничего не получал, либо посылал тех, кто ему такое предъявлял. Неужели вы думаете, что кто-то действительно превратит свой проект в рекламную площадку «Пивас-студии» при наличии Coverity Scan?

Вы не задумывались, что если просто будете хорошо делать своё дело без лицемерия и клоунады, то это будет более эффективной рекламой вашего продукта?

sudopacman ★★★★★ ()

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

anonymous ()

Пожалуй, первый раз в жизни соглашусь с JB

mittorn ★★★★★ ()

На первый взгляд кажется, что самый простой путь - дарить лицензии тем, кто развивает бесплатное программное обеспечение. К сожалению, это решение не кажется нам правильным. Многие компании извлекают из таких проектов прибыль косвенным путём.

Это каким таким косвенным путём? Имеются доказательства или это просто домыслы? Что, корпорации заинтересованные в развитии экосистемы Linux платят Coverity за бесплатную проверку открытых проектов?

Никто не станет править свой исходный код ради PVS-Studio. Что вам мешает пойти путём Coverity Scan? Та самая косвенная прибыль непонятного происхождения, якобы извлекаемая Coverity? Вот пример известного открытого проекта использующего Coverity Scan - qBittorrent пролистываем вниз и видим баннер coverity passed, который ведёт на страницу с графиками со статистикой найденных ошибок по типам и по темпу их исправления.

Вот если PVS-Studio предложит открытым проектам аналог описанного выше сервиса Coverity Scan (где рекламой служит только баннер ведущий на сайт со статистикой выявленных ошибок) то тогда можете рассчитывать на массовое использование в открытых проектах, а нынешнее предложение с правкой исходников устроит лишь единицы.

anonymous ()
Ответ на: комментарий от sudopacman

ЧСХ, на хабре комментарии у этой новости сплошь позитивные, что в очередной раз как бы намекает

JB ★★★★★ ()

В предыдущих тредах про эту хрень я считал, что ниже пасть уже некуда. Я ошибался.

hateyoufeel ★★★★★ ()

А если я вставлю комментарий

/*
 * 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
 */

у вас парсер сломается, да?

kirk_johnson ★☆ ()
Ответ на: комментарий от Deleted

Причём моим способом тоже гарантируется открытость проекта.

Нам не нужна открытость проекта. Вы можете использовать PVS-Studio в индивидуальных закрытых проектах. См. 3 вариант.

Andrey_Karpov_2009 ()

Вообще простыню можно было бы и под cut загнать.

Promusik ★★★★★ ()
Ответ на: комментарий от kirk_johnson

А если я вставлю комментарий /* .... */ у вас парсер сломается, да?

Такой вариант предусмотрен. Можете смело вставлять.

Andrey_Karpov_2009 ()
Ответ на: комментарий от anonymous

Хочу обратить внимание, что Coverity Scan не подходит для индиразработчиков с закрытым кодом. А PVS-Studio позволяет им проверять их код. Да и с открытым кодам не всё так сладко, как рассказывают. PVS-Studio может оказаться многим удобнее.

Да, и ещё можно не использовть PVS-Studio. Или купить и не связываться с комментариями.

Andrey_Karpov_2009 ()
Ответ на: комментарий от Andrey_Karpov_2009

Какой смысл в индивидуальных закрытых проектах в этом комментарии? Код больше никто не увидит, некому будет рекламировать. Проще требовать рекламу PVS-Studio на странице проекта и открытый (для Вашей компании) репозиторий проекта, куда может обратиться краулер. Или вы бинари распространяете, а не рекламный сервис проверки проекта?

Deleted ()
Последнее исправление: merhalak (всего исправлений: 1)
Ответ на: комментарий от Deleted

Какой смысл в индивидуальных закрытых проектах в этом комментарии?

Это подарок. И способ популяризации методологии статического анализа в целом.

Andrey_Karpov_2009 ()
Ответ на: комментарий от Andrey_Karpov_2009

Вот это

Вы должны вписать в начало каждого файла две строки с комментарием.

совершенно несерьёзно. Может легче было генерировать Ваш комментарий в начале кода автоматизированно во время процедуры проверки, если комментарий не присутствует в файле? Индивидуальный разработчик/студент не будет чистить код от подобных автоматических комментариев. Это и реклама его проекту, т.к. он проверяется статическим анализатором.

Просто одно дело писать в n файлах вручную, другое дело - если натравил на проект, а в виде платы - получил кучу комментариев, сгенерированных автоматически, если их до этого не было.

Deleted ()
Ответ на: комментарий от Andrey_Karpov_2009

Комментарий ниже. Я как раз про то, что легче генерировать комментарий в процедуре проверки, разве нет? Как раз там, где у Вас находится проверка наличия комментария. В стиле if not exists -> print.

Deleted ()
Ответ на: комментарий от Deleted

Комментарий ниже. Я как раз про то, что легче генерировать комментарий в процедуре проверки, разве нет?

Нет это должно быть осознанное решение. Человек должен своими руками вставить комментрии (или запустить утилиту how-to-use-pvs-studio-free). Нет ничего хуже, когда программа сама правит твой код.

Andrey_Karpov_2009 ()
Ответ на: комментарий от Promusik

Вообще простыню можно было бы и под cut загнать.

Лучше сразу в /dev/null.

sudopacman ★★★★★ ()

Как Вы относитесь к варианту использования «добавить комментарий > проверить код > убрать комментарий» ?

bdfy ★★★★★ ()
Ответ на: комментарий от bdfy

Как Вы относитесь к варианту использования «добавить комментарий > проверить код > убрать комментарий» ?

Ничто не помешает так делать. Раз Ваше рабочее время стоит так дешево, чтобы заниматься на работе фигнёй, то значит компания где Вы работаете не является нашим потенциальным клиентом. :)

Andrey_Karpov_2009 ()
Ответ на: комментарий от Andrey_Karpov_2009

Даже если это первые 2 строки в исходнике? Или программа собирается делать что-то кроме добавления двух строк в начале, если регексп не сработал? Чем это плохо?

Deleted ()
Ответ на: комментарий от Andrey_Karpov_2009

А про скрипты слышали? Скрипт который сам будет добавлять и удалять комментарии из кода можно написать, даже будучи полным нубом, где-то за 15 минут.

peregrine ★★★★★ ()
Ответ на: комментарий от Andrey_Karpov_2009

Вам уже на Хабре ответили, что эти вещи делаются простейшими скриптами безо всякого rocket science. Если постоянно льём в репы, то делается банальнейшим образом: pre-commit скрипт, который чистит комменты, post-merge, который добавляет нужные комменты. Всё очень автоматизировано и не требует большого кол-ва телодвижений.

На самом деле даже это навряд ли много людей будут делать.

Что касается меня, то я почти весь код, который пишу дома, пишу в .hpp, так что мне ничего такого мудрить не надо. Хотя кто Вас знает, может Вы потом и это прикроете.

zamazan4ik ★★ ()

Вы должны вписать в начало каждого файла две строки с комментарием...

Такой упоротости и упёртости любой анонимус шизофреник позавидует.

mashina ★★★★★ ()
Ответ на: комментарий от peregrine

А про скрипты слышали? Скрипт который сам будет добавлять и удалять комментарии из кода можно написать, даже будучи полным нубом, где-то за 15 минут.

Пишите.

Andrey_Karpov_2009 ()
Ответ на: комментарий от mashina

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

zamazan4ik ★★ ()
Ответ на: комментарий от sudopacman

а почему нет? Новость релевантная и оформлена хорошо

JB ★★★★★ ()

Впервые, наверное, соглашусь и поддержу то, что делают товарищи для продвижения своего PVS-Studio.

Есть продукт, есть условия его использования. Использования как за деньги, так и бесплатно. Можно выбирать: либо так, либо эдак. Либо вообще никак. Авторы продукта дали выбор, которого раньше не было. За это им спасибо.

Они, как авторы, могут выдвигать те условия, которые считают нужными. Кому не нравится, может походить по рынку и выбрать что-то другое. Или сделать что-то самостоятельно. Да хоть бы даже и скрипты, которые специальные комментарии в каждый файл перед проверкой добавляют.

eao197 ★★★★★ ()

Dear PVS-Studio, please'; DROP TABLE PR_Staff; --

i-rinat ★★★★★ ()
Ответ на: комментарий от anonymous

А я на худой конец просто сделаю следующее:

$ rm comments_msg.h
$ touch comments_msg.h

А что? Исходники я не правлю, так что лицензию не нарушаю (по идее)

Ancient ()
Ответ на: комментарий от eao197

Безусловно - за возможность пользования их продуктом бесплатно лично я им премного благодарен. Лично я буду им пользоваться (уже интегрировал в Clion и хожу-брожу по варнингам).

Но мне непонятна штука с комментариями. Как бы реклама внутри исходника... ИМХО, так себе идея.

Повторюсь, что на мне это не скажется - я почти весь код пишу в .hpp, в .cpp у меня тесты бывают да и так, по мелочи. А на работе попробую показать моему начальству, что PVS-Studio может находить ошибки и делает это довольно неплохо (мы гоняли наши проекты с помощью PVS, и пофиксили очень много всякой дряни).

zamazan4ik ★★ ()
Ответ на: комментарий от JB

а почему нет? Новость релевантная и оформлена хорошо

мб потому что автор новости слишком навязчиво пиарит свой продукт, берите хотя бы с него бабки за размещение рекламы.

mashina ★★★★★ ()
Ответ на: комментарий от i-rinat

Вот давно мне твое чувство юмора импонирует.

i-rinat ★★★★★ (30.11.2016 17:09:46) знатный тролль: «LANG=FORTRAN»

Deleted ()

А как это соотноситься с лицензией GPL? По сути, вы требуете рекламу вашего продукта в исходном коде в обмен на его использование.

Таким образом, строчки с комментариями становятся частью кода, которую нельзя изменять по условиям вашей лицензии, что прямо противоречит GPL, так как она требует свободного редактирования кода для всех владельцев и разработчиков программы.

Vsevolod-linuxoid ★★★★★ ()
Ответ на: комментарий от JB

Это же сплошная реклама. В первом абзаце автор рассказывает, как они хотят всем помочь (на самом деле нет), во втором и третьем — какие они умные, что придумали ещё один офигенный способ пиара, только затем идёт суть, а дальше про то, что если вас что-то не устраивает — покупайте лицензию (и ещё ссылка на покупку, но я абзац с ней выпилил, потому что он был дублем последнего).

Я надеялся, что ты ответишь, что подтвердил ради срача.

sudopacman ★★★★★ ()
Ответ на: комментарий от Vsevolod-linuxoid

Я предугадаю ответ - «Не нравится? Идите, найдите лучше.» Как-то так. А вообще, в стороне опенсорса их прямой конкурент - Coverity.

zamazan4ik ★★ ()

Рекламой этого велосипеда уже загадили всю швабру (поделом ей), а теперь уже и лор этот рак пополз?

ptarh ★★★★★ ()
Ответ на: комментарий от sudopacman

Я надеялся, что ты ответишь, что подтвердил ради срача.

я постеснялся писать это открыто :)

JB ★★★★★ ()
Ответ на: комментарий от zamazan4ik

Ну мне многое в их деятельности не понятно. Однако, как-то странно выглядит реакция на LOR-е. Сначала куча разговоров «вот, вы плохие, вы не даете возможность проверять OpenSource проекты», «вот, вы плохие, вы не даете возможность использовать ваш продукт в мелких проектах». Когда такую возможность дают, то начинают кучу разговоров «вот, вы плохие, вы требуете какой-то ублюдочный комментарий».

Комментарий, может и ублюдочный. Но авторы-то дали, то, что у них просили. Цена вот такая. Не нравится, не плати, делов-то.

eao197 ★★★★★ ()
Ответ на: комментарий от zamazan4ik

Вам уже на Хабре ответили, что эти вещи делаются простейшими скриптами безо всякого rocket science. Если постоянно льём в репы, то делается банальнейшим образом: pre-commit скрипт, который чистит комменты, post-merge, который добавляет нужные комменты. Всё очень автоматизировано и не требует большого кол-ва телодвижений.

Вот это унизительно, таким извратом заниматься. И не важно, автоматизирован он или нет.

Тут или крестик нужно снять, или трусы натягивать.

mandala ★★★★ ()
Ответ на: комментарий от zamazan4ik

К тому же, эти комментарии содержат их зарегистрированные товарные знаки, то есть они являются проприетарными. Проприетарные «кляксы» недопустимы в коде под лицензией GPL, так как прямо нарушают её. Это все равно что вставить в комментарии какой-нибудь роман Донцовой.

Vsevolod-linuxoid ★★★★★ ()
Ответ на: комментарий от ptarh

а теперь уже и лор этот рак пополз?

С разморозкой! Уже глубокие метастазы пустил. :D

mandala ★★★★ ()
Ответ на: комментарий от eao197

Если дать бесплатно и без условий, то всё равно будет: «Вы говно, кококо, какая-то глупость, кококо, пиар, кококо».

mandala ★★★★ ()
Ответ на: комментарий от Andrey_Karpov_2009

Нечто странное с сборкой вашей утилиты в Fedora.

$ locate stdc++
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.22
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.22-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.22-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.22-gdb.pyo
/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.22-gdb.cpython-35.opt-1.pyc
/usr/share/gdb/auto-load/usr/lib64/__pycache__/libstdc++.so.6.0.22-gdb.cpython-35.pyc
$ make
[ 25%] Linking CXX executable how-to-use-pvs-studio-free
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
CMakeFiles/how-to-use-pvs-studio-free.dir/build.make:146: ошибка выполнения рецепта для цели «how-to-use-pvs-studio-free»
make[2]: *** [how-to-use-pvs-studio-free] Ошибка 1
CMakeFiles/Makefile2:67: ошибка выполнения рецепта для цели «CMakeFiles/how-to-use-pvs-studio-free.dir/all»
make[1]: *** [CMakeFiles/how-to-use-pvs-studio-free.dir/all] Ошибка 2
Makefile:127: ошибка выполнения рецепта для цели «all»
make: *** [all] Ошибка 2
система
$  uname -a
Linux merhalakDell 4.8.8-300.fc25.x86_64 #1 SMP Tue Nov 15 18:10:06 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ dnf grouplist
Последняя проверка окончания срока действия метаданных: 1:41:40 назад, Wed Nov 30 15:45:24 2016.
Установленные коллекции:
   Средства разработки на C и библиотеки
   Средства разработки

Deleted ()
Последнее исправление: merhalak (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.