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

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
298
задан 40 revs, 8 users 84% 21 September 2018 в 22:30
поделиться

10 ответов

Хрюканье является инструментом, созданным сверху фронтенда C++ Elsa. Свинина Mozilla является ветвлением Elsa/Oink.

См.: http://danielwilkerson.com/oink/index.html

21
ответ дан 3 revs, 3 users 40%Daniel S Wilkerson 23 November 2019 в 01:31
поделиться

Doxygen делает некоторый анализ потока управления и генерирует графики. Это не может быть тем, что Вы ищете, но я нашел их полезными для взгляда на.

0
ответ дан Paul Nathan 23 November 2019 в 01:31
поделиться

работа статического анализа Mozilla , вероятно, достойная внимания.

6
ответ дан Daniel James 23 November 2019 в 01:31
поделиться

Шплинт , кажется, подходит для C.

, Если бы Вы не определили открытый исходный код, я сказал бы Gimpel Software , PCLint является, вероятно, одним из лучших инструментов, доступных для статического кода, регистрируясь в C++. Но, конечно, это не открытый исходный код.

MAC OSX:

brew install splint
4
ответ дан Jared Burrows 23 November 2019 в 01:31
поделиться

Разрабатываемый на данный момент, но лязг делает анализ C и предназначен для обработки C++ со временем. Это - часть проект LLVM.

Обновление : В то время как целевая страница говорит, что "Анализатор является непрерывным происходящим работой", это, тем не менее, теперь , зарегистрировал как статический анализатор и для C и для C++.

Вопрос: , Как я могу выполнить GCC/Clang для статического анализа? (только предупреждения)

Параметр компилятора: - [fsyntax-только 117]

29
ответ дан Community 23 November 2019 в 01:31
поделиться

Относительно компилятора GNU gcc уже имеет встроенную опцию, которая включает дополнительный предупреждение к тем - Стена. Опция -Weffc ++ , и это о нарушениях некоторых инструкций Scott Meyers опубликовано в его книгах" Эффективный и Более эффективный C++ ".

В особенности опция обнаруживает следующие объекты:

  • Определяют конструктора копии и оператор присваивания для классов с динамично выделенной памятью.
  • Предпочитают инициализацию присвоению в конструкторах.
  • Делают деструкторы виртуальными в базовых классах.
  • Имеют "оператор =", возвращают ссылку на *это.
  • Don’t пытаются возвратить ссылку, когда необходимо возвратить объект.
  • Различают префикс и снабжают постфиксом формы инкрементных и операторов понижения.
  • Никогда перегрузка "& &"; "|| ", или"".
53
ответ дан Nicola Bonelli 23 November 2019 в 01:31
поделиться

Если по Открытому исходному коду, Вы действительно имели в виду "свободный", то Microsoft предбыстрый анализ является хорошей. Только для Windows, конечно. Это полностью интегрируется в Visual Studio & компилятор. например:

cl /analyze Sample.cpp
7
ответ дан Azeem 23 November 2019 в 01:31
поделиться

CppCheck is open source and cross-platform.

Mac OSX:

brew install cppcheck
74
ответ дан 23 November 2019 в 01:31
поделиться

Это волшебство. В частности, во время магии (описано в perlsyn , perlop и, возможно, в других местах, которые я не помню). Perl позволяет использовать некоторые сокращенные обозначения. Если вы хотите увидеть, что Perl делает за вашей спиной, вы можете использовать B :: Deparse . Вот файл, в котором используется сокращенный цикл:

#!/usr/bin/perl

use strict;
use warnings;

opendir my $dir, "/tmp" or die "$!";

while (my $file = readdir($dir)) {
    print "$file\n";
}

Если вы запустите perl -MO = Deparse filename.pl , вы получите код, который видит Perl:

1
ответ дан 23 November 2019 в 01:31
поделиться

Библиотека C # ( http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1133 ) включает макетную библиотеку, которая звучит так, как будто она может сделать трюк для вас. Я не использовал функцию имитации, но я считаю, что он использует XML-файл в качестве резервного хранилища для хранения моделируемых доменов.

Следует помнить, что несколько месяцев назад Amazon выпустила AWS SDK для .Net ( http://aws.amazon.com/sdkfornet/ ). Я до сих пор использую библиотеку C # и не успел заглянуть в AWS SDK, поэтому я не уверен, включена ли в нее функциональность макета. На основе этого потока , похоже, что AWS SDK является сводом всех различных сервисных SDK. (включая библиотеку SimpleDB C #), поэтому она может содержать макет.

-121--3186059-

1) Какой интерес у нас есть к использованию JMS? Каковы преимущества JMS? 2) В какая ситуация предпочитает JMS против Компонент сущности?

Вы подходите к работе, пока есть только один потребитель . В противном случае потребуется схема блокировки, чтобы одно и то же сообщение не доставлялось дважды и т.д. Это то, что JMS предлагает из коробки: транзакционное производство и потребление с брокером JMS, управляющим всеми проблемами доставки с несколькими потребителями/производителями .

Другими преимуществами JMS являются качество обслуживания и управление , например, попытка повторной доставки, очередь мертвых сообщений, управление загрузкой, масштабируемость, кластеризация, мониторинг и т.д.

JMS также поддерживает функцию публикации или двухточечной связи.

Это немного похоже на сравнение инструкции JDBC для вставки одной строки в базу данных с полнофункциональным ORM. Оба работают, чтобы вставить строку в БД, но ORM обеспечит гораздо больше, плюс вы не заново изобретаете колесо для решения низкоуровневых проблем... (аналогия не так велика, но хорошо)

Я предлагаю вам взглянуть на часто задаваемые вопросы .

-121--2943722-

Microsoft PREFast также доступен в комплекте драйверов Windows. Версия 7,0 может быть загружена здесь .

В документах Майкрософт указано, что его следует запускать только по коду драйвера, но в этом (старом) блоге описаны шаги по его запуску. Возможно, его можно интегрировать в обычный процесс сборки?

3
ответ дан 23 November 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: