Вышла новая версия статического анализатора кода cppcheck 2.11, позволяющего выявлять различные классы ошибок в коде на языках Си и Си++,...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=59355
Видеть упоминания си всегда смешно, smatch всегда круче был и в сабже поддержка какая-то для галочки максимум. Правда чёт он там устарел и современный модный си наверно не очень поддерживает. С другой стороны, что там вообще анализировать -- если что не так,только проверки в рантайме спалят. Вот и не пользуется спросом эти полумеры видимо.
Полумеры или не полумеры, а если проверка при сборке что то выявила, то это экономия времени на тестировании.
При сборке другие проверки. Сабж это про подсветку "подозрительных" конструкций в IDE, по факту только отвлекает от более важных вещей.
При сборке эти проверки. Некоторые его даже прикручивали к системам контроля версий, чтобы контролировать коммиты на корректность и не пропускать в репозиторий. Ловит некоторые проблемы, которые на данный момент не могут выловить штатные компиляторы. Плюс умеет контроль исходников по правилам MISRA C.
Да, тут стоило бы конкретизировать, _при сборке каким компилятором_ эти проверки. Из интереса прикручивал к сишным проектам и сабж абсолютно бесполезен -- даже если компилятор уже жалуется, он ничего не увидит.
> Да, тут стоило бы конкретизировать, _при сборке каким компилятором_ эти проверки.Если про конкретные случае - у нас используется для программирования встроенных систем GCC 4.8.1 - cppcheck что-то находил из того, что не находил штатный компилятор.
Разумеется если пользоваться этим куском старого десятилетнего говна, то ничего и не найдете.
> Разумеется если пользоваться этим куском старого десятилетнего говна, то ничего и не
> найдете.Я пользовался GCC 8 и 10 и даже -Wall -Wextra, pedantic, -Wconversion (этот особенно злой) и проч. А на некоторые платформы свежего GCC может и не быть. Скажем для AVR гцц в дистрах обычно застыл на уровне 5.4 и что-то более новые не релизят, может какие проблемы есть с той платформой, мало ли.
И еще - есть баги компилера. Если gc 4.8 генерил правильный код во всех ситуациях, то что более новый генерит не хуже, во всех ситуациях - отдельный квест по валидации и чертова куча тестов того что получилось заново. Баги в компилерах и на стыке все же бывают.
> Да, тут стоило бы конкретизировать, _при сборке каким компилятором_ эти проверки.
> Из интереса прикручивал к сишным проектам и сабж абсолютно бесполезен --
> даже если компилятор уже жалуется, он ничего не увидит.А у меня весьма недурно ловил спорные моменты. И это в сишной фирваре где antbug coding был от души. А все равно пару моментов нащупал и я согласен с ним что в принципе так лучше было не делать. С чего это он "бесполезный"?
Просто его пускать надо как-то типа cppcheck --enable=all --bug-hunting <what>. Bug-hunting может дать ложные срабатывания но все равно полезен.
> по факту только отвлекает от более важных вещей.Глянул. Да, без фильтрации "спама" ненужными сообщениями, только отвлекает.
В cpplint хотя бы можно указать, что конкретно проверять, а не заниматься бесполезной генерацией спама.
> Видеть упоминания си всегда смешно, smatch всегда круче был и в сабже
> поддержка какая-то для галочки максимум.Вот не скажите, весьма недурно на сишных проектах работает и словил эн багов. Плюсы по сути superset сей, как при этом можно не уметь в анализ кода на си - загадка :)
> что там вообще анализировать -- если что не так,только проверки в рантайме спалят
Да чтоб у твоего гироскутера в рантайме фирмварь по проверкам брякнулась.
> Видеть упоминания си всегда смешно, smatch всегда круче был и в сабже
> поддержка какая-то для галочки максимум.Вот не скажите, весьма недурно на сишных проектах работает и словил эн багов. Плюсы по сути superset сей, как при этом можно не уметь в анализ кода на си - загадка :)
> что там вообще анализировать -- если что не так,только проверки в рантайме спалят
Очень круто когда у вас фирмварь вдруг раз - и рантайм еррор. А теперь прикиньте если это в ECU вашего авто было?! Представляете там сишка - и статический анализ как раз вполне хорошая идея. MISRA подтвердит.
А очень просто, никаких загадок. Анализа "легаси" конструкций не производится. Си и его компиляторы слишком непредсказуемые на сколько-нибудь сложной логике, в таких вопросах намного безопаснее ассемблер. Какой-нибудь compcert ещё можно в ракеты запихнуть.
Прелесть ассемблера в том, что там нет никаких UB и фантазий компилятора. Если что-то пошло не так — претензии можно предъявлять только себе.
> А очень просто, никаких загадок. Анализа "легаси" конструкций не производится.Что значит - легаси? Почти все сишные конструкции валидны и в си++ и не объявлены deprecated даже в самой последней версии стандарта. Так что без их рюхания и анализ плюсов не получится.
> Си и его компиляторы слишком непредсказуемые на сколько-нибудь сложной логике,
Нормальные, если уметь их готовить. И сабж тому пример, вполне себе нашел пару мест которые мне не нравятся в моих фирмварях. Хоть они и деланы для надежной работы без багов. Сабж подхайлайтил пару мест которые работали - но стоило все же переписать, если вон то было целью.
> в таких вопросах намного безопаснее ассемблер.
Угу, щас. Там вообще ни аннотации намерений кодера нет, ни структурирования данных нормального (e.g. struct), ни типизации, ни нормального визуального структурирования программы. А уж проверить что функцию нормально вызвали автоматически - да сейчас.
> Какой-нибудь compcert ещё можно в ракеты запихнуть.
Запихивайте наздоровье, я не возражаю. А вот ассемблер в программе больше пары килобайт - сущий трэш и угар. Я на нем еще и умею - и проверял. Так что вот не надо мне тут сказок.
Убийца раста?
Нет. Пока это third-party плагин, макaки им пользоваться не будут, а мaкак больше, чем хороших программистов.
Вы перепутали убийцу и жертву. Rustcheck абсолютно излишен.
Ту вы вступаете на тонкую грань противопоставления статического анализатора и линтера. Да, команда `cargo check` занимается не поиском висячих ссылок, а проверкой стиля, но всё равно это статический анализ кода.
Я как-то не встречал уязвимостей, вызванных форматированием кода. Да, плохой стиль может быть причиной, почему уязвимость не заметили, но это другое
Эх. Но с другой стороны хорошо, что тут не хабра и нету сектанто-маркетолухов pvs(gvn)-studio.
Ну, пивас-студия неплохая, на самом деле. Но пиар-отдел у них, конечно, да. Видимо, на тринадцатую зарплату нарабатывает, не иначе.
Если правильно помню и ни с кем не путаю, у них до той студии был другой какой-то проект. Автор пришёл порекламировать на wasm.ru, ему там подробно и совершенно бесплатно объяснили, почему не взлетит. Тогда проект был преобразован в нынешний. А пиар-отдел с тех пор провоцирует критиков на дельные советы.
У них был бесплатный проект. Он ожидаемо не взлетел.
Поискал, назывался тот проект viva64 и предназначен был для отлова проблем при переносе 32-х разрядного кода в 64 в ОС Windows. То есть дело было в ограниченном применении, а не бесплатности (временной, на первом этапе).
Не, не то.
https://pvs-studio.ru/ru/cppcat/
> Не, не то.
> https://pvs-studio.ru/ru/cppcat/Что не то? Вот это по ссылке "который был запущен в начале 2014 года" -- кончено не то. wasm.ru тогда наверное уже и не было. viva64 вышел во второй половине нулевых, как показывает поиск.
Сначала был viva64. Потом появился PVS Studio. Потом запилили CppCat для бедных, который не взлетел. Как-то так.
Вот я и пишу, что автор пришёл рекламировать viva64 на форум, а в результате критики отказался от начальных целей и преобразовал проект в другой, успешный. Потому пиар-отдел и повторяет то действие (рекламу) так усердно. Из 1000 ответов критиков 1 может оказаться дельным, вот ради этого всё и затевается.
Да насколько я помню рекламщик этой фигни и здесь раньше кормился
Может Максим его выгнал, может с мишкой-карманником бабло не поделил, но последнее время не видно
Ну судя по плашке «(реклама)» у последней новости просто решил спросить с них бабосики и пвс мгновенно слились. https://www.opennet.ru/cgi-bin/opennet/ks.cgi?mask=pvs-studio
Чето я гоню там у всех плашка реклама, просто последняя была в 2018 году.
> Ну судя по плашке «(реклама)» у последней новости просто решил спросить с
> них бабосики и пвс мгновенно слились. https://www.opennet.ru/cgi-bin/opennet/ks.cgi?mask=pvs-studioНу главное, что слились
При чем ничего не имею против коммерческого софта, если он востребован, ничего не имею против его рекламы
Но не так назойливо и в местах для этого предназначенных, пожалуйста!
На Хабре, да ради ЛММ! На профильных конфах, да сколько угодно, если разрешают организаторыА на лоре или опеннете, ну не место пвсу, простите
Пока не будет новости "ПВС открыт под GNU GPLv3" или какой-то подобной не место им здесь, хоть застрелись
Приятно видеть, что новость про Cppcheck, а обсуждают PVS-Studio :). Спасибо всем неравнодушным.Приходите на бета-тест плагина PVS-Studio для Qt Creator и Visual Studio Code: https://habr.com/ru/companies/pvs-studio/news/743566/
А на форумах кошатников в теме про то, что пришло лето обсуждают клещей и прочих паразитов...
Так себе радость
Здесь сразу пишут идеальный код на сишечке. И без дыр, надо заметить!
Настоящие программисты ошибок не допускают.
Все в мире совершают ошибка, а они нет. Опять методички от поборников безопастного языка.
Эльбрус много чего критически важного не поддерживает, например, закладочки анб и светодиодики на стойке. Пока без этого в крупные уважаемые конторы ему доступ закрыт.
> No XP support
И что? Эта платформа устарела ещё в году 14ом.
В 2007.
Я даже приблизительно представить не могу, какая нужда может заставить заниматься разработкой на машине с XP.
два этажа научной установки и какой нить контроллер IEEE-488 заставит и ни такое себе представить )))))
Я не спорю, что в составе программно-аппаратных комплексов можно и MS-DOS найти. Но разработку-то на этой машине вести зачем?
> Но разработку-то на этой машине вести зачем?ну, если для работы остального окружения нужны программы, работающие только в MS-DOS и не так приходится раскорячиваться, хотя, конечно, разные dosbox-ы и dosemu немного облегчают дело..
Не отчаивайтесь, анонимы.Для XP подходит эта версия:
https://github.com/danmar/cppcheck/releases/tag/1.69
https://sourceforge.net/projects/cppcheck/files/cppcheck/1.69
Для Висты:
https://github.com/danmar/cppcheck/releases/tag/1.83
https://sourceforge.net/projects/cppcheck/files/cppcheck/1.83
Проверил вчера свой хелловорлд -- ошибок нет. :-)
> Не отчаивайтесь, анонимы.
> Для XP подходит эта версия:
> https://github.com/danmar/cppcheck/releases/tag/1.69с довольно обозримыми правками консольная версия собирается до 2.3, если не путаю. Дальше они перешли с потоков ОС на потоки стандарта C++, ещё чего-то поменяли, правок сильно слишком много и собирать дальше уже не получилось.
Вместо того, чтобы похоронить уже этих динозавров (Си, Си++), продолжают наращивать мощь костылей. Теперь, типа, наши костыли ещё более костылястыми стали, хромать на обе ноги вы сможете ещё быстрее.
> Вместо того, чтобы похоронить уже этих динозавров (Си, Си++), продолжают наращивать мощь
> костылей. Теперь, типа, наши костыли ещё более костылястыми стали, хромать на
> обе ноги вы сможете ещё быстрее.Ну ты софт перепиши на очередном "убийце" а мы посмотрим что получится. Из хруста получилась вот кучка корпоративных холуев, с обязательным поклонением амазону, гуглу и майкрософт в репах карги. И они за всех будут на троих соображать что хорошо а что плохо.
Слишком много на нем написано, чтобы хоронить.
Не нравится СИ и С++, не использую и программы можешь, написанные на этих языках, не запускать.