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)
Ответ на: комментарий от Centaur

Нормальный подход. Анализатору плевать, что анализировать - код растрового или векторного графического редактора.

Тебе просто демонстрируют возможности автоматизации поиска ошибок в коде.

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

Погрязать в болоте бессмысленного срача я не собираюсь.

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

Что за потребительское отношение? Миру СПО протягивают руку помощи, взамен лишь рекламируя себя среди платёжеспособных, обычно закрытых, проектов. Т.е. не предлагая даже этот платный продукт энтузиастам и более крупным командам из мира свободного программного обеспечения. (Думаю таким клиентам они будут рады, но это не их целевая аудитория в рекламной кампании).

Я сам фанат СПО, использую СПО, популяризую СПО и т.д. и т.п. Но таких клованов как ты не понимаю. Ладно там больные люди, есть у нас такие, их можно понять и принять, но у тебя белого билета вроде нет. Или уже есть?

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

Опять пиар, опять маркетинг...

Не завидуй.

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

Ну если «самсобирал» то «самитрахайся». Тут у нас один не глупый человек ядро сам так насобирал, что одно ядро проца 100% времени грузил. Долго разбирался, кто виноват. Когда понял, что сам и виноват — молчит. Видать еще не решил.

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

угу. как на 45 обновился (в генту) так и сыплется, даже на ЛОРе стал иногда рушиться.

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

Ну если «самсобирал» то «самитрахайся».

если сам, то да. так тут емёрдж постарался.

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

Ответь на один вопрос: что плохого в том, что сабж проверяет СПО и даёт обратную связь разработчикам и сообществу?

Ответь на один вопрос: какой толк от статического анализатора кода, когда его использовали ровно один раз? Ты вот моешься хотя бы раз в неделю, зачем? Если ты помоешь бомжа и опять отпустишь, он долго будет «человеком»?

Что за потребительское отношение?

Я о том же.

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

Я специально выкинул телевизор из дома, чтобы мне ничего не рекламировали. Нет, опять приходит очередной свидетель иеговы в пони-футболке и пытается что-то впарить, чтобы поиметь деньги. Это самые настоящие паразиты для СПО: тебе, как малому, дают лизнуть леденец, а в обмен хотят вывернуть чьи-то карманы.

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

Я сам фанат СПО, использую СПО, популяризую СПО и т.д. и т.п. Но таких клованов как ты не понимаю.

Ты какой-то проплаченный наймит со стороны сабжевой конторки.

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

какой толк от статического анализатора кода, когда его использовали ровно один раз? Ты вот моешься хотя бы раз в неделю, зачем? Если ты помоешь бомжа и опять отпустишь, он долго будет «человеком»?

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

Другими словами. Ты бомж и очень хочешь жрать. Умираешь прям с голоду. Тебе дали буханку хлеба и сказали, что извини, больше не дадим, самим надо. Ты наелся и говоришь: вот с#ки! Так?

PS1: Можно ведь в темы про PVS не заходить, если очень бесит. ЗЫ2: Я пришёл от логопеда. :)

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

Если ты помоешь бомжа и опять отпустишь, он долго будет «человеком»?

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

Sociopsih ★☆
()
Последнее исправление: Sociopsih (всего исправлений: 1)
Ответ на: комментарий от MuZHiK-2

Ответь на один вопрос: какой толк от статического анализатора кода, когда его использовали ровно один раз? Ты вот моешься хотя бы раз в неделю, зачем? Если ты помоешь бомжа и опять отпустишь, он долго будет «человеком»?

Т.е. мало того что ты чмыришь СПО, так ты предлагаешь ни какую помощь ИРЛ бомжам не оказывать? Может их тогда, эта, в печку сразу? Вместе со свободным ПО?

Я о том же.

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

Ой, я забыл. Ты же и против Столлмана. Тебе просто посраться важно.

Я специально выкинул телевизор из дома, чтобы мне ничего не рекламировали. Нет, опять приходит очередной свидетель иеговы в пони-футболке и пытается что-то впарить, чтобы поиметь деньги. Это самые настоящие паразиты для СПО: тебе, как малому, дают лизнуть леденец, а в обмен хотят вывернуть чьи-то карманы.

выкинул телевизор из дома

Ну и выкинь все компы, ноутбуки и т.д. В чём проблема, радикальный ты наш?

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

Ты какой-то проплаченный наймит со стороны сабжевой конторки.

Тебя соримарк покусал?

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

Странный ты человек. В коде софта, которым бесплатно пользуются миллионы человек, исправили ошибки.

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

Умираешь прям с голоду.

Ага, бедный Inkscape уже десять лет с голоду помирает.

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

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

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

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

А D не хотите?

На нём не ведется разработка ПО в промышленных масштабах. Слишком узкий рынок, по сравнению с C++ или C#.

Тогда что насчёт АДА?

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

Т.е. мало того что ты чмыришь СПО, так ты предлагаешь ни какую помощь ИРЛ бомжам не оказывать? Может их тогда, эта, в печку сразу? Вместе со свободным ПО?

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

Не передёргивай, мастер срачей. Я о тебе лично, и о куче таких же как ты клоунах для которых СПО неприкасаемо.

То, что ты проплаченный наймит - я понял. Не продолжай. Срочно меня аватарку на пони-иегову.

Ну и выкинь все компы, ноутбуки и т.д. В чём проблема, радикальный ты наш?

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

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

Ну это да. Проприетарщина - зло в любом виде, а эти господа активно пиарятся везде, где только можно, пытаясь заработать на СПО.

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

Андрей, спасибо, что помогли улучшить мой любимый редактор

Пожалуйста. И спасибо за поддержку.

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

Тогда что насчёт АДА?

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

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

Товарищ пролетарий, вам бы еще марксов-энгельсов почитать, вот их книжечки вам бы понравились: удобно вписались бы в коммунистический манямирок бесплатногосвободного ПО.

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

Ужасно, просто ужасно. Как только не стыдно!

Это даже не заработать на СПО (как делает тот же редхат), а наживаться на нем. Не надо подменять понятия. Это как кидать цыганским детям деньги.

MuZHiK-2 ★★★★
()

Кстати, у Coverity, например, есть вполне неплохая мойка для бомжей, я пользуюсь и брат жив, они молодцы. Но авторы сабжа не хотят идти на такие жертвы... :-/ эти не молодцы.

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

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

Значит, давно ты его тыкал...

segfault ★★★★★
()

Спасибо за вклад в данный проект, какие бы цели при этом не преследовались.

segfault ★★★★★
()

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

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

Я специально выкинул телевизор из дома

Какая разница, если ты точно так же тупеешь от энторнетов?

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

Какая разница, если ты точно так же тупеешь от энторнетов?

Ну если так и дальше тут пойдет с рекламой и маркетингом в уши - то да, можно затупеть.

MuZHiK-2 ★★★★
()

«Очень странный метод» нужно переписать не так:

void
Path::SetBackData (bool nVal)
{
  back = nVal;
  ResetPoints();
}

а так:

void
Path::SetBackData (bool nVal)
{
  if ( back != nVal ){
    back = nVal;
    ResetPoints();
  }
}
anonymous
()
Ответ на: комментарий от MuZHiK-2

Скажите. а вот вы, к примеру, если бы рыбу не употребляли в пищу, тоже бы на рыбный магазин с вилами кидались? Ведь он на вашей любимой улице находится и там большими буквами над входом написано: РЫБА. И, прикинь, они тоже денег хотят.

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

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

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

Извините. С какой стати ЛОР - это ваша дверь? Это такая же улица, по которой вы каждый день ходите.

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

Звонят в твою дверь спамеры.

Не ходи на ЛОР и в прочие места, где светится ПСВ, будет тебе счастье.

mandala ★★★★★
()

Зря ругаетесь. Я слежу за проектом Wine, так там иногда делают массовую правку десятков файлов, делая одинаковую поправку. В коммите написано, что ошибка была найдена Valgrid

ZenitharChampion ★★★★★
()

PVS-Studio под Linux

PVS-Studio под Linux

PVS-Studio относится к СПО? Тогда зачем это изделие в новостях про СПО? Не важно, что им делают - хоть гвозди заколачивают. Налицо происходит подмена понятий и я полностью подписываюсь под постами пользователя с ником MuZHiK-2.

Erepb ★★★
()

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

Какому ещё переводчику?

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

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

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

Какому ещё переводчику?

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

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

«Одноразовый цикл»

Предупреждение PVS-Studio: V612 An unconditional 'break' within a loop. text_reassemble.c 417

int TR_kern_gap(....)
{ 
  ....
  while(ptsp && tsp){
    ....
    if(!text32){
      ....
      if(!text32)break;
    }
    ....
    if(!ptxt32){
      ....
      if(!ptxt32)break;
    }
    ....
    break; // <=
  }
  ....
  return(kern);
}

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

этот цикл скорее всего да (я посмотрел исходники вот здесь https://sourceforge.net/projects/libtere/files/latest/download?source=files), а вообще автор бредит

вот пример цикла, где перед «оператором break нет никакого условия»

for(int i=1; ; ++i)
{
  std::cout << i << '\n';
  if(i<10) continue;
  break;
}

p.s. что ваша искалка опечаток скажет про такой цикл?

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

заранее отвечу:

1. «скорее всего» т.к. потенциально какие-то с виду функции могут оказаться макросами

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

for(int i=1; ; ++i)
{
  std::cout << i << '\n';
  if(i<10) continue;
  std::cout << i << '\n';
  break;
}
www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 2)
Ответ на: комментарий от www_linux_org_ru

p.s. что ваша искалка опечаток скажет про такой цикл?

Ничего. С такими конструкциями лучше не связываться. Скорее всего это некая фича.

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

начиная с какой версии она «ничего не скажет»? когда-либо она какие-то замечания на эту тему делала?

Я не знаю. Этот вопрос надо изучить в начале (а мне лень :).

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

Извините. С какой стати ЛОР - это ваша дверь? Это такая же улица, по которой вы каждый день ходите.

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

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

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

И давно вам эти люди должны?

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

И давно вам эти люди должны?

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

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

Я призываю очистить ЛОР от презирающих открытое программное обеспечение

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

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