LINUX.ORG.RU

Оцениваем качество кода пакета стоимостью 10000$

 , , , ,


1

4

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

Но вот статьи мы, по понятным причинам, пишем в основном про открытые проекты. Сейчас появилась очередная редкая возможность написать про код закрытого проекта. Вернее, закрытого до недавнего времени.

Итак, предлагаю вашему вниманию статью: Плохой код пакета для создания 2D-анимаций Toonz.

OpenToonz - это программное обеспечение для создания 2D анимации. Основой является проект «Toonz», который разработала итальянская компания Digital Video. Адаптировав эту программу, Studio Ghibli успешно использует ее уже много лет. Кроме мультипликационных картин проект также был задействован и в компьютерных играх — Discworld 2 и Claw.

Стоит отметить, что цена пакета до настоящего момента составляла $10000.

С помощью рассматриваемого кода, создавали «Ходячий замок Хоула», «Унесенных призраками», «Рыбку Поньо», а также множество других картин. В их числе так же мультфильм «Футурама»!

>>> Подробности



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

Давно уже вылез. Правда, автор пишет, что публикация на ЛОР'е для него скорее самоистязание чем пиар :)

anon1984
()

Очевидно, что размещение рекламы проплачено. Просьба к администрации, озвучьте пожалуйста, расценки на размещение тут новостей о проприетарных продуктах, не работающих в ОС Linux.

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

Очевидно, что размещение рекламы проплачено. Просьба к администрации, озвучьте пожалуйста, расценки на размещение тут новостей о проприетарных продуктах, не работающих в ОС Linux.

Сколько тайн и загадок вокруг нас... Мне так интересно читать все эти конспирологические изыскания. Продолжайте. Мне это всё очень нравится. Собственно, как я уже говорил, ради этого я и посещаю LOR, захватив попкорн чай. :)

Andrey_Karpov_2009
() автор топика

100% ошибок, описанных в статье выдавливается cppcheck + clang-analyze. неправильно ты, дядя Федор, бутерброд ешь, надо маркетингом вниз намазывать

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

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

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

бинаркник sendmail был без экзекьютабл бита. ну забыли люди...

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

anonymous
()
Ответ на: а нафиг вообще ваш PVS от MHz

штатный анализатор VS тоже ругаться умеет...

Ругаться умеет. Но толку от этого мало. Стандартные средства диагностики на порядок слабее, чем в PVS-Studio. Например, пару лет назад PVS-Studio находил в 6 раз больше ошибок, чем Visual Studio. Думаю, сейчас мы находим больше раз в 10-20. Однако, я знаю, что никаким нашим сравнениям не поверят. Поэтому у меня есть иной Proof. Если бы Visual Studio имел мощный анализ, мы бы не нашли все эти ошибки в проектах Microsoft.

Наши проверки С++ проектов:

Вот наши проверки С# проектов:

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

Это было аж 2 года назад, сейчас 5 ветка гораздо интересней должна быть.

Спасибо, возьму на заметку.

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

100% ошибок, описанных в статье выдавливается cppcheck + clang-analyze. неправильно ты, дядя Федор, бутерброд ешь, надо маркетингом вниз намазывать

Это неправда.

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

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

Атака: Народ против PVS-Studio: дубль первый (дубль первый, и он же последний :)

Ответ: https://habrahabr.ru/post/128607/#comment_4253780

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

Логическая ошибка

Если бы Visual Studio имел мощный анализ, мы бы не нашли все эти ошибки в проектах Microsoft.

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

MHz
()

Не подскажете как можно настроить адблокер на распознавание таких новостей?

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

мдяя

решил посмотреть

Analysis of .NET Core Libraries (CoreFX): http://www.viva64.com/en/b/0365/

The most dangerous code fragments.
V3027 The variable 'start.BaseMapping' was utilized in the logical expression before it was verified against null in the same logical expression. Mappings.cs 598

internal void SetSequence() { if (TypeDesc.IsRoot) return;

StructMapping start = this;

// find first mapping that does not have the sequence set while (!start.BaseMapping.IsSequence && //<== start.BaseMapping != null && //<==??? !start.BaseMapping.TypeDesc.IsRoot) start = start.BaseMapping; .... }

We see a serious logical error here! An object with the 'start' name in the body of the loop gets changed during every iteration and the loop executes while the object is in a particular state. BUT the check of the «start.BaseMapping != null» condition is done only after the access to «start.BaseMapping.IsSequence», which can lead to the dereference of the null reference.

Так а что такого там опасного ? Как говориться с этого места попобробнее...

MHz
()
Ответ на: мдяя от MHz

мдяя

....

Так а что такого там опасного ? Как говориться с этого места попобробнее...

В C# есть ссылки. Ну штуки такие. Подробнее про них можно почитать в книгах. Их нельзя разыменовывать, если они нулевые. Вернее, можно, но будет сгенерировано исключение. Рассмотрим фрагмент условия:

!start.BaseMapping.IsSequence && start.BaseMapping != null

В начале осуществляется доступ к start.BaseMapping.IsSequence. Затем вспоминают, ссылку start.BaseMapping надо проверить на null. Но уже поздно. Мы её разыменовывали. Поэтому, если там был null возникнет исключение. Что-бы исправить код, нужно поменять проверки местами:

start.BaseMapping != null && !start.BaseMapping.IsSequence
Andrey_Karpov_2009
() автор топика
Ответ на: комментарий от Odalist

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

Как только найдут... А несмотря на это множество людей сколько там просуществовали heartbleed и shellshock до того как их опубликовали?

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

мдяя2

в приведенном примере кода нет операций разименования

поэтому если !start.BaseMapping.IsSequence (проверка типа того что прилетело) не вызывает исключения (скорее всего это так, лень проверять), то start.BaseMapping != null тем более не вызовет исключения

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

а вообще работу с указателями нормальные люди в C# не используют

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

Опять ты со своей рекламой. Достал уже.

Реклама рекламе рознь. Рассматривать конкретные участки кода и разбирать стандартные ошибки, это не тоже самое, что просто рекламировать свое ПО.

AVL2 ★★★★★
()
Ответ на: мдяя2 от MHz

не тормози. Обращение к start.BaseMapping.IsSequence Это две операции разименования. Сначала start.BaseMapping, а затем start.BaseMapping.IsSequence. Так что в идеале вообще надо проверять три условия. start start.BaseMapping и затем уж start.BaseMapping.IsSequence.

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

AVL2 ★★★★★
()

Забавно насколько большинство багов было специфично для C++, и были бы невозможны в Java/C#. Просто ошибки реально детские и вроде никогда их не делаешь, когда пишешь С++ код. Потому по сути перестаешь ценить то, что во время дизайна языка Java такие вещи исключили by design. А это неплохо, учитывая что даже детские ошибки иногда всплывают и не на все их них С++ компилятор готов ругаться, разве что статический анализатор

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

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

Прохладные истории.

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

Не подскажете как можно настроить адблокер на распознавание таких новостей?

Можешь просто добавить Andrey_Karpov_2009 в друзья.

А по сабжу — тыкал как-то эту поделку, штатный анализатор студии нашел больше.

p.s. Нашел больше не на синтетическом тесте «давайте сделаем код, который не найдет один анализатор, но найдет наш», а на реальном коде.

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

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

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

вас ненавидят
тоже ненавидят
свидомые

На ЛОР-е обсирают все и вся, а если ты считаешь это личным или национальным, то ты или школьник или идиот с незамутненным сознанием.

П.С. Ждем релиз сабжа на онтопике, тогда и ненужного флейма в новостях станет меньше.

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

100% ошибок, описанных в статье выдавливается cppcheck + clang-analyze

это ты прыщи себе выдавливаешь, а ошибки *устраняются*

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

А по сабжу — тыкал как-то эту поделку, штатный анализатор студии нашел больше

тред не читай, сразу отвечай. выше же дали ссылку https://habrahabr.ru/post/128607/#comment_4253780

Цитирую

Вы только доказали что ни разу не работали ни с VS, ни с PVS-Studio. VS ругается на все стандартные функции независимо от контекста и корректности, предлагая заменить их на проприетарные расширения от Microsoft чтобы обеспечить vendor lock-in вашего кода

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

Но лоре до недавнего времени обсирали весело и непринужденно.

а теперь вот так

Типичный лысый жлоб. Такой вряд ли будет страдать

без ума и фантазии, просто с ненавистью,

другая цитата:

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

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

тред не читай, сразу отвечай. выше же дали ссылку

Ссылка не имеет отношения к тому, о чем я написал. Стандартных функций это не касалось.

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

Какого хрена тогда автор новости тут делает?

Quasar ★★★★★
()
Ответ на: комментарий от ya-betmen

ya-betmen> Когда будет под линь?

Полагаю, не раньше, чем Andrey_Karpov_2009 будет забанен на ЛОРе.

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

Andrey_Karpov_2009> Не можем.

Неосиляторы.

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

Andrey_Karpov_2009> На данный момент существует экспериментальная версия PVS-Studio для Linux.

Так ведь всем ЛОРом сошлись на том, что под линукс оно не нужно, не?

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

Andrey_Karpov_2009> Сколько тайн и загадок вокруг нас... Мне так интересно читать все эти конспирологические изыскания.

Я всё понял. Тебя наняли рептилоиды.

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

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

anonymous
()

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

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

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

Это с каких пор открытый код стал непременно бесплатным?

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

администрация Лора разгружает камаз денег, им тоже тяжело:

Макском и Шаман переехали в Зимбабве?

cipher ★★★★★
()

Господи, прочёл статью - ДА Я ЧЁРТОВ ГЕНИЙ по сравнению с той тупорылой индуснёй, что писала этот умопомрачительный код! :) Ужас на крыльях ночи.
Я вообще не понимаю, как можно танцорам лезть со своим неумытым хлебалом в С++! Они ж там бомб разложили - что Алькаида нервно дёргает кольца!
Сам-то С++ - та ещё муть на костылях, так ещё и квалификация разрабов... Пример:

if (SomeInt % 2 != 2) ....

После такого кода нужно просто физически отрубать руки - в ИТ таким делать нечего!

PVS - молодцы.

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

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

:)) Тоже как бы верно, но опять же, бабка надвое сказала: Если ты - «старожил» проекта, разгребать своё дерьмо - тебе же. А если ты временный студентик или вообще оутсорсная индусня - да, там вообще покласть на качество! «Задача поставлена? Да. Вывод совпадает с планируемым? Да. Деньги на бочку и мы исчезаем!». :)

И что вдвойне более интересно: когда тебя ЗАСТАВЛЯЮТ писать, да ещё какую-нть скучную опердень, невольно хочется побыстрее отвязаться от кода. В опенсорсе - там всё по любви :) и даже как бы стимул писать хорошо! Но опять же, это не отменяет наличия в опенсорсе «скучных задач».

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

впрочем эту информацию нужно и перепроверить, как и любую другую информацию от ребят с винфака

с винфака

Пруф или?..

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

шли года, технологии совершенствовались, гигагерцы увеличивались

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

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