# Paranoid null checker (paranucker) - статический анализатор C/C++ кода. Представляет собой плагин к компилятору [gcc](https://gcc.gnu.org). Есть возможность вывода абстрактного синтаксического дерева [AST](https://ru.wikipedia.org/wiki/Абстрактное_синтаксическое_дерево) и поиска нулевых указателей. Версия 1.0 Дата: 2015-06-22 ## Зависимости для компиляции - gcc 5 с заголовочными файлами для плагинов. (gcc-5-plugin) Также возможно компиляции для более старых версий gcc, но нужно модифицировать сборочный файл. - automake/autoconf. ## Зависимости исполнения - gcc 5 / g++ 5 или старее. ## Функции - Вывод AST дерева из недр gcc. - Поиск пропущенных проверок входных параметров-указателей в функциях на ноль. - Пропуск проверки на нулевой указатель если паарметр имеет атрибут [NONNULL](https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Function-Attributes.html#index-g_t_0040code_007bnonnull_007d-function-attribute-3189). - В будущем возможно другие проверки... ## Компиляции - Запустить build.sh - Вы получите два файла. paranucker.so для C/gcc. и cxxparanucker.so для C++/g++ ## Примеры использования В директории [examples](examples) находится два примера для C++ и C. ## Использование в реальных программах - [ManaPlus](http://manaplus.org/) - [Hercules](http://herc.ws/) ## Расширенное использование Paranoid null checker поддерживает один параметр с именем -fplugin-arg-paranucker-command или -fplugin-arg-cxxparanucker-command в зависимости от того, что вы используется C или C++. Пример: gcc-5 -fplugin=../paranucker.so -fplugin-arg-paranucker-command=detectnullpointers Возможные значения параметра: | название | действие | |:-------------------|:--------------------------------------------------------------| | parse | обработка AST без вывода | | dump | вывод всей AST | | smalldump | вывод AST в упрощенном виде | | memoryusage | вывод количества обработанных узлов дерева | | dumpunsupported | вывод узлов, которые не могут быть обработаны из-за типа | | findargs | вывод имен функций и аргументов, которые могут быть проверены | | detectnullpointers | поиск нулевых указателей | | dumpnullpointers | поиск нулквых указателей и вывод отладочной информации |