LINUX.ORG.RU

Cppcheck 2.5

 , , ,


2

5

Вышла новая версия статического анализатора для С и С++.

В новой версии:

В парсере:

  • различные исправления;
  • теперь поддерживаются все возможности c++11, c++14, c++17;
  • частичная поддержка с++20.

Также анализатор теперь:

  • знает больше об API;
  • показывает меньше ненужных предупреждений;
  • находит больше багов;
  • исправлены вылеты и ложные срабатывания в Misra.

Добавлены новые проверки:

  • подозрительное присваивание контейнера/итератора в условии;
  • повторное пробрасывание текущего исключения с помощью throw;.

Примеры кода, которые демонстрируют новые проверки:

void f(std::string s) {
  if (s = "123") {
  }
}
Assignment in condition should probably be comparison
void func1(const bool flag) { try{ if(!flag) throw; } catch (int&) { ; } }
Rethrowing current exception with 'throw;', it seems there is no current exception to rethrow.
If there is no current exception this calls std::terminate(). More: https://isocpp.org/wiki/faq/exceptions#throw-without-an-object

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

★★★★★

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

А проверку самого себя проходит?

AlexVR ★★★★★
()

А чем лучше clandg?

anonymous
()

Примеры кода, на котором проявляются новые проверки

Детский сад, а не проверки. Оно за clang-tidy не угонится никогда, тем более что они безумно пытаются поддерживать собственный парсер C++.

anonymous
()

Текстовыми ЯП еще кто-то пользуется в 2к21? Я вот уже как несколько лет перешел на метапрог и не жалею.

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

Чем оно лучше пивас-студии?

О том же подумал. Писать не стал.

Тут слишком много хейтеров бессмысленных 🦄🌈

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

Это (очень) другое. В юнити и блендере внезапно не программисты работают. Игру более-менее крупную на юнити делает команда, так вот не все мышкой там. Ремейк вейстленда к примеру. В cryengine скрипты на луа, мышкой там ИИ на карте выставляются. Означает ли это что крайзис вообщем-то можно запилить мышкой? Хоть в 2007 хоть в 2к21.

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

как минимум тем, что открыто и бесплатно? или это уже не считается?

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

А вот Расту такое не нужно.

Там что, невозможно сделать ошибку вида: if (s = «123»)…;? Или он сам предупреждает о таких ошибках?

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

Конечно. Раст это же только сейф подмножество, не забывай про ансейф, в котором может быть ub. Поэтому у растоманов есть miri.

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

Тут слишком много радужных долбонавтов, вроде тебя и того клоуна карпова со своим пивасом.

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

2k21

Такой бред могли придумать только янки с их вонючей имперской системой... 2.021К тогда, зумерок. Или уже 2.021*10^3 год, или 2.021 килогод.

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

Это результат слабой типизации. А в сишке вообще нет bool, поэтому любое значение /= 0 это true, и эта хрень перекочевала в плюсы.

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

Не засирают ЛОР агрессивным маркетингом.

ncrmnt ★★★★★
()

Примечательно, что в новость набежали фанаты раст. Они сейчас конечно начнут рассказывать про «это вы в наши новости первые пришли», но мы-то знаем. К тому же это отмазка уровня начальной школы.

P. S. случайно наткнулся сегодня:

rust-positive> а-а-а! в сишке страшные указатели! мы их не понимаем!

wikipedia> является отличительной чертой младенцев с расстройствами аутистического спектра: так, при попытке указать им рукой на какой-либо объект они смотрят на руку

Совпадение или разгадка тайны?

anonymous
()

Кто вообще пишет на этом C++ где-то кроме студентов редких вузов непораженных раком (пасцалем)?

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

Открой журнал «Радио» 80х годов. Такая нотация использовалась просто потому, что точка (или запятая) могла легко потеряться или непропечататься. Или наоборот.

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

Такой бред могли придумать только янки

танцполом попахивает

зумерок

вообще мимо, да я на том же ЛОРе подольше тебя обитаю (так, как косвенный показатель возраста)

Или уже 2.021*10^3 год, или 2.021 килогод.

задрот детектед

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

танцполом попахивает

Попахивает твоей безграмотностью. https://www.youtube.com/watch?v=zkuYuRn6Vls

вообще мимо, да я на том же ЛОРе подольше тебя обитаю

При чем здесь это?

задрот детектед

Ааа, адекватность, точность, научность это теперь задродство... Зумерок по мышлению.

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

Это действительно зумерок, но ты умудрился облажаться даже в споре с ним. Ещё и приписал себе откуда-то

адекватность, точность, научность это теперь задродство…

ты же покажешь мне в своих сообщениях каждое из этих свойств, да?

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

ты же покажешь мне в своих сообщениях каждое из этих свойств, да?

Я про метрическую систему. А 2к21 это что? Через 5 тысяч лет люди поймут что это значит? Тут даже сокращения нету. «К» короче чем «0»? Нет. В чем смысл этого новна: 2к21?!

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

P.S. я понимаю в чем. ПОтому что американцам впадлу говорить на своем языке и они сокращают ТуСаузенд/твенти в ТуКей. У нас это лишено смысла: два ка двадцать один произносить дольше чем двадцать двадцать один(у нас года вообще по двум последним разрядам говорят). И ладно бы это было в устной речи, так это какого-то хрена на письме используют. НАХЕРА!? 2к21 занимает ровно столько же столько и 2021. Вот из этого и проистекает пренебрежение к тупым зумеркам, которое все тупо повторяют и доедают за западом ничего не осмысляя.

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

2к21 это вполне понятная нестандартная нотация. Всё-таки насчёт адекватности: ты всерьёз считаешь, что это кто-то будет читать спустя 5 тысяч лет? Кстати, если бы кто-то и стал бы это читать - понял бы без проблем по дате поста.

Попытки формализовывать разговорный язык - это вахтёрство какое-то.

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

А зачем там используют такую нотацию? 2к21 имеет совершенно другую природу. Это им еще повезло, что этот тренд после 10-х появился. А то какие были бы холивары: 2к7 или 2к07.

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

А зачем там используют такую нотацию?

Запятые на схемах могут потеряться/затереться.

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

тот рейтинг не соответствует потребностям рынка. например, php там нишевый, в то время как в СНГ он первый, мало того большинство сайтов на нем работает. c++ нужен там в геймдеве, а в россии он не пережил кризиса 2008-го. у нас только кое-как шевелится мобильная разработка, но там джава. C++ же нужен для игр, где подвисания из-за сборки мусора (как в той же джаве) доволно критичны. На джаве шутеров не пишут, но и в России шутеров не делают. Возвращаясь к TIOBE, а тебя не смущает, что там есть Matlab и Delphi?

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