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

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

Ответ на: комментарий от dhameoelin

Так что с «бесплатно» и «ничего не требуя взамен» ты не прав.

Уродуют исходники васи пупкины, а не комментарии.

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

P.S. Кстати, Coverity Scan умеет интегрироваться с Travis CI, а ваш вариант?

Только если Travis CI добавит во все http-ответы хидер X-PVS-Studio-Please-Check-My-Project: vivа64.cоm

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

Я имел в виду, конечно же, «для опенсорсных проектов».

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

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

Но сабж подходит и для закрытых проектов

Пожалуйста, не забывайте добавлять static char const pvs[] = «This is an independent project of an individual developer. Dear PVS-Studio, please check it.» ;-)

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

И в чём список dependency, когда говорит, что не может найти libstdc++, libmath, libc*? Кстати, а что за библиотека подключается с помощью -lc?

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

Если уж на то пошло, заставили добавить какой-то pvs-license.metadata в верхушку каталога с вот этой лапшой, просто один файл - и проблем не было бы

Почитай их обоснование, почему они сделали так. Там идея такая, что коммерсанты всякую фигню в исходный код пихать не станут, а если станут, то пусть пользуются пивас-студией бесплатно. Видимо, одного файла pvs-license.metadata им показалось не достаточно.

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

Шикарная ветка, надо в топ-пост добавить:

Вот, допустим, человек разрабатывал-разрабатывал код, честно ставил в начале каждого файла ваш комментарий. Заказчик видит, говорит: «Убери.» Должен ли он сказать в ответ твёрдое и решительное «Нетъ!», или же допустимо убрать комментарий, но перестать пользоваться бесплатной версией PVS-Studio для этого проекта? А когда интенсивная фаза разработки, в целом, закончена, и код выкинут на кладбище передан заказчику, который вообще не слышал ни о каком PVS-Studio — этот заказчик имеет право убрать комментарий? А если заказчик что-то ещё сам дописал и хочет от изначального разработчика неких доработок — должен ли тот добавить комментарий обратно?

SvyatoslavMC 30 ноября 2016 в 12:10 +3 Ответ прост: если возникают сложности с бесплатной лицензией, значит лицензия не подходит для данного проекта.

LoadRunner 30 ноября 2016 в 12:49 –1

Стоит ли это понимать, как: «Пользуетесь PVS-Studio — вставляйте комментарии. Перестали пользоваться — можно удалить.»?

SvyatoslavMC 30 ноября 2016 в 12:51 +2

Это стоит понимать как сложности :D

Собственно это отменяет возможность использования этих с позволения сказать лицензий в принципе.

alpha ★★★★★ ()

Ну вроде норм. В исходниках ядра полно говна в шапке, например. Вот только dear pvs studio please check it это как-то не очень выглядит. Сразу отторжение возникает.

А еще было бы лучше, если бы в Travis ci это дело засунули без всяких извращений с комментами, чай 21 век уже.

И JB все правильно сказал, да.

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

Почитай их обоснование, почему они сделали так. Там идея такая, что коммерсанты всякую фигню в исходный код пихать не станут, а если станут, то пусть пользуются пивас-студией бесплатно. Видимо, одного файла pvs-license.metadata им показалось не достаточно.

Именно так.

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

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

А как потом проверите, что в коде оно действительно есть?

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

Там идея такая, что коммерсанты всякую фигню в исходный код пихать не станут

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

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

Романо-германская правовая система (которая действует и в рамках российского законодательства тоже) в значительной части случаев опирается на прецеденты аналогично англо-саксонской правовой системе в тех случаях, когда в законодательстве нет необходимой правовой нормы, а также нет соответствующего комментария Верховного суда, в рамках которых можно было бы рассматривать данный юридический казус. Также на российскую судебную систему распространяются прецеденты, порожденные международными судами, юрисдикция которых признана и действует на территории РФ в соответствии с российским законодательством (ЕСПЧ, закреплено конституцией РФ). И в конечном итоге, комментарии пленумов Верховного суда РФ по различным аспектам правоприменения также имеют рудиментарные признаки прецедентного права, так как не являются ни одним из видов правового акта, но тем не менее, определяют практику принятия судебных решений по соответствующим вопросам.

Это называется непрецедентное право, я так и написал. Рудиментарные признаки переценднтного права и взаимодействие с международно-правовой системой не в счёт. Особенно в данном случае.

Aceler ★★★★★ ()
Ответ на: Так-так-так! от EXL

Re: Так-так-так!

Так-так-так!
Начинаем отслеживание!

И кто тут теперь плохой маркетолог...

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

Так что с «бесплатно» и «ничего не требуя взамен» ты не прав.

«Бесплатно» - значит не за деньги.

chimera19 ()

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

Довели людей, теперь бесплатную лицензию предоставляют.

Да, и что плохого в том, чтобы оставить последующим разработчикам информацию о том, с помощью каких инструментов проводилась отладка?

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 1)

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

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

Это своего рода плата за возможность бесплатного использования PVS-Studio.

плата за возможность бесплатного использования

Если честно, я до это момента был весьма неплохого мнения о PVS-Studio. Но за счёт этой новости оно изменилось в худшую сторону.

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

Где логика? Во-первых, как наличие той новости оправдывает наличие этой? Во-вторых, где я выражал своё отношение к новости про журнал?

sudopacman ★★★★★ ()

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

c, c++, free, opensource, pvs-studio

Комментарии для открытых бесплатных проектов:

// This is an open source non-commercial project. Dear PVS-Studio, please check it.

Как же, блядь, задрала эта пионерия, не отличающия свободное от бесплатного и open source от free software.

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

Да, и что плохого в том, чтобы оставить последующим разработчикам информацию о том, с помощью каких инструментов проводилась отладка?

Ничего плохого. Обычно информация об этом идет в лог коммитов вместе с фиксами багов которые тот или иной инструмент помог найти.

А вот если каждый сервис / софт который используется при разработке захочет строчку о себе в каждом исходике будет не очень хорошо. Поэтому лучше никакой софт с такими странным требованиями не использовать, а то мало ли.

o- ()

Могу ли я опустить слово «Dear» в комментарии для индивидуальных разработчиков? Готов добавить этот комментарий, но без слова «Dear».

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

// This is an open source non-commercial project. Dear PVS-Studio, please check it.

Как же, блядь, задрала эта пионерия, не отличающия свободное от бесплатного и open source от free software.

Мы всё отлично понимаем. И написали ровно то, что хотели написать.

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

Могу ли я опустить слово «Dear» в комментарии для индивидуальных разработчиков? Готов добавить этот комментарий, но без слова «Dear».

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

Andrey_Karpov_2009 ()

Хм, выглядит весьма сомнительно, учитывая что:

1. Coverity Scan этого не требует

2. Так и не увидел ни от авторов, ни просто от пользователей адекватного сравнения сабжа с Coverity/PureSpace на реальных задачах.

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

Andrey_Karpov_2009, ткните на и/или сделайте пожалуйста сравнение с PureSpace/Coverity, потому как на данный момент совершенно не ясно, почему пользователь вместо вышеуказанных анализаторов должен выбирать PVS-Studio. Причем желательно не брать цену в расчет. Интересует именно качество анализа/классы ошибок, которые находят/не находят оные.

ncrmnt ★★★★★ ()

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

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

Andrey_Karpov_2009, ткните на и/или сделайте пожалуйста сравнение с PureSpace/Coverity, потому как на данный момент совершенно не ясно, почему пользователь вместо вышеуказанных анализаторов должен выбирать PVS-Studio. Причем желательно не брать цену в расчет. Интересует именно качество анализа/классы ошибок, которые находят/не находят оные.

Нет такого сравнения. Есть статьи, где мы после Coverity находим ошибки. Взять хоть ту-же статью GCC. А по цене, мы в несколько раз дешевле и занимаем среднюю ценовую нишу.

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

2. Так и не увидел ни от авторов, ни просто от пользователей адекватного сравнения сабжа с Coverity/PureSpace на реальных задачах.

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

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

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

пока только так

Ok, спасибо за ответ

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

/me ушёл думать каким образом

imul ★★★★★ ()
Ответ на: Лайфхак от anonymous00

Re: Лайфхак

Кому-то-таки пришла та же мысль что и мне. А в форке можно скриптом удалять комментарии.

octy ★★ ()

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

Бред. Разработчики PVS-Studio хотят увеличить количество проданных лицензий. О своём настоящем отношении к опенсорсу они не раз ясно давали понять.

Gentooshnik ★★ ()
Ответ на: Re: Лайфхак от octy

Зачем? Оставляем форк как есть на своем локалхосте.

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

это не повод превращать шапку в отстойник.

чем это хуже копии лицензии в каждом файле вместо одного файла с лицензией?

f1u77y ★★★ ()
Ответ на: Re: Лайфхак от octy

На хабре были ещё идеи сделать через git-hook, чтобы автоматически добавлять и удалять комментарии.

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

Да, и что плохого в том, чтобы оставить последующим разработчикам информацию о том, с помощью каких инструментов проводилась отладка?

Если уже в комментарий каждого исходника помещать информацию о вспомогательных средствах, так только во вменяемом и информативном виде (можно ориентироваться по тому, как в RCS, CVS, SVN принято оформлять служебную инфу).

А плохого совсем ничего, даже хорошо: ведь те, кто исправляют баги, выловленные clang-analyzer и coverity, так сами об этом и пишут, хотя от них это даже никто не требовал, но как же не упомянуть программку, которая так помогает, вот. А с pvs для тех, кому такая форма комментария не подходит, но и в группу потенциальных клиентов они не попадают, получается что придётся, борясь с совестью, ограничиться скромным cleanup/fixups вместо bug fixes found by PVS-Studio. Кстати, упоминание pvs в коммите, где сразу видно, какие именно ошибки были исправлены с помощью pvs, мне кажется является самой информативной рекламой для потенциальных будущих клиентов, чем статическая фраза в исходниках и обычные коммиты fixups, по которым эффекта от pvs не будет видно. Т.е. потенциальные клиенты лишаются фактических аргументов для своих работодателей, так как нет очевидных доказательств, что вот именно эти баг фиксы сделаны, скорее всего, благодаря pvs, а вот эти - не похоже. Так что pvs на данный момент молодцы, что реализовали эту фичу, и остаётся надеяться, что они как можно скорее выпустят для неё баг-фикс, который, мог бы сделать фичу действительно обоюдовыгодной.

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

чем это хуже копии лицензии в каждом файле вместо одного файла с лицензией?

Копия всей лицензии в каждом файле, если она идентична, сомнительно необходима. И если в тексте надо поменять пару слов, то делать огромный коммит, который изменяет все файлы, это лишняя работа и только засоряет историю. А альтернативное решение с 3-мя короткими строчками о типе лицензии и с отсылом на один файл в корне проекта применяется, например, в Go:

// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
И список авторов тоже собран в одном файле (а в другом участвующих). А если возникнет вопрос, кому какой код принадлежит, так для этого есть история коммитов. Вместо кучи копирайтов-годов-фамилий-одних-и-прочих-причастных, которые всё равно без толку, как только приходится разобраться, кто решает, если необходимо что-то поменять в лицензии.

Было бы не плохо, если FSF последовала этому примеру.

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

Да, и что плохого в том, чтобы оставить последующим разработчикам информацию о том, с помощью каких

Если это новый проект, или свеженачатый форк, то да. Инди-проект с тремя разработчиками тоже норм переживет. Ничего плохого. Только выгода.

А на живом большом проекте, это может быть черевато.

Jedi-to-be ★★★★ ()
Последнее исправление: Jedi-to-be (всего исправлений: 1)

А-ха-ха, просто гении маркетинга! На что эти идиоты рассчитывают? Coverity проверяет открытые проекты бесплатно и без идиотских условий.

zabbal ★★ ()

Я сделал сравнение одного своего проекта качеством чуть ниже среднего, который уже есть в https://scan.coverity.com/. Для этого, скопировал исходники в отдельную папку, запустил там скрипт

#!/bin/bash

find . -iname \*.cpp | while read f; 
do
  sed -i '1 i // 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' "$f"
done
Далее скачал и распаковал в отдельную папку PVS, прописал туда PATH, сделал анализ, как написано тут:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=On ../
~/pvs/pvs-studio-6.11.20138.1-x86_64/bin/pvs-studio-analyzer analyze -o pvs.log -j 2
plog-converter -a GA:1,2,3 -t tasklist -o report.tasks pvs.log
Удалил временную папку с исходниками.

По результату проверки моего проекта PVS не впечатлил, вряд ли от него будет польза сверх того, что выдаст Coverity Scan. В report.tasks заметно меньше полезных сообщений и заметно больше мусора по сравнению с Coverity. С другой стороны, теперь PVS можно использовать для любых проектов, достаточно во временной папке добавить лицензию, а у результирующего отчета уменьшить номера строк на 2.

chimera19 ()

Здесь правильно написали, что нужна возможность получить OpenSource лицензию не загаживая код дибильными рекламными вставками, а например разместив код кнопки типа Suppurted by PVS-Studio в readme.md проекта. Это и выглядело бы прилично, и с точки зрения здравого смысла приемлемо для обоих сторон.

Но так гемороиться как предлагается в топике, даже с учетом автоматизации гемор-процесса — нет уж, увольте.

Xintrea ★★★★★ ()
Ответ на: Лайфхак от anonymous00

Просто хак.

Открутить идой минут за 15 эту проверку к чертям и положить на этих маркетолухов с прибором, но на самом деле о них такое мерзкое впечвтление складывается, что даже руки марать не приятно будет.

invy ★★★★★ ()

Создаём открытый проект, выкладываем альфу, отлаживаем бету используя халявную лицензию анализатора и закрываем проект - профит!

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

Вообще пушка!

Но таки подтвердил, без вопросов!

Напомню, что на то, что контора нарушает GPL (glibc) товарищ ничего внятного в прошлом треде так и не ответил. Объектных файлов вместе с дистрибутивом не видно до сих пор.

Как это понимать, может теперь и варез разрешен?

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

Подтвердил, вроде бы, новость, но так, чтобы автор не оценил! Брависсимо!

Bagrov ★★★★ ()

Что-то вы совсем загнули с платой комментариями. Нет, спасибо.

Deleted ()

Как вы будете отслеживать применение?

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

newprikolist ()
Ответ на: Вообще пушка! от TheAnonymous

Видел ответ на это раза три. Смотреть надо лучше?

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