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

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

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

тролль

Так вот, значит, как это со стороны выглядит.

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

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

Как будто что-то плохое. Вон в соседней новости вообще мошенников и кидал рекламируют.

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

Это намекает только на то что хоть раз сборище хипсторов оказалось правее сборища фанатиков.

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

Вон в соседней новости вообще мошенников и кидал рекламируют.

Это про ЛинаксФормат штоль?

mandala ★★★★ ()

Не пропустите уникальную возможность стать клоуном у тридварасов!

buddhist ★★★★★ ()

Надо было вписать в требование лицензирования: пройти по красной площади с плакатом «Спасибо PVS за наше счастливое детство!», что мелочиться-то.

alpha ★★★★★ ()

Поздравляю с этим важным шагом вперёд! И надеюсь на скорейший следующий шаг, разрешить помещение этого комментария в пределах первого блока комментариев в файле. Т.к. самая первая строчка файла должна всё же описывать, что вообще в этом файле реализовано. Потом, под какой лицензией. Затем, если лицензия позволяет :) конечно же рекламный баннер PVS-студии.

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

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

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

Нет ничего хуже, когда программа сама правит твой код.

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

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

А что мешает после проверки исправить найденные анализатором ошибки а комментарии удалить?

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

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

Добавьте в код комментрии и используйте.

Если это невозможно, то можно использовать демонстрационную версию или запросить через почту ключ на неделю. Или купить.

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

В России непрецедентное право, если что.

4.2

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

Другое дело, что все прецеденты по делу SCO на российскую правовую систему влияют немногим менее чем с нулевым воздействием.

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

Что, никто не хочет брать ваш продукт, да?

Берут и продлевают. Мы в свою очередь растём и совершенствуем продукт. Например, следующая версия будет искать утечки памяти. Хорошо в статическом анализаторе это сделать невозможно, но постараемся на сколько получится.

И денег на рекламу тоже нет?

Есть. Но обыкновенная реклама для программистов почти не работает.

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

Но вообще правильной дорогой идёте, сами-то ожидали года три назад, что выпустите бесплатную версию под линукс?

Дело не в ожиданиях, а в возможностях что-то делать и не закрыться из-за истощения ресурсов.

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

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

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

А что мешает после проверки исправить найденные анализатором ошибки а комментарии удалить?

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

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

в настоящей компании

ещё настоящих мужиков не хватает. А XMind - прекрасный продукт, несмотря ни на что

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

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

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

Вы там с маркетологами своими поизучайте опыт sourceforge и куда он их привел.

А то рассказывать, как и что будут и не будут делать «настоящие компании», это вы научились, но с уровня мигающих кислотных баннеров не ушли.

Даже просто заменив фразу на простое «Verified by PVS-Studio» уже на десяток ступенек бы поднялись. Ещё на 50 - это если бы ограничились README, License и/или CONTRIBUTION.

С тем, что сейчас, к «настоящим компаниям» вообще-то стыдно идти.

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

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

На самом деле коммент JB прямиком из манямирка. Он же вроде в МТС работает. Как там, куда за халявой подойти? И МТС так-то не обеднеет, а эти ребята существуют исключительно за счёт пивас-студио, и мне кажется, что подобное по сути ни к чему не обязывающее условие - вполне разумная и посильная помощь проекту за право бесплатного использования.

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

Так-то нет, не в МТС. У твоего информатора устаревшие данные.

BTW, я искренне считаю, что портить ВЕСЬ код проекта своей рекламой - это свинство, а не «бесплатная версия». Но вброс неплохой получился.

P.S.: Я, наверное, слишком дремучий, но что за «манямирки» такие?

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

Когда хочешь сделать доброе дело - не надо трындеть об этом на всех переулках.

Это не всегда верно. Например если ты «трындишь» что ты благотворитель, то другие люди могут взять с тебя пример. А это хорошо.

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

zgen ★★★★★ ()

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

Единственное, конечно - автор таки умудрился подать своё предложение таким образом, что по сравнению с тем же Coverity Scan оно выглядит... э... не слишком выигрышным. Но это, видимо, особенность автора, умеющего любую стоящую идею завернуть в троллинговую оболочку.

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

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

Так-то нет, не в МТС. У твоего информатора устаревшие данные.

Эх, ну ладно. Пусть не МТС, не суть важно. Многие ли компании бесплатно раздают свои продукты или услуги, да ещё и ничего не прося взамен?

BTW, я искренне считаю, что портить ВЕСЬ код проекта своей рекламой - это свинство, а не «бесплатная версия».

В шапке исходника всё равно куча бесполезного сранья типа лицензии, которую никто никогда не читает.

P.S.: Я, наверное, слишком дремучий, но что за «манямирки» такие?

«Часто Маня уносилась мечтами к несбыточной жизни, полной роскоши и богатства…»
Проще говоря - внутренний мир поциента, не пересекающийся с реальностью.

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

В шапке исходника всё равно куча бесполезного сранья типа лицензии, которую никто никогда не читает.

Тем более, если это сраньё можно свернуть автоматически в любом современном редакторе и больше не видеть. Но если бы авторы убрали пассаж с «Dear PVS...» - было бы чуточку лучше.

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

Многие ли компании бесплатно раздают свои продукты или услуги, да ещё и ничего не прося взамен?

ничего не прося взамен

Эм...

В шапке исходника всё равно куча бесполезного сранья типа лицензии, которую никто никогда не читает.

Даже если и не читают - это не повод превращать шапку в отстойник.

Проще говоря - внутренний мир поциента, не пересекающийся с реальностью.

Спасибо за разъяснение.

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

Эм...

Ну что эмм? Ещё раз подчеркну - это их единственный продукт. Какой-нибудь Интел может коммитить в опенсорс, потому что у них бизнес не на этом построен. И даже несмотря на это интеловский компилятор закрытый.
Вот лично ты/твой работодатель раздаёт бесплатно свои продукты/услуги?

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

Лови наркомана!

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

Идём в репу дядюшки Линуса. Вот здесьчуть ниже упоминания GPLv2 находим страшное слово Adaptec, здесь - Samsung, а вот тут... о боже... нет... Apple!

Срочно пиши в FSF, что Линус нарушает GPL в не менее чем полусотне мест своего кода!

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

Ну что эмм? Ещё раз подчеркну - это их единственный продукт.

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

Вот лично ты/твой работодатель раздаёт бесплатно свои продукты/услуги?

Я - иногда. А работодатель у меня тот, от которого ушёл JВ. Тут не просвещу, ибо не в курсе.

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

Я - иногда.

Я не имею ввиду твоё хобби. Именно работу, бизнес - то, чем ты на жизнь зарабатываешь.

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

Я не говорил что ничего. К тому же, как справедливо заметили выше, эту срамоту можно свернуть и не видеть.

inchallah ()

Я бы убрал пассаж про «Dear PVS-Studio». Выглядит смешно и нелепо. Тем более, что «PVS-Studio» упоминается на следующей строчке

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

эту срамоту можно свернуть и не видеть

ещё можно обвешать свой бложик порнобаннерами, включить себе adblock и наслаждаться

alpha ★★★★★ ()

Не уверен на счет своего английского, но мне кажется, что артикли должны быть такими здесь (поменять второй a на the):

This is an independent project of the individual developer

Потому как individual developer вполне определенный. Эмигранты, плиз поправьте меня

dave ★★★★★ ()

Лайфхак

Делаем форк проекта, в котором добавляем рекламные строчки, и проверяем проект. Изменения вносить в основной проект, второстепенный просто мерджить.

И овцы сыты, и волки целы.

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

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

Первое, что попалось.

Странно, что об этом не предупредил C++-компилятор (хотя с тем, как это ужасно выглядит в C++, сложно смириться):

-		stream.read((char *)ptr, size);
+		stream.read(reinterpret_cast<char *>(ptr), size);

--------------------

man 2 read

NAME
       read - read from a file descriptor

SYNOPSIS
       #include <unistd.h>

       ssize_t read(int fd, void *buf, size_t count);
То ли man устарел, то ли PVS-Studio прям как Шапокляк «хорошими дела^W советами прославиться нельзя»:
-			ssize_t rd = read(fd, buf, dataToRead);
+			int64_t rd = read(fd, buf, dataToRead);
А, может, если PVS-Studio видит free в заголовке, она переходит в режим русской рулетки: наравне с корректными советами начинает рандомом выдавать их инверсию?

А вот если бы заголовок содержал не сомнительное «Dear...», а информативное «я согласен, что при возникновении вопросов к работе программы, я обязуюсь не изливать свои претензии на форумах, дабы не порочить имя разработчиков, предоставивших мне безвозмездно право пользоваться их творением, а вместо этого кратко и конструктивно изложить их по email адресу ... (или, ещё лучше, на специально организованном форуме, где можно обсуждать противоречивые сообщения об ошибках)», то разработчики смогли бы реализовать ранее высказанное желание, не создавать себе на ровном месте из-за раздачи бесплатного продукта антирекламу. Разумеется, вышеприведенную формулировку на деле следует реализовать спокойно и не драматично.

gag ★★★★★ ()

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

Как же низко вы пали.

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

Я не имею ввиду твоё хобби. Именно работу, бизнес - то, чем ты на жизнь зарабатываешь.

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

Я не говорил что ничего.

Лучше бы говорил. Так как сейчас с тобой нужно спорить аргументированно, а мне всё больше и больше становится лень это делать.

К тому же, как справедливо заметили выше, эту срамоту можно свернуть и не видеть.

Да-да, а клеймо в виде лилии можно прикрыть одеждой.

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

а в чем странность? все дэпэндэнси поставил? там их список есть?

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

Браво. Я вот уже давно хотел сравнить их продукт с Coverity и даже спрашивал про такие лицензии, но они молодцы - теперь не хочу.

o- ()
Ответ на: комментарий от alpha

Даже просто заменив фразу на простое «Verified by PVS-Studio» уже на десяток ступенек бы поднялись.

Не поможет. Каждая обезьяна на ЛОРе обязательно скажет «Фууу».

Ещё на 50 - это если бы ограничились README, License и/или CONTRIBUTION.

И это не поможет, обезьяны опять скажут «Фууу».

andreyu ★★★★★ ()
Ответ на: Re: Так-так-так! от gag
// 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 <stdio.h>
#include <stdlib.h>
#include <sstream>
#include <stdexcept>
#include "../types/PhantomQuilt.h"
#include <unistd.h>
#include <memory>

Заголовочные файлы вперемешку C/C++.

Не исправляйте найденные «ошибки», а лучше просто занесите их в документацию, иначе рискуете внести новые, неизвестные (c):

-	ssize_t readToBuffer(int fd, char *buf, size_t count) {
-		ssize_t dataToRead = count;
+	uint32_t readToBuffer(int fd, char *buf, uint32_t count) {
+		int64_t dataToRead = count;
Получилось:
	uint32_t readToBuffer(int fd, char *buf, uint32_t count) {
		int64_t dataToRead = count;

		while(dataToRead) {
			int64_t rd = read(fd, buf, dataToRead);
			if (rd < 0)
				return (rd);
			if (0 == rd)
				throw std::underflow_error("Stream is empty");
			dataToRead-=rd;
			buf+=rd;
		}

		return (count);
}
Функция возвращает теперь беззнаковый uint32_t вместо знакового ssize_t (согласно man), но в случае ошибки всё будет выглядеть так, как будто фунцкия прочитала 2 GB инфы: if (rd < 0) return (rd);. Хотя задумывалось, что она может вернуть или ошибку или именно столько прочитанных байт, сколько заказывали. (Не говоря уже о том, что лучше бы это всё было просто написано на C, потому что фактически оно на нём и написано.)

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

что по сравнению с тем же Coverity Scan оно выглядит... э... не слишком выигрышным.

Coverity позволит бесплатно проверить проект с закрытым кодом?

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

Каждый сам выбирает аудиторию для которой пишет.

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

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

hobbit ★★★★★ ()
Ответ на: Re: Так-так-так! от gag

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

Странно, что об этом не предупредил C++-компилятор (хотя с тем, как это ужасно выглядит в C++, сложно смириться):

Ну вот зачем понесло в диагностики, сделанные на заказ...? Ведь мы не зла желаем, колгда настоятельно рекомендуем начать с диагностик GA первого и второго уровня. Нет ведь... Выкрутят всё на максимум, а потом удивляются обильности малополезных сообщений. Эх.

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