Поделиться через


Общие сведения об анализе кода в 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

Запуск средства анализа в рамках политики возврата

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

  1. Возвращаемый код не содержит ошибок построения.

  2. Анализ кода был проведен в рамках последнего построения.

Этого можно достичь, задав политики возврата.

Интеграция Team System с Team Build

Существует возможность использования интегрированных функций системы построения для запуска средства анализа в рамках процесса построения. Дополнительные сведения см. в разделе Общие сведения о Team Foundation Build.

Поддержка командной строки

Помимо того, что средство анализа полностью интегрировано в интегрированную среду разработки, разработчики также могут запускать средство анализа из командной строки, как показано в следующем примере:

C:\>cl /analyze Sample.cpp