The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск cppcheck 2.11, статического анализатора кода для языков C++ и С

29.06.2023 11:09

Вышла новая версия статического анализатора кода cppcheck 2.11, позволяющего выявлять различные классы ошибок в коде на языках Си и Си++, в том числе при использовании нестандартного синтаксиса, типичного для встраиваемых систем. Предоставляется коллекция плагинов, через которые обеспечена интеграция cppcheck с различными системами разработки, непрерывной интеграции и тестирования, а также предоставлены такие возможности как проверка соответствия кода стилю оформления кода. Для разбора кода может применяться как собственный парсер, так и внешний парсер от Clang. В состав также входит скрипт donate-cpu.py для предоставления локальных ресурсов для выполнения работы по совместной проверке кода пакетов Debian. Исходные тексты проекта распространяются под лицензией GPLv3.

Развитие cppcheck сосредоточено на выявлении проблем, связанных с неопределённым поведением и применением конструкций, опасных с точки зрения безопасности. Целью также является минимизация ложных срабатываний. Среди выявляемых проблем: указатели на несуществующие объекты, деления на ноль, целочисленные переполнения, некорректные операции битового сдвига, некорректные преобразования, проблемы при работе с памятью, некорректное использование STL, разыменование нулевых указателей, применение проверок после фактического обращения к буферу, выход за границы буферов, использование неинициализированных переменных.

Основные изменения:

  • Добавлена проверка pop_back() для пустых контейнеров;
  • Улучшены контроли в циклах для алгоритмов библиотеки STL any_of, all_of и none_of.
  • Улучшения анализатора потока управления:
    • Возвращаемое значение функции теперь может быть определено даже при использовании условий;
    • Переопределение размеров контейнеров возвращаемых из функции;
    • Выведение возможных значений на основании их возможных символических значений;
    • Улучшение после помещения значения в контейнер.
  • Графический интерфейс:
    • В файлах .cppcheck объявлена устаревшей и будет удалена в версии 2.14 поддержка типа платформы "Unspecified". Вместо неё необходимо использовать "unspecified';
    • В диалоговом окне выбора файлов проекта убрана замена относительных путей на абсолютные.
  • Интерфейс командной строки:
    • Добавлена новая опция "--check-level", определяющая уровень детализации проверок. По умолчанию задано значение "normal". Для расширенных проверок можно установить значение "exhaustive";
    • Для получения детальных сообщений "missingInclude" и "missingIncludeSystem" нет необходимости отдельного запуска с параметром --check-config. Теперь они выдаются при включении "missingInclude" при обычном вызове;
    • Сообщения "missingInclude" и "missingIncludeSystem" выдаются при задание параметра -j со значением большим 1 для сборок отличных от Windows;
    • Для сообщений "missingInclude" и "missingIncludeSystem" теперь применяется параметр "--error-exitcode";
    • Задание параметра "--enable=information" не будет включать "missingInclude" с версии 2.16, необходимо явное задание;
    • Каждая из проверок constParameter и constVariable была разделены на 3 идентификатора в зависимости от того, является ли параметр или переменная указателем, ссылкой или локальной, что позволит более точно задавать подавление некоторых типов сообщений;
    • Усилен контроль задаваемых значений для некоторых параметров командной строки, требующих задания целочисленных значений;
    • При сканировании проекта с заданием параметра "-j1" обработка файлов разметки откладывается до тех пор, пока не будут обработаны файлы с кодом.


  1. Главная ссылка к новости (https://github.com/danmar/cppc...)
  2. OpenNews: Доступен ShellCheck 0.9, статический анализатор для shell-скриптов
  3. OpenNews: Выпуск cppcheck 2.7, статического анализатора кода для языков C++ и С
  4. OpenNews: Facebook открыл код статического анализатора Mariana Trench
  5. OpenNews: Выпуск PHPStan 1.0, статического анализатора для кода на языке PHP
  6. OpenNews: Facebook представил Pysa, статический анализатор для языка Python
Автор новости: Совершенно другой аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59355-cppcheck
Ключевые слова: cppcheck
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (52) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:31, 29/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –17 +/
    Видеть упоминания си всегда смешно, smatch всегда круче был и в сабже поддержка какая-то для галочки максимум. Правда чёт он там устарел и современный модный си наверно не очень поддерживает. С другой стороны, что там вообще анализировать -- если что не так,только проверки в рантайме спалят. Вот и не пользуется спросом эти полумеры видимо.
     
     
  • 2.5, Анонимович (?), 11:39, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Полумеры или не полумеры, а если проверка при сборке что то выявила, то это экономия времени на тестировании.
     
     
  • 3.6, Аноним (1), 11:49, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • –8 +/
    При сборке другие проверки. Сабж это про подсветку "подозрительных" конструкций в IDE, по факту только отвлекает от более важных вещей.
     
     
  • 4.9, Совершенно другой аноним (?), 12:06, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При сборке эти проверки. Некоторые его даже прикручивали к системам контроля версий, чтобы контролировать коммиты на корректность и не пропускать в репозиторий. Ловит некоторые проблемы, которые на данный момент не могут выловить штатные компиляторы. Плюс умеет контроль исходников по правилам MISRA C.
     
     
  • 5.10, Аноним (1), 12:11, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Да, тут стоило бы конкретизировать, _при сборке каким компилятором_ эти проверки. Из интереса прикручивал к сишным проектам и сабж абсолютно бесполезен -- даже если компилятор уже жалуется, он ничего не увидит.
     
     
  • 6.12, Совершенно другой аноним (?), 12:21, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Да, тут стоило бы конкретизировать, _при сборке каким компилятором_ эти проверки.

    Если про конкретные случае - у нас используется для программирования встроенных систем GCC 4.8.1 - cppcheck что-то находил из того, что не находил штатный компилятор.

     
     
  • 7.39, unknown (??), 23:57, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Разумеется если пользоваться этим куском старого десятилетнего говна, то ничего и не найдете.
     
     
  • 8.69, Аноним (69), 04:34, 01/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я пользовался GCC 8 и 10 и даже -Wall -Wextra, pedantic, -Wconversion этот особ... текст свёрнут, показать
     
  • 6.68, Аноним (69), 04:28, 01/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Да, тут стоило бы конкретизировать, _при сборке каким компилятором_ эти проверки.
    > Из интереса прикручивал к сишным проектам и сабж абсолютно бесполезен --
    > даже если компилятор уже жалуется, он ничего не увидит.

    А у меня весьма недурно ловил спорные моменты. И это в сишной фирваре где antbug coding был от души. А все равно пару моментов нащупал и я согласен с ним что в принципе так лучше было не делать. С чего это он "бесполезный"?

    Просто его пускать надо как-то типа cppcheck --enable=all --bug-hunting <what>. Bug-hunting может дать ложные срабатывания но все равно полезен.

     
  • 4.17, Анонимович (?), 12:38, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > по факту только отвлекает от более важных вещей.

    Глянул. Да, без фильтрации "спама" ненужными сообщениями, только отвлекает.
    В cpplint хотя бы можно указать, что конкретно проверять, а не заниматься бесполезной генерацией спама.

     
  • 2.42, Аноним (-), 04:40, 30/06/2023 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
  • 2.53, Аноним (69), 11:17, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Видеть упоминания си всегда смешно, smatch всегда круче был и в сабже
    > поддержка какая-то для галочки максимум.

    Вот не скажите, весьма недурно на сишных проектах работает и словил эн багов. Плюсы по сути superset сей, как при этом можно не уметь в анализ кода на си - загадка :)

    > что там вообще анализировать -- если что не так,только проверки в рантайме спалят

    Очень круто когда у вас фирмварь вдруг раз - и рантайм еррор. А теперь прикиньте если это в ECU вашего авто было?! Представляете там сишка - и статический анализ как раз вполне хорошая идея. MISRA подтвердит.

     
     
  • 3.55, Аноним (1), 11:25, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А очень просто, никаких загадок. Анализа "легаси" конструкций не производится. Си и его компиляторы слишком непредсказуемые на сколько-нибудь сложной логике, в таких вопросах намного безопаснее ассемблер. Какой-нибудь compcert ещё можно в ракеты запихнуть.
     
     
  • 4.62, Аноним (62), 14:22, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Прелесть ассемблера в том, что там нет никаких UB и фантазий компилятора. Если что-то пошло не так — претензии можно предъявлять только себе.
     
  • 4.70, Аноним (69), 04:45, 01/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Что значит - легаси Почти все сишные конструкции валидны и в си и не объявлен... большой текст свёрнут, показать
     

  • 1.2, анон (?), 11:34, 29/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Убийца раста?
     
     
  • 2.4, Аноним (4), 11:36, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Нет. Пока это third-party плагин, макaки им пользоваться не будут, а мaкак больше, чем хороших программистов.
     
  • 2.19, Аноним (19), 13:27, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы перепутали убийцу и жертву. Rustcheck абсолютно излишен.
     
     
  • 3.28, warlock66613 (ok), 16:20, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ту вы вступаете на тонкую грань противопоставления статического анализатора и линтера. Да, команда 'cargo check' занимается не поиском висячих ссылок, а проверкой стиля, но всё равно это статический анализ кода.
     
     
  • 4.75, Аноним (75), 12:20, 03/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я как-то не встречал уязвимостей, вызванных форматированием кода. Да, плохой стиль может быть причиной, почему уязвимость не заметили, но это другое
     

  • 1.3, Жироватт (ok), 11:35, 29/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Эх. Но с другой стороны хорошо, что тут не хабра и нету сектанто-маркетолухов pvs(gvn)-studio.
     
     
  • 2.7, llolik (ok), 12:03, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Ну, пивас-студия неплохая, на самом деле. Но пиар-отдел у них, конечно, да. Видимо, на тринадцатую зарплату нарабатывает, не иначе.
     
     
  • 3.13, n00by (ok), 12:23, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если правильно помню и ни с кем не путаю, у них до той студии был другой какой-то проект. Автор пришёл порекламировать на wasm.ru, ему там подробно и совершенно бесплатно объяснили, почему не взлетит. Тогда проект был преобразован в нынешний. А пиар-отдел с тех пор провоцирует критиков на дельные советы.
     
     
  • 4.30, Аноним (30), 18:33, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    У них был бесплатный проект. Он ожидаемо не взлетел.
     
     
  • 5.48, n00by (ok), 09:19, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Поискал, назывался тот проект viva64 и предназначен был для отлова проблем при переносе 32-х разрядного кода в 64 в ОС Windows. То есть дело было в ограниченном применении, а не бесплатности (временной, на первом этапе).
     
     
  • 6.58, Аноним (30), 12:43, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не, не то.
    https://pvs-studio.ru/ru/cppcat/
     
     
  • 7.59, n00by (ok), 14:11, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Не, не то.
    > https://pvs-studio.ru/ru/cppcat/

    Что не то? Вот это по ссылке "который был запущен в начале 2014 года" -- кончено не то. wasm.ru тогда наверное уже и не было. viva64 вышел во второй половине нулевых, как показывает поиск.

     
     
  • 8.61, Аноним (62), 14:15, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Сначала был viva64 Потом появился PVS Studio Потом запилили CppCat для бедных,... текст свёрнут, показать
     
     
  • 9.74, n00by (ok), 11:44, 01/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот я и пишу, что автор пришёл рекламировать viva64 на форум, а в результате кри... текст свёрнут, показать
     
  • 2.11, Капитан Очевидность (?), 12:17, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да насколько я помню рекламщик этой фигни и здесь раньше кормился
    Может Максим его выгнал, может с мишкой-карманником бабло не поделил, но последнее время не видно
     
     
  • 3.15, Аноним (15), 12:27, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну судя по плашке «(реклама)» у последней новости просто решил спросить с них бабосики и пвс мгновенно слились. https://www.opennet.dev/cgi-bin/opennet/ks.cgi?mask=pvs-studio
     
     
  • 4.16, Аноним (15), 12:29, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Чето я гоню там у всех плашка реклама, просто последняя была в 2018 году.
     
  • 4.22, Капитан Очевидность (?), 13:46, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ну судя по плашке «(реклама)» у последней новости просто решил спросить с
    > них бабосики и пвс мгновенно слились. https://www.opennet.dev/cgi-bin/opennet/ks.cgi?mask=pvs-studio

    Ну главное, что слились
    При чем ничего не имею против коммерческого софта, если он востребован, ничего не имею против его рекламы
    Но не так назойливо и в местах для этого предназначенных, пожалуйста!
    На Хабре, да ради ЛММ! На профильных конфах, да сколько угодно, если разрешают организаторы

    А на лоре или опеннете, ну не место пвсу, простите
    Пока не будет новости "ПВС открыт под GNU GPLv3" или какой-то подобной не место им здесь, хоть застрелись

     
     
  • 5.33, Andrey_Karpov (ok), 20:58, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Приятно видеть, что новость про Cppcheck, а обсуждают PVS-Studio :). Спасибо всем неравнодушным.

    Приходите на бета-тест плагина PVS-Studio для Qt Creator и Visual Studio Code: https://habr.com/ru/companies/pvs-studio/news/743566/

     
     
  • 6.38, Капитан Очевидность (?), 22:40, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А на форумах кошатников в теме про то, что пришло лето обсуждают клещей и прочих паразитов...
    Так себе радость
     
  • 2.46, Аноним (30), 07:09, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Здесь сразу пишут идеальный код на сишечке. И без дыр, надо заметить!
     

  • 1.24, Аноним (24), 14:47, 29/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Настоящие программисты ошибок не допускают.
     
     
  • 2.27, Аноним (15), 16:19, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Все в мире совершают ошибка, а они нет. Опять методички от поборников безопастного языка.
     
  • 2.26, анон (?), 16:18, 29/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Эльбрус много чего критически важного не поддерживает, например, закладочки анб и светодиодики на стойке. Пока без этого в крупные уважаемые конторы ему доступ закрыт.
     

  • 1.29, Anonymoustus (ok), 16:26, 29/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > No XP support
     
     
  • 2.49, анониммм (?), 10:16, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И что? Эта платформа устарела ещё в году 14ом.
     
     
  • 3.51, Аноним (1), 10:21, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В 2007.
     
  • 3.60, Аноним (62), 14:13, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я даже приблизительно представить не могу, какая нужда может заставить заниматься разработкой на машине с XP.
     
     
  • 4.64, dannyD (?), 17:43, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    два этажа научной установки и какой нить контроллер IEEE-488 заставит и ни такое себе представить )))))
     
     
  • 5.67, Аноним (30), 03:39, 01/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я не спорю, что в составе программно-аппаратных комплексов можно и MS-DOS найти. Но разработку-то на этой машине вести зачем?
     
     
  • 6.71, Совершенно другой аноним (?), 08:26, 01/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Но разработку-то на этой машине вести зачем?

    ну, если для работы остального окружения нужны программы, работающие только в MS-DOS и не так приходится раскорячиваться, хотя, конечно, разные dosbox-ы и dosemu немного облегчают дело..

     
  • 2.65, Anonymoustus (ok), 18:38, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не отчаивайтесь, анонимы.

    Для 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


    Проверил вчера свой хелловорлд -- ошибок нет. :-)

     
     
  • 3.72, Совершенно другой аноним (?), 08:50, 01/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Не отчаивайтесь, анонимы.
    > Для XP подходит эта версия:
    > https://github.com/danmar/cppcheck/releases/tag/1.69

    с довольно обозримыми правками консольная версия собирается до 2.3, если не путаю. Дальше они перешли с потоков ОС на потоки стандарта C++, ещё чего-то поменяли, правок сильно слишком много и собирать дальше уже не получилось.

     

  • 1.40, Прохожий (??), 01:12, 30/06/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Вместо того, чтобы похоронить уже этих динозавров (Си, Си++), продолжают наращивать мощь костылей. Теперь, типа, наши костыли ещё более костылястыми стали, хромать на обе ноги вы сможете ещё быстрее.
     
     
  • 2.45, Аноним (69), 06:45, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Вместо того, чтобы похоронить уже этих динозавров (Си, Си++), продолжают наращивать мощь
    > костылей. Теперь, типа, наши костыли ещё более костылястыми стали, хромать на
    > обе ноги вы сможете ещё быстрее.

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

     
  • 2.50, анониммм (?), 10:17, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Слишком много на нем написано, чтобы хоронить.
     
  • 2.56, GraiT (?), 12:07, 30/06/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не нравится СИ и С++, не использую и программы можешь, написанные на этих языках, не запускать.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру