Общие сведения об анализе кода в C/C++
Обновлен: Ноябрь 2007
Средство анализа кода C/C++ предоставляет разработчикам сведения о возможных дефектах в исходном коде C/C++. К наиболее распространенным ошибкам кодирования, которые обнаруживает данное средство, относятся переполнение буфера, неинициализированная память, нулевой указатель со снятой ссылкой, а также утечки памяти и ресурсов.
Интеграция в интегрированную среду разработки
Для более удобного использования разработчиками средство анализа полностью интегрировано в интегрированную среду разработки. Во время построения все предупреждения, вырабатываемые для исходного кода, отображаются в списке ошибок. Данные предупреждения включают путь к ошибке, если таковой имеется. Если предупреждение дважды щелкнуть при помощи мыши, путь к ошибке, вызвавшей предупреждение, выделяется.
Поддержка директивы #pragma
Разработчики могут использовать директиву #pragma для обработки предупреждений в качестве ошибок, включения и отключения предупреждений, как показано в следующих примерах:
#pragma warning (error: 6260)
#pragma warning (disable: 6011)
#pragma warning (enable: 6056)
Поддержка заметок
Заметки повышают точность анализа кода. Заметки являются источником дополнительных сведений о пред- и постусловиях параметров функции и возвращаемых типов.
#include <CodeAnalysis/SourceAnnotations.h>
[returnvalue:Post( MustCheck=SA_Yes )] double* CalcSquareRoot
(
[Pre( Null=SA_No )] double* source,
unsigned int size
);
В предыдущем примере:
[Post ( MustCheck=SA_Yes)] требует проверки вызывающим объектом возвращаемого значения CalcSquareRoot
[Pre ( Null=SA_No)] требует передачи вызывающим объектом ненулевого параметра "source" в CalcSquareRoot
Запуск средства анализа в рамках политики возврата
Каждая организация может предъявлять определенные требования к возвратам. В частности, может требоваться соблюдение следующих правил:
Возвращаемый код не содержит ошибок построения.
Анализ кода был проведен в рамках последнего построения.
Этого можно достичь, задав политики возврата.
Интеграция Team System с Team Build
Существует возможность использования интегрированных функций системы построения для запуска средства анализа в рамках процесса построения. Дополнительные сведения см. в разделе Общие сведения о Team Foundation Build.
Поддержка командной строки
Помимо того, что средство анализа полностью интегрировано в интегрированную среду разработки, разработчики также могут запускать средство анализа из командной строки, как показано в следующем примере:
C:\>cl /analyze Sample.cpp