Какие инструменты статического анализа C ++ с открытым исходным кодом доступны?[закрыто]

StackOverflow https://stackoverflow.com/questions/141498

Вопрос

Java имеет несколько очень хороших инструментов статического анализа с открытым исходным кодом, таких как Найди жуков, Контрольный стиль и PMD.Эти инструменты просты в использовании, очень полезны, работают в нескольких операционных системах и Бесплатно.

Доступны коммерческие продукты для статического анализа C ++.Хотя наличие таких продуктов - это здорово, их стоимость слишком высока для студентов, и обычно довольно сложно получить пробную версию.

Альтернативой является поиск инструментов статического анализа C ++ с открытым исходным кодом, которые будут работать на нескольких платформах (Windows и Unix).Используя инструмент с открытым исходным кодом, его можно было бы модифицировать в соответствии с определенными потребностями.Найти необходимые инструменты было непростой задачей.

Ниже приведен краткий список инструментов статического анализа C ++, которые были найдены или предложены другими.

Каковы некоторые из них Другое портативные инструменты статического анализа C ++ с открытым исходным кодом, о которых кто-нибудь знает и которые могут быть рекомендованы?

Несколько ссылок по теме.

Это было полезно?

Решение

Oink - это инструмент, построенный поверх интерфейса Elsa C ++.Свинина Мозиллы - это вилка Эльзы / Хрю.

Видишь: http://danielwilkerson.com/oink/index.html

Другие советы

Проверка 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 выполняет некоторый анализ потока управления и генерирует графики.Возможно, это не то, что вы ищете, но я нашел, что на них полезно взглянуть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top