Pull to refresh

Comments 150

Вы вообще прикольные и очень нескромные. Обычно требуют повесить плашку на главной странице (aka README.md) об использовании такого-то продукта на безвозмездной основе. А вам вставку рекламы во все исходники подавай. Потому и "пока на GitHub не так много людей, использующих PVS-Studio".

Ну, да, лично мне вариант с пометкой всех сорцов подходит полностью. Но у меня и кода немного (хобби, связанное с микроконтроллерами). Я радуюсь принципиальной возможности использовать такой инструмент бесплатно, для меня си — непаханое минное поле, шаг влево — UB и расстрел на месте.
Вот именно, тоже самое им написал когда мне прилетел спам от их. Более того, указав на то что данные комментарии в коде дискредитируют проект в целом мне был дан ответ, что-то вроде: хорошо, мы вас поняли, это подойдет для студентов… но зачем тогда столько усилий на продвижение этого «бесплатного» метода если он подойдет только для студентов?! Ранее были статьи о том как сложно заработать деньги в этой сфере и какие шаги делаются для их зарабатывания. Как-то это нелогично.

Конечно, мы не можем знать, быть может деньги это как-то привлекает, через такую вот рекламу. Пока всё это выглядит крайне «высокомерно» со стороны создателей, вроде, нужного/правильного софта.
UFO just landed and posted this here

У разных компаний разный подход. Кто-то просит их упоминать в индивидуальном порядке (в блогах/твиттере), кто-то хочет плашку (что может быть уже неприемлемо для некоторых организаций курирующих open source проекты типа ASF, Eclipse).


PVS-Studio вот хочет комментарий до информации о лицензии (в первых двух строках), да и ещё с довольно странным текстом. Ну и условия использования таковы, что для большинства не-хобби open source проектов это будет blocker'ом.

Вот про «до информации о лицензии» согласен. Было бы условие вида «до первой строки кода» и/или «в первых 20-30 строках» — было бы разумнее. В общем, на этом этапе я от идеи интеграции в свой проект отказался — не готов сдвигать информацию о лицензии.

Т.е пихать в каждый файл малополезный, даже более того, засоряющий, текст лицензии вы готовы (и почему не устраивает отдельный файл с лицензией в репозитории?), а полезный маркер — нет? А не объясните, чем так мегаполезны эти 20-30 строк в каждом файле, что за них удавиться готовы (а ведь их еще каждый год обновлять нужно, ведь как же так, а вдруг новый год, а у нас лицензия на него не распространяется? А вдруг украдут?!!)?

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

На разные файлы может быть разная лицензия, у них могут разные авторы и истории. И явное указание лицензии в файле (причем в случае, скажем, Apache License v2.0 и GPLv3 там только ссылка на лицензию) позволяет другим проектам делать производную работу не по всему проекту, а по его подмножеству.


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

Там указывается inception year, а не current year. И это год (или диапазон) от которого считается срок действия имущественным прав на код. Как минимум, в US это так. Disclaimer: IANAL.

На разные файлы может быть разная лицензия,

Это как-то мешает указать "См. текст лицензии в файле LICENSE.mit" или "LICENSE.lgpl" и т.п.? Зачем весь текст именно в каждый файл писать?


Там указывается inception year, а не current year.

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

Это как-то мешает указать "См. текст лицензии в файле LICENSE.mit" или "LICENSE.lgpl" и т.п.? Зачем весь текст именно в каждый файл писать?

Примерно это там и указывается во всех нормальных лицензиях. Совсем мелкие (2/3-clause BSD, MIT, ISC и тому подобные) здесь скорее исключение.


Это как-то мешает указать "См. текст лицензии в файле LICENSE.mit" или "LICENSE.lgpl" и т.п.? Зачем весь текст именно в каждый файл писать?

Вы вообще читали, что я написал? От указанного диапазона отсчитываются 70/90/120 лет на которые распространяется copyright. Многие там указывают только один год (когда код написан), этого вполне достаточно. Изменять после этого его не нужно, это не год последней модификации. Если были существенные изменения, то могут указывать диапазон, в котором начало не меняется (год когда код написан), а конец соответствует текущему году, когда эта тяжелая модификация была сделана.

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

Я бы сказал, что во многих случаях это просто карго-культ, в значительной части случаев — американский и европейский рынок. У нас ещё настолько не устроились, определение свободных лицензий-то в ч. 4 ГК РФ относительно недавно.

UFO just landed and posted this here

Объясняю. Для получения какой-то пользы от статического анализатора, его надо гонять чуть ли не на каждый билд на CI-сервере. Соотвветственно, эти комментарии в коде необходимо держать на постоянной основе. Выдавать им индексируемую гуглом рекламу в 2300 исходных файлов на проекте на гитхабе с 190 форками и 2000 звёздочек я лично не собираюсь, это превышает пользу, которую проект может потенциально извлечь из их чудо-анализатора. Соответственно, когда будет стоять выбор "какой анализатор использовать", я выберу их конкурента, которому достаточно плашки.


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


Как-то вот так.

UFO just landed and posted this here
Напишите, пожалуйста, есть ли у вас большие открытые проекты которыми пользуются люди и в который вы вставили эти строки, комментари в каждый файл?

К чему это я?, а к тому, чтобы понять вы пишете предметно или о «своей» теории.

У меня есть проект которым пользуются люди и который я развиваю, продвигаю проект написанием статей и прочим. Конкретно ко мне приходили в почту люди от указанной выше фирмы и предлагали вставить комментарии в каждый файл в проекте, в 200+ файлов. Грубо говоря, посланы они были вежливо ровно так же как описывает kekekeks
Выгода от вставки этих комментариев не покрывает нанесенный ущерб репутации проекта, дискредитации проекта.

Иначе говоря, ребята сильно переоценили свою значимость. После переписки с указанной выше компанией я пошел поглядеть кто есть на этом рынке ещё. В итоге, повесил себе плашку Coverity и успешно проверяю проект. И я не один такой, после вот такого «пиара» знаю людей которые сделали то же самое. То есть, они ничего не использовали для анализа кода, но вот почему-то взяли и ушли к конкурентам.

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

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

UFO just landed and posted this here
На вопросы вы не отвечаете, но ждёте чтобы на ваши ответили. Ну ладно, один раз это прокатит.

Скажу за свой проект. Подобные просьбы вставок в каждый файл рекламы в проект который позиционирует себя как серьезный проект недопустимы, проект, который позиционирует себя как встраиваемое решение с прозрачным намеком на то, что разработчики проекта знают и понимаю, что делают, а тут батц и просьба:
«Пожалуйста, проверьте мой проект, а то мы тут как-то разобраться не можем...»

При этом, комментарий настолько дебильный и рекламный, именно дебильный и рекламный, что не в какие ворота не лезит. Более нагло было бы написать ещё: Теперь проект принадлежит компании… Выглядит это как вмешательство в проект.

Я не уверен, но если бы это была последняя строчка комментария в файле, вроде:
/* Checked with PVS Studio (link) */, но и то, и то разместить такое не каждый сможет.

Когда весит плашка, где-то в реадми то люди с гордостью говорят: а этот проект проверяется Х софтиной, отлично. Но PVS Studio не имеет такого «авторитета», как скажем, Coverity.

Простите, написал бы более развернуто, но вынужден откланяться, выходные.
UFO just landed and posted this here

Во-первых, я пишу лично от себя, как я это вижу имея какой-то проект. Не в теории.
Меня кажется, вы не понимаете, что опенсорс денег выедает не мало, это такой же бизнес, там свои законы и свои методы заработка. Я не перехожу на личности и не пытаюсь оценивать вас или кого либо из разработчиков. Я высказываю почему это плохо для меня, более того и для многих разработчиков которых я знаю, но тут я могу писать только за себя.
Тут не действует метод «назло бабушке уши отморожу», тут конкретно речь о том что создатели хотят пиарится за счёт открытых проектов. Создателям софта говорят, что мы тоже тратим деньги/время и их просьба должна быть соизмерима. Но вы и прочие уверены, что если опенсорс, то там все бесплатно и вообще, должны ещё спасибо вам говорить. Нет, мир там немного сложнее.

Не считая того, что их предложение не для open-source, а для некоммерческих проектов. Т.е. Linux, Apache HTTP server, nginx, openssl, xorg, libreoffice и безумное количество других не подходят под из предложение (даже не из-за положения или текста комментария, а т.к. они не являются некоммерческими). А в их проверке есть польза всем.

UFO just landed and posted this here

Ещё раз, я не теоретик, я практик. Даю обратку ребятам разрабатывающим нужный/правильный софт. Они мне сами написали, не я к ним лез. Я рассказал почему оно не для меня. Если им интересно только положительное мнение то что же, но вот реальный проект который хотел бы использовать их продукт, но условия дикие. Вы, теории можете разводить тут сколько вам угодно, я же пишу предметно.

UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
но дело в том что github изначально бесплатный продукт, gcc вообще свободный, тут-же чисто комерческий продукт, можно даже сказать что b2b, и тут за две гребаные строки в твоих сорсах они дают возможность юзать сей продукт совершенно бесплатно
UFO just landed and posted this here
я студент, для меня бесплатный. Еще раз, pvs изначально даже просто кодерам продовать не собирался.
UFO just landed and posted this here

Ну так не пишите, никто же не заставляет. Захотите воспользоваться без написания этих строчек — купите лицензию. Тем более, если он так вам помогает, что прям никуда без него.

То есть, они ничего не использовали для анализа кода, но вот почему-то взяли и ушли к конкурентам.

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


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

В том то и дело, что ЧСВ у разработчиков софта хлещет. Ваш комментарий можно развернуть и в обратную сторону. А что, у разработчиков софтины настолько ЧСВ завешен что они не могут выложить исходники своего софта в открытый доступ? И так мы долго можем продолжать.

Понимаете, с одной стороны коммерческая компания, которая продает свой продукт и по собственному желанию разрешает использовать его всем бесплатно. С другой стороны — проект, в который по определению силы вкладывают добровольно и даже если это делает коммерческая компания, никто ее под дулом пистолета не заставляет этого делать.


Нежелание в первом случае раскрывать свое ноу-хау и/или многолетный опыт вполне понятно.


Нежелание во втором улучшать общий код из-за кому-то из манагеров показавшимся унизительными пары строчек как раз и говорит о крайне раздутом ЧСВ. Прям так и слышится "Вы никто, а мы (та-дам!!!) open source(!!!) проект, целуйте нас в попу)". В конце концов, если вам это не надо, то проходите мимо, незачем испражняться по пути.

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


2) не знаю как остальные "нытики", а вот если бы была плашка вместо комментария такой унизительной формулировки, да ещё и до лицензии, я бы вполне добавил. Проверять ещё одним дополнительным анализатором лишним не будет. Если он не требует запредельного :)
А если требует, то да, даже если бы (если бы!) он был на голову выше конкурентов, я бы тридцать раз подумал стоит ли такой текст комментария в каждом файле проекта этой вот разницы с конкурентами, или я лучше сам навелосипежу аналог, зато буду ментально здоров.


3)


раскрывать ноу-хау
многолетний опыт

а) и в чём же, интересно, может быть ноу-хау в статическом анализе? В умении читать стандарт и писать правильные регэкспы (в пункте "б" напишу почему регэкспы)?


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


Так вот, этот вот знакомый пишет свой проект используя кучу заворотов из самых новых стандартов С++, да и вообще его код читать "простому сишнику" довольно тяжело.


И вот он как-то ещё несколько лет назад (ну, тогда это не С++17 был, конечно, а тогдашний свежевышедший стандарт) натравливал триальную версию сабжевого продукта на свой проект...


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


Так что повторю вопрос ещё раз? Многолетний опыт написания регэкспов? Так он и у меня немаленький! Правильный регэксп = ноу-хау? Тогда знаете сколько их у меня? Может мне тоже начать продавать их?


// с такой же "офигенной" политикой лицензирования, как у сабжевой компании, ага :)

UFO just landed and posted this here
Столько букв… а «регэкспы» то и не используются :D Уже столько раз писали об используемых технологиях.

про регэкспы в этих буквах написано довольно мало.
И, не смотря на то, что про используемые технологии "уже столько раз писали":


0) а разве "столько букв" (информативное расписывание каждого пункта со всеми доводами) — это недостаток?


1) на заборе тоже можно написать, а без возможности посмотреть за этот забор приходится только верить автору надписи на слово.


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


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

почему же так сабж практически никому из потенциальных клиентов не интересен

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

По разработке ПО вообще много книг и методик. Они совсем не о том, «как писать на C++ и что появилось в C++17», поэтому не всегда интересны рядовому программисту, а зря.
— А это правда, что Иван Иванович выиграл машину в лотерею? — Правда. Только не машину, а тысячу рублей. И не в лотерею, а в преферанс, и не выиграл, а проиграл…

1. Мы не раз писали, что на регэкспах невозможно выполнять хоть сколько-то серьезный статический анализ кода. Наиболее полно этот момент изложен в статье ещё аж 2010 года: "Статический анализ и регулярные выражения".
Обзорно про внутреннее устройство анализатора недавно была статья "Как PVS-Studio ищет ошибки: методики и технологии". Где опять-таки говорится, что регулярные выражения не используются. Вместо этого перечислены более серьёзные технологии, позволяющие находить сложные ошибки. Статический анализ только на первый взгляд кажется просто программкой, которую можно написать за месяц. На самом деле этот айсберг, над поверхностью воды от которого торчит только малая часть, от чего и возникают всякие заблуждения. Подробнее про это мы попробуем рассказать на C++ Russia 2017. Приглашаю на доклад «Как потратить 10 лет на разработку анализатора кода».

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

3. По поводу как всё плохо. У меня вызывает сомнения качество эксперимента. Уже не раз было, что как доходит до дела, то выясняется не низкий уровень анализатора, а низкий уровень того, кто его использует. Классическая случай на эту тему: "Народ против PVS-Studio: дубль первый". См. мой комментарий.
1) Ну так ведь и проходили мимо, пока "какие-то манагеры" из сабжевой компании не начали плакаться что "ой, мало юзеров используют".

Может и плакались, что в опенсорсе мало используют (и это логично — потому что нельзя было использовать бесплатно и не все готовы ради хобби проекта покупать дорогущий продукт). Пошли навстречу, сделали бесплатно. Но вы же понимаете, тут не благотворительность, поставили условия, чтобы отсечь тех, кому и денег жалко, и ЧСВ чешится. Я считаю, вполне правильно сделали — от таких личностей только проблемы будут, вечное нытье и распальцовка "вы мне должны". Да ну нафиг, лучше спать спокойно.


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

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


И сабжевая компания ему даже предлагала год (или типа того) лицензии на свой продукт за обещание (!) написать положительный (!) отзыв

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


Так что повторю вопрос ещё раз?

Тут вы сами выдумали, какие технологии используются под капотом на основе информации от ведомства ОБС многолетней давности и просите прокомментировать. Извините, не буду :)

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

Вы понимаете разницу между хобби-проектом, non-commercial open-source software и free/libre open-source software?

UFO just landed and posted this here

Давайте заглянем хотя бы в википедию:


Э́тика (греч. ἠθικόν, от др.-греч. ἦθος — этос, «нрав, обычай») — философская дисциплина, предметами исследования которой являются мораль и нравственность[1]

Что аморального или безнравственого в шутливой просьбе, дающей легальное право пользоваться анализатором?


Гитхаб сам по себе упоминается каждый раз, когда вы пишите git clone или даете ссылку на репозиторий. clang — проект с открытым кодом, странно, чего бы он это стал что-то требовать.

Гитхаб сам по себе упоминается каждый раз, когда вы пишите git clone

git clone https://git-wip-us.apache.org/..., где упоминание github'а?


clang — проект с открытым кодом, странно, чего бы он это стал что-то требовать.

А вообще он что-то требует, если вы, конечно, читали лицензию, с которой согласились при его использовании.

UFO just landed and posted this here
Если я правильно понял, речь идёт о проекте Modest. Маленький, качественны проект, в добавок, проверяемый Coverity. Анализатору PVS-Studio развернуться здесь негде, и я готов согласиться, что он не обязателен проекту.

Однако я не понимаю, что вызывает такое отторжение вообще и от наших комментариев в частности. Программа SourceMonitor говорит, что код на 18 процентов состоит из комментариев. На первый взгляд, мне кажется, что комментарии-заголовки занимают 15% от всего проекта. Так чем-же не угадили ещё 2 строчки. Неужели Вы так сильно переживаете, что PVS-Studio потеснит Ваше имя с первых двух строчек… :)
Заголовок
/*
 Copyright (C) 2016 Alexander Borisov
 
 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public
 License as published by the Free Software Foundation; either
 version 2.1 of the License, or (at your option) any later version.
 
 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 Lesser General Public License for more details.
 
 You should have received a copy of the GNU Lesser General Public
 License along with this library; if not, write to the Free Software
 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
 Author: lex.borisov@gmail.com (Alexander Borisov)
*/


Чудо от использования PVS-Studio не произойдёт. Однако PVS-Studio мог бы дополнить Coverity и поможет устранять ряд ошибок на самом раннем этапе. Например, мне кажется, что вот с этим кодом не всё в порядке:
Код
myhtml_tree_attr_t * myhtml_token_node_attribute_first(myhtml_token_node_t *token_node)
{
    return token_node->attr_first;
}

myhtml_tree_attr_t * myhtml_token_node_attribute_last(myhtml_token_node_t *token_node)
{
    return token_node->attr_first;
}

Мне кажется, во второй функции следовало написать «return token_node->attr_last;»

Или, например, здесь:
void * mycss_property_destroy_text_decoration(mycss_entry_t* entry, void* value)
{
    if(value == NULL)
        return NULL;
    
    mycss_values_text_decoration_t *text_decoration = (mycss_values_text_decoration_t*)value;
    
    if(text_decoration->color)
        text_decoration->color = mycss_declaration_entry_destroy(entry->declaration, text_decoration->color, true);
    
    if(text_decoration->line)
        text_decoration->color = mycss_declaration_entry_destroy(entry->declaration, text_decoration->line, true);
    
    if(text_decoration->style)
        text_decoration->color = mycss_declaration_entry_destroy(entry->declaration, text_decoration->style, true);
    
    return mycss_values_destroy(entry, text_decoration);
}

Есть подозрение, что после Copy-Paste не изменена левая часть «text_decoration->color =».

Это я к тому, что тот-же Coverity не является панацеей.
Ну лично мне, например, не нравится идея плодить кучу комментариев в проекте вместо одного упоминания вашего проекта на самом видном месте: в README.{md,txt,rst}, который отображается на главной странице репозитория. Я и лицензию-то в каждый файл не буду вставлять, если это не будет строго необходимо (частичное лицензирование). При этом я никакого негатива к PVS не испытываю. Но вот плашечку на главной (и на сайте бонусом) я бы с благодарностью повесил, а сорцы все править не стал бы.
Кстати, в своих проектах (не C++) я использую сервисы типа CodeShip и Scrutinizer. Их плашки у меня установлены (хотя они этого не требуют). Но если бы они хотели от меня модификации исходников, я бы от них отказался.
UFO just landed and posted this here
UFO just landed and posted this here
опыт же подсказывает, что статический анализ находит весьма малую часть проблем

Критичность находимых багов статическими анализаторами сильно занижена. АЭС не взорвётся, конечно (надеюсь), но пользователей тысяч разных программ они выводят из себя. Опыта одного человека недостаточно, чтобы сделать подобный вывод.

На днях буду писать статью о проверке одного крутого проекта и буду делать это с особым пристрастием. Там будет видна эта «весьма малая часть проблем» и как она потенциально сказывается на работе продукта.
UFO just landed and posted this here
Тут вы привели весьма малую часть возможностей статического анализа.

А сколько боли принесёт ошибка в матанном алгоритме с приоритетом операций или использование одноимённых переменных из-за опечатки в одной букве? Это по-прежнему малая часть возможностей, но хотя бы речь идёт о серьёзных проблемах.
UFO just landed and posted this here
Ну это точно не инструмент поиска логических ошибок, но согласитесь, лучше в таких алгоритмах не иметь ошибок, выявляемых статическим анализом.
выявляются мелкими тестами

Не удержался. Что я вспоминаю при упоминании мелких тестов и их покрытии кодовой базы:

unsigned int count = GetCount();

assert(count >= 0)

Как говорится, «основано на реальных событиях»
UFO just landed and posted this here
clang-3.9.1/include -std=gnu++1z

К сожалению, современные компиляторы не так оперативно внедряются на практике.
UFO just landed and posted this here
А теперь пособирайте открытые проекты и посчитайте, сколько сотен мест там найдётся. Я даже в статьи такие места не добавляю, ибо очевидно, но никто не думает исправлять.
современный, думаю имеется в виду, которому меньше 10 или 20 лет после релиза. На пример вот gcc 4.4 http://melpon.org/wandbox/permlink/UHC7Ee0wWxncUxOx находит проблему
Опенофис, падающий во время работы из-за того, что история изменений съела гига полтора? Легко.

Казалось бы, при чём тут ошибки в Open/LibreOffice? А, это, наверное, потому, что они до сих пор PVS-Studio не пользуются.
Ну так это, кстати, ещё вопрос: какой из сторон выгоднее сделать для PVS интеграцию плашечкой вместо правки сорцев, если в результате в проекте класса LibreOffice на главной репозитория появится плашечка PVS-Studio. По-моему, это выгоднее всем: реклама производителям анализатора и повышение качества кода в проекте. Но разработчики PVS искуственно ограничивают потенциальную аудиторию несмотря на то, что они (аудитория) всё равно в большинстве, вероятнее всего, не стали бы покупать такой продукт.
Остальные части вашего комментария к сути проблемы имеют мало отношения, поэтому я опущу ответ на них.
UFO just landed and posted this here
UFO just landed and posted this here
Действительно, как же можно сравнивать ошибки в программах, которые никому не мешают, и такое страшное действо, как вставить комментарии в код.

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

[sarcasm]Вы уловили суть![/sarcasm]
Особенно, если у вас кармы хватает снижать ее тем, кто так не может.

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

Я свою позицию по этому вопросу уже выразил. Мне такие требования кажутся странными и я, если буду писать проект на C++ обойду PVS стороной и выберу конкурента, которому добровольно (Coverity, вроде, не требуют плашек) сделаю такую же рекламу, но без мусора в исходниках. Не потому, что мне не нравится PVS, а потому, что я считаю такое требование странным и завышенным.
В итоге, все останутся довольны: у меня будет статический анализатор, у Coverity появится потенциальный платный клиент, а PVS будут рады, что проект, разработчик которого счёл их требования завышенными, не использует их продукт. Секунду, или последнее звучит странно? А нет, тут уже несколько раз написали, что так и задумано.
угадили

Хорошая опечатка :)
UFO just landed and posted this here
Есть проекты, где ошибки критичны, а где нет. Я не могу серьезно воспринимать комментарии, где плата в виде «комментария» объявляется слишком большой. Компании тратят сотни тысяч рублей для лицензирования анализатора, так как понимают важность устранения ошибок в их проектах. На самом деле, Вам статический анализ просто не нужен, или просто ошибки в этом проекте не представляют никому никакой беды и потери денег. А тем, кому качество кода важно, приходят к нам. Или к конкурентам, но не суть важно, главное приходят.
UFO just landed and posted this here
В каких некоммерческих приложениях ошибки критичны достаточно для того, чтобы вспоминать о сотнях тысяч рублей?

Я думаю таких немало. Что Вы думаете о багах в таком проекте как Trans-Proteomic Pipeline? Две статьи о проверке: 1, 2.

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


Если в них ошибки и в самом деле критичны, то они 100% уже используют статический анализатор и довольны им (иначе бы не дожили до такого размера и важности проекта).


====


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


Поэтому правильным было бы сказать не


Я не могу серьезно воспринимать комментарии, где плата в виде «комментария» объявляется слишком большой.

а


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

Здесь уже несколько раз поднимался вопрос этики при работе с open-source. А разве этично так относиться к остальному софту, что не оборонка, опасное производство и т.п.?

Если вы хотите получить ответ на этот комментарий, сначала скажите что приняли к сведению высказанные мысли о том, что:
1) формулировка комментария для разблокировки триала — слишком унизительная и подлежит пересмотру
2) требование помещать его выше лицензии — имеет смысл так же пересмотреть
3) имеет смысл подумать о "плашках" в README* вместо комментариев.


и что обещаете обсудить внутри компании и рассказать о своём решении по этим вопросам.


Тогда мы поймём что вы настроены на серьёзное общение (а не на "огрызание"), и будем так же рады продолжить дискуссию

На страницах своего блога я серьёзен как никогда.

Ответ по всем пунктам: всё так и задумывалось.

Объясняю:

1) коммерческие open-source обходят стороной
2) индивидуальные разработчики радуются
3) разработчики open-source радуются
4) комментаторы негодуют

Мой вопрос: почему же к пользовательскому софту надо относиться хуже критичного?
UFO just landed and posted this here
Just for fun тут не причём. Такие люди более, чем довольны нашей акцией.

Что вы скажете о «не критичных» багах в этих проектах?
UFO just landed and posted this here
Вести параллельную разработку и получать кучу сертификатов, наверное, глупо. А вот воспользоваться статическим анализатором можно было бы. Даже бесплатные аналоги простаивают.
UFO just landed and posted this here
Почему в любом случае то. Хоть как-то внедряйте методологию статического анализа.
Надо по возможности пользоваться статическими анализаторами даже для некритического софта.
По возможности? Надо программировать без варнингов компилятора, пользоваться бесплатными инструментами повышения качества кода. И если есть возможность, привлекать платные инструменты.
UFO just landed and posted this here
разработчики open-source радуются

А тут вы неправы, о чём вам здесь (и в предыдущих тредах) многократно писали.

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

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

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


Ну и количество благодарностей нерелевантно оспаривоемому тезису, если, конечно это не благодарности от серьезных FOSS проектов, т.к. в нашем подлунном мире под open-source по умолчанию понимают free/libre open-source software, а не non-commercial open-source software.


Не считая того, что вы или ваш коллега в предыдущем посте явно говорили что F(L)OSS — не ваша аудитория. И после этого заявлять, что «разработчики open-source радуются» — это какое-то двоемыслие. Проблема крестика и трусов.

4) комментаторы негодуют

Никто не забыт.
Выделили в отдельную категорию. Очевидно же.

Хамство — это ваша корпоративная или личная черта?

1) коммерческие open-source обходят стороной

А могли бы вас рекламировать. Всё равно ведь не покупают.
2) индивидуальные разработчики радуются

а) Во-первых, не все. В комментариях явные примеры разработчиков, которые радовались бы, но не радуются.
б) Если речь о частных — могли бы и покупать, либо открыть код и рекламировать вас плашкой со ссылкой на главной.
3) разработчики open-source радуются

Судя по комментариям (и тому, как я вижу себя на их месте) — не особо и далеко не все.
На последний вопрос не знаю, что ответить, т.к. я вообще не очень его понимаю. Багов меньше должно быть везде.
Ответ по всем пунктам: всё так и задумывалось.

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

Именно так и задумано! В серьезных проектах такие комментарии вставлять не будут. И мы не потеряем потенциального клиентов, за счёт того, что просто дали возможность всем подряд использовать бесплатно.

А маленькие проекты могут использовать, а могут не использовать. Мы дали возможность, а решать им. На наш взгляд плата в виде комментария для них несущественна.
UFO just landed and posted this here
UFO just landed and posted this here
Я рад, что мы наконец-то хоть что-то правильно сделали.
image
UFO just landed and posted this here
В статьях всегда указываются используемые анализаторы. Это же круто исправить ещё больше багов после других инструментов.

Не круто вешать плашки, а анализатором не пользоваться. Было множество случаев: разработчикам присылаешь статью с 40 багами, а они "… мы уже используем Coverity Scan...". Ну сорян, «пользуйтесь» дальше.

Разработчикам нужно присылать не "статью с 40 багами" (особенно, учитывая её текст "вот тут, наверное, может быть, скорее всего, по-моему, мне кажется, я думаю, надо было написать вот так вот, а не вот так, а тут разработчик, наверное имел в виду вот это", а так же зачастую дерзкий и отталкивающий заголовок), а письмо (если нет багтрекера), или баг на багтрекер (если есть) вида (не дословно, но по сути):
"мы, компания PVS-Studio, пишем очень мощный и удобный статический анализатор, который называется PVS-Studio.
Мы нашли в вашем проекте 40 потенциальных багов, которые ваш текущий анализатор, скорее всего, не нашёл. Посмотрите, пожалуйста на список ниже, и, если что-то из этого окажется ложно-положительным срабатыванием, отправьте нам, пожалуйста, фидбек на e-mail такой-то.
<список замечаний и комментарии к ним>
С наилучшими пожеланиями,
команда PVS-Studio
"


Вот тогда вас бы уважали и не отвечали "мы уже используем YYY, отвалите" даже не вчитываясь в ваше письмо.


А с текущим подходом странно удивляться такой реакции на вас. Я бы наоборот мог удивиться, что слишком мало людей посылают, если бы изучал "психологию потребителя" :)


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


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

Спасибо за пример. Надесь вы не решили, что мы пишем что-то вроде этого: «Hello my friend. Your code is shit!» :D

Я привёл пример из жизни, после которого плашками можно не меряться.

баг на багтрекер (если есть) вида (не дословно, но по сути):

Дословно и по сути? Когда мы работали с Unreal Engine 4, некоторые баги неделями разбирали разные команды своих разработчиков, чтобы исправить.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Если бы меня попросили, не знаю, сделать фотографию с листочком бумаги с аналогичной просьбой PVS в обмен на ключик

С вантузом в известном месте в известном наряде. И ведь некоторые фотографировались же.

Ну вот и в сорцах мусорить желающие нашлись.
Я правильно понял, что если сделать эти комментарии, то можно переходить к коду из списка ошибок без потери «триала» через 50 переходов? Т.е. получается полноценная полная версия за счёт двух строчек в каждом файле реализации?
А если чужой фрэймворк используешь скопировав его в папку проекта — там тоже надо в каждом файле комментарии проставлять, или он просто будет игнорироваться, если там не будет комментариев?
Файлы из этого проекта не будут проверятся, о чем будет выдаваться соответствующее сообщение. Просто исключите в настройках папку с фрэймворком из проверки.
use case, же, а не пользователь-чемодан

Когда я увидел заголовок статьи, я подумал, что PVS-Studio интегрируется с GitHub и предоставляет сервис вроде travis_ci ;)

А ведь можно было бы и интегрироваться с Travis, Coverity там завезли.
А лично мне формулировка фразы не нравится. Что это за «Dear PVS-Studio, please check it»? PVS-Studio не человек, чтобы его еще уговаривать. С удовольствием бы вставил более формальный текст, типа: «PVS-Studio проверяет этот файл бесплатно, т.к. этот файл является частью независимого проекта индивидуального разработчика. [вторая строчка вашего текста меня устраивает]»

C юмором вы, похоже, не знакомы...

Надо добавить тогда хорошее чувство юмора в требования к бесплатному использованию продукта.
Уточните, пожалуйста, несколько моментов. Оно должно распространятся на всю команду, лидера или среднее по команде? Только open-source или индивидуальным разработчиком тоже надо соответствовать? А то сделаем, да не так опять.
Давайте сразу от души — всей команде. А то ходят там угрюмые, пишут свой код, на пользователей огрызаются.
Уверен, что если бы авторы PVS-Studio раздавали по 10 000 рублей за бесплатное использование, то появилось бы куча негативных комментариев в стиле «совсем охренели! за эти копейки еще напрягаться. вот если бы по 20 000...»

Вообще конечно «а для публичных репозиториев ГитХаба бесплатна» — сейчас выглядит как стандарт на этом рынке. Посмотрим, как у вас пойдет, интересно.

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

Я как понял, они хотят дать возможность использовать продукт и мелким командам. В крупных организациях никто не даст засорять код лишними коментами, а мелкие могут себе это позволить.

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

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

Мне кажется, что какой-нибудь онлайн-сервис проверяющий проекты по ссылке на github, был бы не плохой альтернативой для тех, чей проект хобби.
Естественно с ограничениями. Например, лимит на количество кода в проекте, символические $5 (или $1) за проверку, не чаще двух проверок в месяц.
Так отсекаем большие проекты, лишние мусорные запросы на проверку, которые могут положить онлайн сервис, и делаем себе рекламу, выдавая плашку о хорошем качестве кода для README при второй проверке.
Это только в качестве примера, который я придумал (но не продумывал) за 2 минуты. Правильный вариант может быть совсем иным.
UFO just landed and posted this here

А также, похоже, чтобы отвадить все well established open-source projects, которые разрабатываются под эгидой любых (в том числе некоммерческих) организаций, как то Free Software Foundation, Apache Software Foundation, Eclipse Foundation, Mozilla Foundation и подобных. Т. к. софт, который производят люди в рамках курируемых проектов, полезен не полутора землекопам, а куда более широкой аудитории, включая коммерческие фирмы.


Какой-нибудь YourKit даже никакой плашки не требует за право использовать из профайлер, чем вызывают уважение. Как JetBrains — хз, т.к. у меня all products pack и бесплатную версию у них не запрашивал.

JetBrains ничего не требуют кроме соответствия проекта критериям опенсорса.

все well established open-source projects, которые разрабатываются под эгидой любых (в том числе некоммерческих) организаций, как то Free Software Foundation, Apache Software Foundation, Eclipse Foundation, Mozilla Foundation и подобных.

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

ASF, например, имеет мизерное количество сотрудников (наёмные админы), все разработчики более 400 проектов — волонтеры и выступают с позиции индивидуальных разработчиков. Но сказать, что, например, Hadoop — non-commercial software язык не повернется, хотя ASF на нём (как и на остальных проектах) деньги не зарабатывает.

  1. Реально, интеграция типа Coverity гораздо удобнее.
  2. А что делать компаниям (мелким, но), выпускающим Open Source? Хоть и выпускающим эти продукты часто от частного лица, но вот у меня большая часть больших проектов (open source, часто автор давно ушел, а я maintainer) принадлежат организациям.
> Почти все компании, которые разрабатывают под Linux — перешли на CLion, а количество людей, которые используют «Vim и аналоги», сейчас резко сокращается… Вообще рекомендую присмотреться к продуктам JetBrains, а точнее к TeamCity и YouTrack. Эти продукты используют почти ВСЕ крупные и средние компании, и интеграция туда PVS-Studio — это очень правильная Business-модель.

Эдык его накрыло, такого понаписал, аж волосы на голове зашевелились
Это стыд и позор, на самом деле: PVS-Studio нарушает GPL. Процитирую, что еще о вас говорят, короче:

Этого недостаточно ― необходимо указывать, что используется продукт под GPL (you must show them these terms so they know their rights), а также привести либо объектные файлы рядом с дистрибутивом, либо указание на то, что объектные файлы необходимо запрашивать по почте (If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place).


Сейчас проверил еще раз —
$ grep -ri GPL pvs-studio-6.13.20904.1-x86_64 | wc -l
0


(1) If you statically link against an LGPL'd library, you must also provide your application in an object (not necessarily source) format, so that a user has the opportunity to modify the library and relink the application.

6. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place

And you must show them these terms so they know their rights.


Dear PVS-Studio, please do not violate GPL.
Наш продукт включает в себя библиотеку glibc, распространяемую под лицензией LGPL. В соответствии с лицензией LGPL, по запросу третьего лица, мы готовы предоставить объектные файлы, которые позволят перекомпоновать наш продукт с использованием другой версии glibc. Мы гарантируем работоспособность нашего продукта только с официальной версией glibc 2.23. Запросы на получение объектных файлов можно отправлять через форму обратной связи.
Пожалуйста, читайте внимательнее. Я процитировал ответ на эту же вашу стандартную отписку. Если вы не понимаете по-английски, приведу вам цитаты из перевода лицензии.

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

d) если распространение экземпляра произведения осуществляется путем предоставления доступа для копирования его из определенного места, такое распространение должно сопровождаться предложением равноценного доступа для копирования из этого же места материалов, указанных в подпункте «а» пункта 6;
6. Как исключение из положений предыдущих пунктов настоящей Лицензии Лицензиат вправе объединить или связать Произведение, использующее Библиотеку, с Библиотекой, в результате чего будет создано произведение, содержащее части Библиотеки. Лицензиат вправе распространять такое произведение на любых условиях, при этом за пользователем должно сохраняться право вносить изменения в произведение в целях его адаптации для собственных нужд, а также право осуществлять восстановление структурной схемы алгоритма работы по исходным текстам произведения для отладки внесенных изменений.

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


Использует ли PVS-Studio библиотеку под LGPL? — да.

Выполняет ли оно один из последующих пунктов a-e? — нет.

Отмахивание формальностями, специфичными для разных стран, распространение информации о способе получения объектных файлов в комментариях на хабре, непредоставление копии лицензии — это что угодно, но не дружба с opensource-сообществом.

Нет, я серьёзно не понимаю, почему opensource-проектам нужно вставлять в себя для проверки унизительные комментарии, а вам — так сложно выполнить два ужасно простых требования лицензии? У вас от этого убавится?
А я вот для себя пропатчил вашу программу для расстановки комментариев:
  1. Она проставляла комментерии во все файлы, включая AssemblyInfo.cs и *.Designer.cs, хотя анализатор не ругается, если их там нет — я это убрал
  2. Не добавляла пустую строку после себя — пришлось добавить
Надо вам дочернюю пиарастическую компанию от себя отпочковать, для канализации ненависти. Типа PRS-Studio назвать, пусть занимаются продвижением ваших сомнительных маркетинговых инициатив. В любой критиканский тред можно будет смело впрыгивать с криком «да не поверишь, братан, сами давно мечтаем всё раздать под zlib-лицензией, но вот эти пиарасы не дают!»
Решил послать весточку интересующимся анализатором PVS-Studio. Сегодня 06.03.2013 в 15.00 состоится пробный стрим, где можно будет вживую посмотреть на процесс работы PVS-Studio и интерактивно пообщаться. Присоединяйтесь к нашему стриму. Подробности (см. раздел Важно).
Уверены, что сегодня 2013 год? ;-)
Sign up to leave a comment.