Какие инструменты статического анализа C ++ с открытым исходным кодом доступны?[закрыто]
-
02-07-2019 - |
Вопрос
Java имеет несколько очень хороших инструментов статического анализа с открытым исходным кодом, таких как Найди жуков, Контрольный стиль и PMD.Эти инструменты просты в использовании, очень полезны, работают в нескольких операционных системах и Бесплатно.
Доступны коммерческие продукты для статического анализа C ++.Хотя наличие таких продуктов - это здорово, их стоимость слишком высока для студентов, и обычно довольно сложно получить пробную версию.
Альтернативой является поиск инструментов статического анализа C ++ с открытым исходным кодом, которые будут работать на нескольких платформах (Windows и Unix).Используя инструмент с открытым исходным кодом, его можно было бы модифицировать в соответствии с определенными потребностями.Найти необходимые инструменты было непростой задачей.
Ниже приведен краткий список инструментов статического анализа C ++, которые были найдены или предложены другими.
- Проверка C ++ http://sf.net/projects/cppcheck/
- Хрюк http://danielwilkerson.com/oink/index.html
- Счетчик кода на C и C ++ http://sourceforge.net/projects/cccc/
- Шина (из ответов)
- Mozilla's Pork (из ответов) (Теперь это часть Oink)
- Обезвоживание Mozilla (из ответов)
- Использовать опцию
-Weffc++
для GNU g ++ (из ответов)
Каковы некоторые из них Другое портативные инструменты статического анализа C ++ с открытым исходным кодом, о которых кто-нибудь знает и которые могут быть рекомендованы?
Несколько ссылок по теме.
- https://stackoverflow.com/questions/97454/c-static-code-analysis-tool-on-windows
- http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
- http://www.chris-lott.org/resources/cmetrics/
- Бесплатный инструмент для проверки исходного кода C / C ++ на соответствие набору стандартов кодирования?
- http://spinroot.com/static/
- Выбор инструмента статического анализа кода
Решение
Oink - это инструмент, построенный поверх интерфейса Elsa C ++.Свинина Мозиллы - это вилка Эльзы / Хрю.
Другие советы
Проверка CppCheck является открытым исходным кодом и кроссплатформенным.
Mac OSX:
brew install cppcheck
Что касается компилятора GNU, то в gcc уже есть встроенная опция, которая позволяет дополнительно предупреждение к тем, кто из -За Стены.Этот вариант заключается в -Weffc++ и речь идет о нарушениях некоторых руководящих принципов Скотт Мейерс опубликовано в его книгах "Эффективный и еще более действенный C++".
В частности, опция обнаруживает следующие элементы:
- Определите конструктор копирования и оператор присваивания для классов с динамически выделяемой памятью.
- Предпочитаю инициализацию присваиванию в конструкторах.
- Сделайте деструкторы виртуальными в базовых классах.
- Попросите "operator=" вернуть ссылку на *this.
- Не пытайтесь возвращать ссылку, когда вы должны вернуть объект.
- Различают префиксную и постфиксную формы операторов инкремента и декремента.
- Никогда не перегружайте "&&", "||", или ",".
Пока находится в стадии разработки, но лязг выполняет анализ C и ориентирован на работу с C ++ с течением времени.Это часть LLVM проект.
Обновить:Хотя на целевой странице указано, что "Анализатор находится в постоянном процессе разработки", тем не менее, сейчас это документированный как статический анализатор как для C, так и для C ++.
Вопрос: Как я могу запустить GCC / Clang для статического анализа?(только предупреждения)
Опция компилятора:-только для fsyntax
Кто-то еще упомянул -Weffc ++, но на самом деле это одно из единственных предупреждений GCC, которое я не включаю по умолчанию.Однако набор предупреждений, которые я включаю, является самым важным инструментом статического анализа в моем наборе.Вы можете видеть полный список рекомендуемых предупреждений.
Подводя итог:
-педантичная -стена -Wextra -Wcast-выравнивание -Wcast-качество -Wctor-dtor-конфиденциальность -Wdisabled-оптимизация -Wformat=2 -Winit-само-Логическая-операция -Wmissing-объявления -Wmissing-включают-каталоги -Wnoexcept -приведение в Волд-стиле -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-конверсия -Wsign-промо -Wstrict-null-sentinel -Wstrict- переполнение=5 -Wswitch-по умолчанию -Wundef -Ошибка -Wno-неиспользуемый
Обратите внимание, что для некоторых из них требуется новая версия gcc, поэтому вам может потребоваться исключить их из своего списка, если вы застряли на версии 4.5 или что-то в этом роде.
Джон Кармак также упоминает PVS-Студия в этом интересном запись в блоге на тему "Статический анализ кода".
Если под открытым исходным кодом вы действительно имели в виду "бесплатный", то Microsoft сборный анализ - это хороший метод.Конечно, только для Windows.Он полностью интегрирован в Visual Studio и компилятор.например ,:
cl /analyze Sample.cpp
Работа Mozilla по статическому анализу наверное, на это стоит посмотреть.
Шина кажется , это заполняет счет за С.
Если бы вы не указали открытый исходный код, я бы сказал Программное обеспечение Gimpel's Клинт вероятно, это один из лучших доступных инструментов для статической проверки кода на C ++.Но, конечно, это не открытый исходный код.
Mac OSX:
brew install splint
Корпорация Майкрософт Сборный также доступен в комплекте драйверов Windows.Версия 7.0 доступна для загрузки здесь.
В документах Microsoft указано, что он должен запускаться только с кодом драйвера, но этот (старый) запись в блоге описывает шаги для его запуска.Возможно, это можно интегрировать в обычный процесс сборки?
Мы работали над подключаемым модулем Eclipse CDT под названием metriculator .Он все еще находится в стадии разработки, но некоторые основные показатели (напримерLSLOC, McCabe, EfferentCoupling) уже реализованы.
Видишь http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation для получения более подробной информации, такой как видеодемонстрация и документация.
Последняя версия nightly build доступна для установки на сайте обновления по адресу: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/
Дальнейшее Описание
Metriculatorстатически анализирует исходный код C ++ и генерирует метрики программного обеспечения.Показатели реализуются как Кв шашки.Результаты анализа можно просмотреть в отдельном окне.Каждая метрика имеет настраиваемые свойства (напримерпороговое значение для "максимального количества строк кода на функцию").Превышение этого порога приведет к сообщению о проблеме и созданию метки в редакторе исходного кода.
с помощью metriculator вы можете:
- анализ файлов / папок / проектов на C ++
- определите пороговые значения метрик и включите / отключите метрику с помощью страницы настроек Codans
- есть ли маркеры проблем в редакторах исходного кода
- изучите результаты метрик
- экспортируйте результаты метрик в виде облака тегов (доступно в качестве дополнительной функции на сайте обновления).
В настоящее время metriculator поставляется со следующими показателями:
- Маккейб (Цикломатическая сложность)
- Эффективное сопряжение для каждого Типа
- Логические исходные строки кода
- Количество участников для каждого Типа
- Количество параметров для каждой функции
Вам стоит попробовать oo-browser, он имеет потрясающую интеграцию с xemacs
Можно также закодировать расширения GCC в РАСПЛАВИТЬ (специфичный для домена язык, предназначенный для расширения GCC) или плагины GCC на C (гораздо сложнее) для выполнения некоторого пользовательского анализа.
Doxygen выполняет некоторый анализ потока управления и генерирует графики.Возможно, это не то, что вы ищете, но я нашел, что на них полезно взглянуть.