LINUX.ORG.RU

PVS-Studio под Linux, тренируемся на Inkscape

 , , , ,


0

4

Как я уже писал, мы потихоньку продолжаем заниматься созданием PVS-Studio for Linux. Потихоньку от того, что половина С++ сотрудников в летних отпусках. А так мы по-прежнему полны энтузиазма.

При разработке нам естественно надо на чем-то испытывать анализатор. Для этого берутся различные проекты, и иногда попутно, вот как сейчас, пишутся статьи. На этот раз жертвой стал графический редактор Inkscape. Если честно, я его даже никогда не видел (сам использую Gimp), но он не раз упоминался на Linux.org.ru, а значит местному сообществу будет интересно взглянуть на найденные в нем ошибки.

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

static bool
dw_val_equal_p (dw_val_node *a, dw_val_node *b)
{
  ....
  case dw_val_class_vms_delta:
    return (!strcmp (a->v.val_vms_delta.lbl1,
                     b->v.val_vms_delta.lbl1)
            && !strcmp (a->v.val_vms_delta.lbl1,
                        b->v.val_vms_delta.lbl1));
  ....
}

Но это потом, cтатью про GCC я ещё даже не передал переводчику. А пока приглашаю почитать про ошибки в проекте Inkscape.

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



Проверено: Shaman007 ()
Последнее исправление: CYB3R (всего исправлений: 4)

Для проверки использовалась последняя версия Inkscape — 0.92, код которой доступен в репозитории на GitHub

Эпичный фейл.

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

Эпичный фейл.

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

Кстати, что нового в 0.92 будет и когда оно вообще родится? Разрабы в курсе, что локализация в сборках под винду не работает?

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

не думаю, что это именно так работает :) они же ради пиара это делают, а не ради безвозмездной помощи разработчикам.

а так вообще deadbeef неоднократно прогоняли разными анализаторами, и все найденные проблемы оперативно исправлялись.

но я не исключаю, что с тех пор появилось много новых.

кстати, несмотря на то что в начале статьи по ссылке идет сомнительный контент (про new и смарт-пойнтеры, и сравнение this с null), дальше вполне интересно.

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

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

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

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

В соседнем проекте есть прецедент исправления в тот же день:

http://www.viva64.com/en/b/0273/
Checking GIMP's Source Code with PVS-Studio
15.08.2014

https://git.gnome.org/browse/gimp/commit/?id=9a245989c0ce9bb6ce150159bfce29df...
fix bogus checks against unsigned variables.
Spotted by Andrey Karpov using static code analysis:
http://www.viva64.com/en/b/0273/
2014-08-15 20:50:32 (GMT)

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

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

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

я не понял, в чем ты углядел эпик фейл. в том что по ссылке на гитхаб нет исходников, или в чем-то другом?

но да, похоже что я тебя изначально неправильно понял.

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

я не понял, в чем ты углядел эпик фейл. в том что по ссылке на гитхаб нет исходников

Именно.

Ну и товарищу Компилайнену могу ещё показать https://scan.coverity.com/projects/inkscape, где понятным английским языком написано «Defect changes since previous build dated Nov 13, 2014: 10 Eliminated» (и таки да — 4 Newly detected).

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

А, совсем забыл...

Кстати, что нового в 0.92 будет

http://wiki.inkscape.org/wiki/index.php/Release_notes/0.92

и когда оно вообще родится?

Не особенно слежу, но https://launchpad.net/inkscape/ milestone/0.92 как бы намекает, что ещё патчить и патчить.

Разрабы в курсе, что локализация в сборках под винду не работает?

Ничего похожего в трекере не наблюдаю.

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

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

waker ★★★★★
()

Было бы интересно проверить Qt Creator. Судя по частым падениям, ошибок там предостаточно.

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

Разрабы в курсе, что локализация в сборках под винду не работает?

Ничего похожего в трекере не наблюдаю.

потому что русским ГУИ никто не пользуется? Или сборками для винды русские суровые художники не пользуются? Или всех устраивает инглиш =(

1. установим Инкскейп под винду из инсталлятора с их сайта (0.91 под любую архитектуру). Запускаем. Видим английский ГУЙ

2. лезем в настройки и пытаемся выставить русский интерфейс вместо «дефолт для текущей ОС» (который РУ у меня)

3. жмем ОК (эффекта ноль), рестарт инкскейп - настройки - как стоял пункт дефолт для системы так и стоит, однако весь ГУИ на английском

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

почитал релизнотес, прям богато на новые фичи как-то в 0.92 будет

Kompilainenn ★★★★★
()

Опа! PиVаS-Студио опять всплыл.

anonymous
()

Проверьте, пожалуйста, Scribus. Это система вёрстки.

ZenitharChampion ★★★★★
()

Согласно современному стандарту C++, при невозможности выделить память оператор new генерирует исключение std::bad_alloc(), а не возвращает nullptr. В случае, если системе не удастся выделить память, будет выброшено исключение и выполнение функции прекратится, следовательно, программа никогда не зайдет в блок после условия.

http://en.cppreference.com/w/cpp/memory/new/operator_new

5) Called by the non-throwing non-array new-expressions. The standard library implementation calls the version (1) and returns a null pointer on failure instead of propagating the exception.

UVV ★★★★★
()

Когда я последний раз тыкал это поделие (Inkscape), то оно рушилось от каждого чиха. Уверен, что в статье указаны не все найденные проблемы.

Reset ★★★★★
()

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

Radjah ★★★★★
()

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

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

Судя по приведенным в статье кускам индусоговнокода это вообще чудо, что оно запускается и делает вид, что работает :)

Reset ★★★★★
()

Почему за pr одного отечественного антивируса его автора банят, а за pr pvs studio - нет? Коррупция?

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

А всё потому что плюсы не нужны.

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

сомнительный контент (про new и смарт-пойнтеры, и сравнение this с null), дальше вполне интересно.

. Что сомнительного? Все правильно написано -> outputBuf никогда 0 не будет.
Память выделенная потеряется.

art_corp
()

Достал уже пиар этого поделия тут. Что оно вообще делает в разделе Open Source? Это же очевидная проприетарщина, не надо подмазываться к Open Source.

MuZHiK-2 ★★★★
()
Ответ на: комментарий от AP

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

https://github.com/inkscape/inkscape/tree/bzr-original

И 9 дней назад оно там в мастере лежало, вроде. Статью, скорее всего, писали до этого.

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

Очевидно, потому что специалисты из крупных организаций тоже люди и некоторые сидят тут же, на ЛОРе.

И если конкретный специалист захочет использовать PVS-Studio, то ТС не будет сотрудничать непосредственно с этим специалистом, а уже с крупной организацией, в которой работает этот специалист.

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

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от MuZHiK-2

Что оно вообще делает в разделе Open Source?

Inkscape
Open Source

И шо тебе не нравится?

Достал уже пиар этого поделия тут.

Страдай.

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

5) Called by the non-throwing non-array new-expressions. The standard library implementation calls the version (1) and returns a null pointer on failure instead of propagating the exception.

Анализатор знает про nothrow и учитывает это. Данный момент описан в документации.

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

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

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

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

Вы все еще кипятите

Вообще-то за такие хаки нужно яйца рвать. С корнем! Не взирая на пол.

vada ★★★★★
()
Ответ на: комментарий от MuZHiK-2

[qoute]Достал уже пиар этого поделия тут. Что оно вообще делает в разделе Open Source? Это же очевидная проприетарщина, не надо подмазываться к Open Source.[/qoute]

Вы неправы: Inkscape это открытый проект. Статья посвящена его проверке.

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

нищеброды делающие в одиночку хобби-проекты

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

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

Очевидно, потому что специалисты из крупных организаций тоже люди и некоторые сидят тут же, на ЛОРе.

И если конкретный специалист захочет использовать PVS-Studio, то ТС не будет сотрудничать непосредственно с этим специалистом, а уже с крупной организацией, в которой работает этот специалист.

Совершенно верно.

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

тред не читал

V668 There is no sense in testing the 'outputBuf' pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error

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

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

Большинство не делает вообще ничего

Странный ты.

У меня, например, сейчас каникулы в школе.

И школьники есть тоже, и не скрывают этого.

заходит сюда потроллить

Кроме лолксов и обсуждений скриншотов тут много чего есть.

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

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

но я могу привести пример кода на крестах, в котором и new будет возвращать 0, и эксепшен не будет кидаться, и даже, например, не будет ни того, ни другого, а просто процесс будет прибит oom-киллером.

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

if косяки в релизах:

print «Нашли говно мамонта! В мастере исправлено или Эпичный фейл.»

if косяки в ветке мастер git:

print «Это не релиз! Исправят к релизу! или Эпичный фейл.»

AVL2 ★★★★★
()
Последнее исправление: AVL2 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.