Это команда scan-build-3.6, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
сканирование-сборка - Статический анализатор Clang
СИНТАКСИС
сканирование-сборка [-охквВ] [-analyze-заголовки] [-включить-чекер [имя_проверки]]
[-отключить-чекер [имя_проверки]] [--Помогите] [--справки]
[--html-заголовок [= название]] [--продолжать идти] [-plist] [-plist-html] [--status-ошибки]
[--использовать-c ++ [= путь_компилятора]] [--use-cc [= путь_компилятора]] [--Посмотреть]
[-ограничения [модель]] [-maxloop N] [-нет-отчеты-отказы] [-статистика]
[-хранить [модель]] build_command [build_options]
ОПИСАНИЕ
сканирование-сборка это сценарий Perl, который вызывает статический анализатор Clang. Параметры, используемые
сканирование-сборка или анализатором появляются первыми, а затем build_command и любой
build_options обычно используется для построения целевой системы.
Статический анализатор использует длинный список алгоритмов проверки, см. Шашки. Выход может быть
написаны в стандартном формате .plist и / или HTML.
Поддерживаются следующие варианты:
-analyze-заголовки
Также проанализируйте функции в #included файлах.
-включить-чекер имя_проверки, -отключить-чекер имя_проверки
Включить выключить имя_проверки. Посмотреть Шашки.
-h, --Помогите
Показать это сообщение.
--справки
Список программ проверки по умолчанию, см. Шашки.
--html-заголовок[=название]
Укажите заголовок, используемый на сгенерированных HTML-страницах. Заголовок по умолчанию создается, если
название не указано
-k, --продолжать идти
Добавьте в build_command. В настоящее время поддерживает make и
xcodebuild. Это удобный вариант; можно указать это поведение напрямую
используя параметры сборки.
-o Целевой каталог для файлов отчетов HTML. Подкаталоги будут созданы по мере необходимости для
представляют собой отдельные вызовы анализатора. Если этот параметр не указан,
каталог создается в / Tmp (TMPDIR в Mac OS X) для хранения отчетов.
-plist Выведите результаты в виде набора файлов .plist. (По умолчанию вывод сканирование-сборка is
набор файлов HTML.)
-plist-html
Вывод результатов в виде набора файлов HTML и .plist.
--status-ошибки
Установите статус выхода 1, если обнаружены потенциальные ошибки, и 0 в противном случае. По умолчанию выход
статус сканирование-сборка это возвращается build_command.
--использовать-c ++[=компилятор_путь]
Угадайте компилятор по умолчанию для вашего кода C ++ и Objective-C ++. Используйте эту опцию, чтобы
укажите альтернативный компилятор.
--use-cc[=компилятор_путь]
Угадайте компилятор по умолчанию для вашего кода C и Objective-C. Используйте эту опцию, чтобы
укажите альтернативный компилятор.
-v Подробный вывод из сканирование-сборка и анализатор. Второй и третий v увеличивается
многословие.
-V, --Посмотреть
По завершении сборки просмотрите результаты анализа в веб-браузере.
-ограничения [модель]
Укажите двигатель ограничения, используемый анализатором. По умолчанию модель "диапазон"
использовал. При указании «базового» используется более простая и менее мощная модель ограничений, используемая
checker-0.160 и ранее.
-maxloop N
Укажите, сколько раз можно посетить блок, прежде чем отказаться от него. По умолчанию - 4.
Увеличение для более полного охвата за счет скорости.
-нет-отчеты-отказы
Не создавайте подкаталог failures, содержащий отчеты о сбоях анализатора и
предварительно обработанные исходные файлы.
-статистика Формирует статистику посещений для анализируемого проекта.
-хранить [модель]
Укажите модель магазина, используемую анализатором. По умолчанию модель магазина «регион»
используется. «регион» определяет модель магазина с учетом конкретных условий. Пользователи также могут указать
'basic', который гораздо менее точен, но может быстрее анализировать код. "базовый" был
модель магазина по умолчанию для checker-0.221 и ранее.
ВЫХОД статус
сканирование-сборка возвращает значение, возвращаемое build_command если не --status-ошибки or --продолжать идти
используется.
Шашки
Перечисленные ниже средства проверки можно включить / отключить с помощью -включить-чекер и
-отключить-чекер параметры. Группа проверок по умолчанию запускается, если явно не отключена.
Какие именно средства проверки составляют группу по умолчанию, зависит от операционной системы в
использовать; они перечислены с --справки.
core.AdjustedReturnValue
Проверьте, не отличается ли возвращаемое значение вызова функции от вызывающего
ожидает (например, от вызовов через указатели функций).
core.AttributeNonNull
Проверьте нулевые указатели, переданные в качестве аргументов функции, аргументы которой
отмечены атрибутом "ненулевой".
ядро.CallAndMessage
Проверьте наличие логических ошибок для вызовов функций и выражений сообщений Objective-C
(например, неинициализированные аргументы, указатели на нулевые функции).
ядро.DivideZero
Проверить деление на ноль.
ядро.NullDereference
Проверьте разыменование нулевых указателей.
ядро.StackAddressEscape
Убедитесь, что адреса в стековой памяти не выходят из функции.
core.UndefineBinaryOperatorResult
Проверьте неопределенные результаты бинарных операторов.
ядро.VLASize
Проверьте объявления VLA неопределенного или нулевого размера.
core.builtin.BuiltinFunctions
Оцените встроенные функции компилятора, например аллока().
core.builtin.NoReturnFunctions
Оцените «панические» функции, которые, как известно, не возвращаются к вызывающему.
core.uninitialized.ArraySubscript
Проверьте наличие неинициализированных значений, используемых в качестве индексов массива.
core.uninitialized.Assign
Проверьте, не присвоены ли неинициализированные значения.
core.uninitialized.Branch
Проверьте наличие неинициализированных значений, используемых в качестве условий перехода.
core.uninitialized.CapturedBlockVariable
Проверьте блоки, которые захватывают неинициализированные значения.
core.uninitialized.UndefReturn
Проверьте, не возвращаются ли неинициализированные значения вызывающей стороне.
Deadcode.DeadStores
Проверьте значения, хранящиеся в переменных, которые никогда не читаются впоследствии.
отладка.DumpCFG
Отображение диаграмм потока управления.
debug.DumpCallGraph
Отобразить график звонков.
debug.DumpDominators
Распечатайте дерево доминирования для данного графа потока управления.
debug.DumpLiveVars
Распечатайте результаты анализа живых переменных.
отладка.Статистика
Выдавать предупреждения со статистикой анализатора.
отладка.TaintTest
Отметьте испорченные символы как таковые.
отладка.ViewCFG
Просматривайте диаграммы потока управления, используя ГрафВиз.
отладка.ViewCallGraph
Просмотр графика звонков с помощью ГрафВиз.
llvm.Конвенции
Проверьте код на соответствие правилам кодовой базы LLVM.
osx.API Проверьте правильность использования различных API Mac OS X.
OSX.AtomicCAS
Оценить звонки на OSAtomic функции.
osx.SecKeychainAPI
Проверьте правильность использования API-интерфейсов Secure Keychain.
osx.cocoa.AtSync
Проверьте наличие нулевых указателей, используемых в качестве мьютексов для @synchronized.
osx.cocoa.ClassRelease
Проверьте, не отправляется ли «сохранить», «освободить» или «автозапуск» непосредственно в класс.
osx.cocoa.ИнсовместимыеМетодтипы
Предупреждать о сигнатурах методов Objective-C с несовместимостью типов.
osx.cocoa.NSAutoreleasePool
Предупреждать о неоптимальном использовании НСауторелизпул в режиме Objective-C GC.
osx.cocoa.NSError
Проверить использование параметров NSError **.
osx.cocoa.NilArg
Проверьте запрещенные аргументы nil для вызовов методов Objective-C.
osx.cocoa.RetainCount
Убедитесь в отсутствии утечек и неправильного управления подсчетом ссылок.
osx.cocoa.SelfInit
Убедитесь, что self правильно инициализирован внутри метода инициализатора.
osx.cocoa.UnusedIvars
Предупреждать о частных иварах, которые никогда не используются.
osx.cocoa.VariadicMethodTypes
Проверьте передачу типов, отличных от Objective-C, в вариативные методы, которые ожидают только
Типы Objective-C.
osx.coreFoundation.CFError
Проверьте использование параметров CFErrorRef *.
osx.coreFoundation.CFNumber
Проверьте правильность использования CFNumberCreate().
osx.coreFoundation.CFRetainRelease
Проверьте нулевые аргументы для CRetain(), CFR-релиз(), а также CFMakeКоллектабельный().
osx.coreFoundation.containers.OutOfBounds
Проверяет выход индекса за пределы при использовании CFArray API.
osx.coreFoundation.containers.PointerSizedValues
Предупреждает, если CFArray, CFDictionaryили CFSet создаются со значениями, отличными от размера указателя.
безопасность.FloatLoopCounter
Предупреждение об использовании значения с плавающей запятой в качестве счетчика цикла (CERT: FLP30-C, FLP30-CPP).
Security.insecureAPI.UncheckedReturn
Предупреждать об использовании функций, возвращаемые значения которых необходимо всегда проверять.
безопасность.insecureAPI.getpw
Предупреждать об использовании Getpw().
безопасность.insecureAPI.gets
Предупреждать об использовании получает().
безопасность.insecureAPI.mkstemp
Предупредить, когда мкстемп() передается меньше 6 X в строке формата.
безопасность.insecureAPI.mktemp
Предупреждать об использовании мктемп().
безопасность.insecureAPI.rand
Предупреждать об использовании все(), случайный() и связанные с ним функции.
безопасность.insecureAPI.strcpy
Предупреждать об использовании зЬгсру() и strcat().
Security.insecureAPI.vfork
Предупреждать об использовании вилка().
unix.API
Проверяйте вызовы различных функций UNIX / Posix.
unix.Malloc
Проверьте наличие утечек памяти, двойного освобождения и использования после освобождения.
unix.cstring.BadSizeArg
Проверьте аргумент размера, переданный в строковые функции C, на предмет распространенных ошибочных
узоры.
unix.cstring.NullArg
Проверьте, не передаются ли нулевые указатели в качестве аргументов строковым функциям C.
ПРИМЕР
сканирование-сборка -o / tmp / myhtmldir сделать -j4
В приведенном выше примере отчеты об анализе помещаются в подкаталог
/ tmp / myhtmldir и бежать сделать с -j4 вариант. Создается другой подкаталог
каждый раз сканирование-сборка анализирует проект. Анализатор должен поддерживать большинство параллельных сборок,
но не распределенные сборки.
АВТОРЫ
сканирование-сборка был написан Тедом Кременеком. Документация предоставлена
Джеймс К. Лоуден[электронная почта защищена]>.
Используйте scan-build-3.6 онлайн с помощью сервисов onworks.net