LINUX.ORG.RU

Единорог бежал, хвостиком махнул, и из открытого проекта Mono 167 ошибок высыпалось

 , , , ,


0

2

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

В этот раз Сергей проверил с помощью анализатора PVS-Studio проект Mono. Это проект по созданию полноценного воплощения системы .NET Framework. Реализации Mono существуют для следующих операционных систем: Windows, Linux, Solaris, FreeBSD и так далее. Думаю, не все знают, что Mono написан на языке C#. Это несколько необычно для Linux-мира.

Исходный код Mono доступен для загрузки в репозитории на GitHub. Количество строк кода при проверке загруженного с GitHub репозитория составило около 6.3 миллионов (исключая пустые строки). Соответственно и ошибок в такой огромной кодовой базе превеликое множество. Проверив кое-как проект (почему, станет ясно из статьи), Сергей насчитал 167 ошибок, о которых и рассказал.

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

С уважением, Андрей Карпов. И не забываем подписывать девушек и жён на наш инстаграм pvsstudio. Пусть к программированию приобщаются.

Статья: ищем ошибки в Mono: сотни их...

Перемещено Aceler из opensource

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

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

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

Collected Errors:
10358
Checked Projects:
267

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

Для нас важно то, что сериал сопровождается улучшением ключевых опенсорсных проектов.

для «нас» это для кого :) ? Лично у меня нет тяги к оправдыванию говнотопиков.

ключевых

здесь же якобы про моно, не пались :)

Vit ★★★★★ ()

А чего вы на хабр не уйдете со свой саморекламой ? там это хотя бы нормально.

ЗЫ Я хабр не часто читаю, но раньше на статейки по PVS хотя бы натыкался

Dred ★★★★★ ()

уже отправил многие исправления pull request'ами... можно мне увидеть полный отчет?

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

для «нас» это для кого :)

Для сообщества опенсорс.

ключевых

здесь же якобы про моно, не пались :)

По ссылке также про gcc, linux kernel, gtk+, openjdk, thunderbird, doxygen, octave, и так далее..

Лично у меня нет тяги к оправдыванию говнотопиков.

Речь идёт о win-win solution, о ситуации, в которой выигрывают все. Пусть даже ценой некоторого количества рекламных топиков :)

Вот лично ты готов наличными деньгами оплатить статический анализ хотя бы десятка крупных проектов? Подозреваю, что нет.. И, на деле, мало кто готов. А тут этот анализ проводят, и взамен просят не тыщщибаксов, а всего лишь *немного* потерпеть их клоунаду в новостной ленте. Отказываться от этого предложения — это просто экстремизм иррациональный. Ы?

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

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

Вы так говорите, как будто нет Coverity с его _бесплатной_ проверкой OpenSource-проектов. Продавцы PVS-Studio единоразово проверят какой-то OS-проект и трубят об этом на всех площадках, до которых могут дотянутся. А Coverity позволяет регулярно использовать их статический анализатор при разработке. Ограничения там есть, конечно же, но для сообщества Open-Source это несколько получше, чем эпизодические отчеты ради самопиара от продажников PVS-Studio. ИМХО, конечно.

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

а кто сказал что это ошибка?

Мутабельность - это ошибка, да.

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

Для сообщества опенсорс.

для всех => ни для кого :)

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

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

Отказываться от этого предложения — это просто экстремизм иррациональный. Ы?

Это ж опенсорс, не будет одних - придут другие. Какой смысл подстраиваться под тех, кто ведёт себя как урод? В долгой перспективе оно того не стоит.

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

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

Там скобки специально поставлены.

А толку-то. Посмотрите примеры по ссылке. Скобки то там есть, да вот ставят их не там. Для ленивых пара примеров:

static HRESULT BindStatusCallback_create(....)
{
  HRESULT hr;
  ....
  if ((hr = SafeArrayGetUBound(sa, 1, &size) != S_OK))
  {
    SafeArrayUnaccessData(sa);
    return hr;
  }
  ....
}

template <typename T>
std::vector<T> xml_decode_field(const std::string &input, ....)
{
  ....
  std::string::size_type start,endt,enc,len;
  ....
  if ((len=input.find("length=",start)!=std::string::npos))
    length=atoi(&(input.c_str()[len+strlen("length=")]));
  ....
}

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

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

При всём уважении, я не могу считать новость (беру последнюю) «Релиз музыкального плеера Audacious 3.8» поводом для интересной дискуссии. Я уверен, мои посты гораздо интересней и вызывают куда больше отклика в душах читателей. :)

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

Я видимо слишком хорошо замаскировал иронию. Это автогенерёные отчеты.

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

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

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

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

Вы так говорите, как будто нет Coverity с его _бесплатной_ проверкой OpenSource-проектов.

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

P.S. То что существут Coverity не мешает нам находить ошибки, в том числе и в проектах, регулярно проверяемых Coverity. И в добавок мы в несколько раз дешевле.

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

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

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

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

Вы так говорите, как будто есть _бесплатный_ Coverity для закрытых проектов.

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

За счет чего этого достигает Coverity, меня, как разработчика открытого ПО, не волнует.

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

eao197 ★★★★★ ()

Если кто-то хочет пообщаться с ним лично, то приглашаю на конференцию Юкон-2016, где Сергей выступит с докладом

Могу дать свой адрес в Сингапуре, где ближайшее время собираюсь нажраться, ваш Сергей может приехать и попытаться выступить.

//вроде не маленький, не надоело?

ioway ()

Не устаю поражаться (ввернул бы словцо погорячее, но модерастия нонче больно ханжеская) реации отечественного «опенсорц-комьюнити» на статьи о багах в опенсоурс-проектах: «гавно, нинужна, пеар» и т. д.

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

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

kawaii_neko ★★★ ()

Кстати, что не так с тернарным оператором

button_pressed_highlight = use_system_colors ?
Color.FromArgb (150, 179, 225) :
Color.FromArgb (150, 179, 225);
Где тут ошибка?

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

Ну OK, я намотаю на ус, что джуниор обязательно обосрется на напишет c!='<' два раза в одном условии. Как с этим можно бороться без покупки инструмента, специально предназначенного для поиска такого рода ошибок?

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

Адекватный человек тихо прочитает и примет к сведению

А неадекватный будет постить статьи из разряда ха-ха «СмАрите у этогА лашары while(1){}... бугага».

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

Полагаю, то что я выкладываю на гитхабе, стоит чуть больше.

Спору нет. Но обсуждается же статический анализ?

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

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

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

Спору нет. Но обсуждается же статический анализ?

О! Адвокат подсудимого:

button_pressed_highlight = use_system_colors ?
Color.FromArgb (150, 179, 225) :
Color.FromArgb (150, 179, 225);

Где тут ошибка?

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

Спору нет. Но обсуждается же статический анализ?

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

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

Я уже говорил, это не индульгенция на любые действия. И они не являются незаменимыми.

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

Товарищ, мы уже все поняли ваше экспептное мнение.

Не нравится - игнорируйте. Это просто.

fornlr ★★★★★ ()

Например, предлагаю всем скачать и попробовать PVS-Studio для проверки своих C# проектов (ну или C, C++).

По ссылке только для Windows.

Falcon-peregrinus ★★★★★ ()
Ответ на: комментарий от fornlr

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

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

Color.FromArgb (150, 179, 225) :

Color.FromArgb (150, 179, 225);

найди отличие

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

Сделайте проверку для кусков кода не более 1500 строк, онлайн бесплатно. С капчей, или что-то вроде этого. Так как раз можно будет посмотреть как работает PVS-Studio. Ну и купите домен с pvs studio в названии уже. Можете еще подумать о онлайн проверке, с ценами в зависимости от количества добавленных проектов. Вон у ABBYY есть онлайн кабинет, где можно одну страницу через OCR бесплатно отсканировать, осталось придумать/сделать что-то подобное только в рамках PVS-Studio.

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

Можно еще и версию ну с очень ограниченным временем действия продавать. Скажем: на три дня за $100 для одного разработчика. Все равно по истечении оплаченного срока PVS-Studio в тыкву превращается, так какая, в принципе, вендору разница — за 5K Euro на год или за $100 на три дня.

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

покупку которого им даже никто не пытается навязать

еженедельные темы от автора как бы намекают. Может на ЛОР-е стоит сделать платный раздел с рекламой? В нем бы и Куранину место (за деньги разумеется) нашлось.

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

Э, можно раз в пол года ревизию кода проводить и тратить на это 100$. Разорятся они тогда.

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

Но постинг говнотопиков на лоре не начинает от этого выглядеть как-то лучше.

Давайте тогда обсуждать единственные нормальные дистрибутивы линукса - NixOS и GuixSD

anonymous ()

2009 это год рождения?

anonymous ()

2009 это год рождения?

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

Ну пусть сделают за $100 на один день. Для больших проектов это слишком круто, там выгоднее брать сразу на год. А маленькие команды смогут раза два-три в год заплатить по $100 для чистки кода перед релизами.

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

найди отличие

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

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

как они этого умудрились достичь, если у них в остальном какая-то кустарщина?

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

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

Deleted ()

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

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

И это все безотносительно свободного и открытого софта, а вопрос только разработки собственного продукта и налаживание бизнеса. Они делают так, потому что это работает.

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

И они делают бизнес, как смогли понять.

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

Мне лично их способ ведения бизнеса не нравится двумя вещами:

1. Очевидно, что о клиентах и о времени своих клиентов продавцы PVS-Studio не думают. Чтобы просто грубо прикинуть возможные расходы на приобретение PVS-Studio мне нужно писать письма продавцам вместо того, чтобы посмотреть табличку на сайте. Почему-то для продуктов вроде CLion или Qt узнать цены можно вообще не связываясь с вендором, а PVS-Studio какие-то особенные. Все разговоры о том, что письмо для них является фильтром и показателем серьезности интереса — это полная херня. Меня не интересуют проблемы вендора, мне нужно решать свои. Если вендор помогает решать проблемы клиентов — он зарабатывает, если не помогает — клиент уходит к другому вендору.

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

a) рекламу следует подавать как рекламу, а не выдавать ее как попытку «помочь сообществу»;

b) разработчики проверенного PVS-Studio проекта получают список багов, но не получают инструмента для последующего анализа кода. Т.е. исправишь ты K багов из N, а как потом проверить, что в коде не появилось еще M новых багов? Ждать очередной рекламной акции?

Подход Coverity в плане помощи OpenSource-проектам намного честнее и удобнее. Причем Coverity доступен для OpenSource очень давно. Имхо, нужно быть совсем тупым в плане маркетинга, чтобы пытаться конкурировать с Coverity на этом поле так, как это делает PVS-Studio.

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

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

лучший коментарий во всем обсуждении!

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

Вот что бывает, когда технари мнят себя всесторонними гениями и с презрением относятся к менеджменту, маркетингу и прочим «быдлосферам»))

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

Ну, вообще, отчасти согласен, особенно с первым. Всегда есть «приятные» бизнесмены и «неприятные».

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

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

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

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

Они отличные технари, отличный продукт.

Не знаю, какие они технари, но пиарщики из них отвратительные.

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

Они их оказывают сами себе.

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

Они их оказывают сами себе.

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

Deleted ()

Вижу, тут дискуссия, плавно перетекающая в дикий срач, оживилась. Выставлю свою копинку.

Почему бы ребятам из PVS-Stduio не взять и не продиагностировать следующие продукты:

  • MongoDB
  • CouchDB

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

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