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 ()
Последнее исправление: sudopacman (всего исправлений: 10)

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

Просто все стесняются признаться, что боятся блюющего единарога

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

GPL ... требует свободного редактирования кода

Мил человек, напомни, что будет, если GPL-ную лицензию из шапки вырезать?

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

Типичный (пост)совок. Считает что ему все должны и вечно недоволен.

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

Нарушение её. Правильнее будет: «требует свободного редактирования кода, кроме случаев её нарушения». Спасибо за комментарий, немного не дописал.

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

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

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

Таким образом, строчки с комментариями становятся частью кода,

Ух ты. Ты, часом, не юрист SCO? :-)

Aceler ★★★★★
()

Что-то не хочется из свободных людей в промоутеры (не сказать еще хужей (tm)) блюющих радугой единорогов...

gns ★★★★★
()

Хм. то есть можно просто добавить строчки перед проверкой, прогнать, а во всякий github постить без них. Надо попробовать. Добавить строчки - дело быстрое каким-нибудь перлом.

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

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

Там суть у текста другая. Явно указано, что проверяешь у себя, локально. А тут такого нет. Просто написано, что нужно комментарии вставить. Логично предположить, что они захотят как-то проверить эти комментарии, для чего код со вставками нужно либо послать им, либо опубликовать. Работать бесплатной рекламной площадкой хочется далеко не всем.

Публиковать новость в таком виде на сайте с агрессивным сообществом — либо идиотизм, либо троллинг.

i-rinat ★★★★★
()
Ответ на: комментарий от former_anonymous
Пакет libstdc++-devel-6.2.1-2.fc25.x86_64 уже установлен, пропуск.
/usr/bin/ld: cannot find -lstdc++
Deleted
()

Андрей, наймите уже маркетолога. Вы даже хорошие затеи превращаете в какой-то трешак-антирекламу. Посмотрите пример Travis CI, Coveralls и Coverity ― они делают свое дело так, что свободные проекты создают им отличную рекламу. Я, к примеру, с радостью вешаю плашку build:passing или coverage:86%, потому что это «ну круто же!».

Спасибо JB за отличный комментарий.

JB

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

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

Мсье Карпов сам написал такой текст, я только перевёл его «мы» в наше «они», чтобы текст не выглядел как написанный от лица администрации ЛОР-а.

Впрочем, текст новости всегда поменять можно.

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

Я знаю. Но вокруг этого куска сыра смутно проступают контуры мышеловки...

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

Vsevolod-linuxoid ★★★★★
()

Вы должны вписать в начало каждого файла две строки с комментарием (существует выбор из нескольких вариантов).

В норме файл должен начинаться с текста лицензии. Вопрос: допускается ли размещение строк про pvs *после* теста лицензии, но *до* первого не-комментария?

PS Тред не читал.

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

наймите уже маркетолога

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

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

Или я ошибаюсь?

А, так ты серьёзно. Текст комментария имени PVS Studio не меняет лицензию на исходный текст, ну вот вообще никак. Если я форкну GPL код и допишу в него //Здесь был Вася — это даже не будет производной работой.

Когда первые робкие попытки создания CVS дописывали в заголовок исходника всякую служебную информацию — это тоже не создавало проблем.

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

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

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

static char const pvs[] = «This is an independent project of an individual developer. Dear PVS-Studio, please check it.»;

:)

polozz
()

Таки ЛОР затрален :)

dk-
()

Долго думал, но всё же решил вставить свои 5 копеек. Для запуска вашего ПМС теперь не только надо проклянуть отсутствие документации, а ещё и накодить небольшую программку.

Использовать это ПМС надо так:

sh-4.2$ cat main.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
#include <stdio.h>

int main(void) {
  printf("hi\n");
  if (3==4);
      printf("hi again\n");
  return 0;
}
sh-4.2$ cat conv.c 
#include <stdio.h>

char conv[]={
#include "src/plog-converter/charmap_decode.h"
};

int main(void) {
  int ch,res;
  while (1) {
    res= read(0, &ch, 1);
    if (res>0) {printf("%c", conv[ch]);}
    if (res<=0) break;}
  return 0;
}
sh-4.2$ gcc -E main.c > main.i
sh-4.2$ gcc conv.c 
sh-4.2$ cat conf 

language=C
skip-cl-exe=yes
preprocessor=gcc
platform=linux64
analysis-mode=31
#analysis-mode=5
sh-4.2$ ./bin/pvs-studio --cfg conf --source-file main.c  | ./a.out
mVt Ykk9;Ufy9`Yfxut=Yxrk=xmVtgY +kx|vkx|vkik+e{9tiMSIISlQI>oSIi1oMdMWx=r9;S 
/home/asm/Projects/pvs/pvs-studio-6.11.20138.1-x86_64/main.c(7): error V112:
Dangerous magic number 4 used: if (3==4);. Level: 2
/home/asm/Projects/pvs/pvs-studio-6.11.20138.1-x86_64/main.c(7): error V529:
Odd semicolon ';' after 'if' operator. Level: 1
File processed successfully

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

Я не знаю, какого «маркетолога» ты имеешь ввиду

Хорошего маркетолога. Он, конечно, денег будет стоить.

Может хотя бы расскажет им о том, чего люди хотят, ибо судя по тому, что пишет их генеральный директор на хабре (EvgeniyRyzhkov) ― они в принципе не в курсе как работает CI от проектов вроде Travis CI на том же github, называя автоматический анализ pull request'ов ― (цитата) «мусорным спамом».

p.s. Что самое забавное, автору сообщения про автоматическую проверку на хабре поставили пару минусов. Там что, совсем идиоты теперь сидят?

Deleted
()

Лол, вам же 'не интересны одиночки'. Быстро переобулись

Лооол, ещё и комментарий в исходник? Да идите вы лесом

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

Продукт из таких же черезжопных решений состоит?

Вот это первый вопрос который мне пришел в голову.

ЗЫ. Второй вопрос который пришел в голову: а оно помеченные таким образом файлы не отсылает ли к вам?

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

Не противно такое писать?

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

#include <stdio.h>
#include <assert.h>

char conv[]={
#include "src/plog-converter/charmap_decode.h"
};

int main(void) {
  int ch,res;
  while (1) {
    res= read(0, &ch, 1);
    if (res>0) {printf("%c", conv[ch]);}
    else if (res<=0) break;
    else { assert(1==0); }}
  return 0;
}

Так лучше?

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

Мне идея понравилась, хоть я не подпадаю под программу.

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

Лооол, ещё и комментарий в исходник? Да идите вы лесом

Лоол! Еще и банер на сайт со статистикой? Да идите вы нафик!

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

на хабре поставили пару минусов. Там что, совсем идиоты теперь сидят?

когда-то было иначе? :) удивительно, что там иногда появляются хорошие статьи. Наверное, закон больших чисел.

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

там уже давно в открытую друг друга лобызают

Там кармодрочерство же и лобызание в крови.

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

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

MrClon ★★★★★
()

теперь-то Андрей, Вы понимаете, ЗА ЧТО Вас не любят на ЛОРе?! Или курсы маркетинга Вы закончили с отличием и Вам плевать?

А JB, зачем ты вообще это пропустил на глагне?

Kompilainenn ★★★★★
()

Нужны переводы комментариев на русский язык. Тут пробегают программисты, ратующие за комментарии в коде на ネイティブ言語.

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

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

А вот за такое можно и по морде получить.

Просто одно дело писать в n файлах вручную

bash? Нет, не слышал.

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

Ну дык, скрипт расставляющий коменты, скрипт удаляющий коменты.
Если процедура тестирования уже как-то автоматизирована, то вставить в неё не один дополнительный пункт (запуск PTV), а три — не проблема.

MrClon ★★★★★
()

Русский бизнес - бессмысленный и беспощадный!

Проверяли бы на лицензию GPL и все были бы рады. Но нет...

<Кашель Лаврова>...

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

Скрипт который сам будет добавлять

Так вы ж сами уже написали

и удалять комментарии

$ git checkout -- .

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

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