Análisis de código para obtener información general de C/C++

Actualización: noviembre 2007

La herramienta Análisis de código de C/C++ proporciona a los desarrolladores información sobre posibles defectos en su código fuente de C/C++. Entre los errores de codificación más comunes detectados por esta herramienta, destacan las saturaciones de búfer, los casos de memoria no inicializada, la eliminación de referencias al puntero NULL, así como las pérdidas de memoria y recursos.

Integración del entorno de desarrollo integrado (IDE)

La herramienta de análisis se halla totalmente integrada en el IDE para que a los desarrolladores les resulte natural utilizarla. Durante el proceso de generación, cualquier advertencia relativa al código fuente aparecerá en el Lista de errores. Si la hubiera, estas advertencias podrán incluir información sobre rutas de acceso incorrectas. En dicho caso, haciendo doble clic sobre la advertencia se resaltará la ruta en cuestión.

Compatibilidad con #pragma

Los desarrolladores pueden utilizar la directiva #pragma para tratar las advertencias como errores o para deshabilitar advertencias, como se indica a continuación.

#pragma warning (error: 6260)

#pragma warning (disable: 6011)

#pragma warning (enable: 6056)

Compatibilidad con las anotaciones

Las anotaciones mejoran la exactitud del análisis de código. Las anotaciones proporcionan información adicional sobre condiciones previas y posteriores en los parámetros de función y en los tipos de valor devueltos.

#include <CodeAnalysis/SourceAnnotations.h>

[returnvalue:Post( MustCheck=SA_Yes )] double* CalcSquareRoot

(

    [Pre( Null=SA_No )] double* source,

    unsigned int size

);

En el ejemplo anterior:

[Post ( MustCheck=SA_Yes)] exige al llamador que compruebe el valor devuelto de CalcSquareRoot

[Pre ( Null=SA_No)] exige al llamador que pase a CalcSquareRoot el parámetro no nulo "source"

Ejecutar la herramienta de análisis como parte de las directivas de protección

En una organización, puede ser necesario exigir que todas las protecciones cumplan determinadas directivas. En particular, es importante asegurarse de que se respeten estas directivas:

  1. No había errores de compilación en el código protegido.

  2. Se ejecutó un análisis de código como parte de la generación más reciente.

Para conseguirlo, se especifican las directivas de protección.

Integración de Team System y Team Build

Puede utilizar las características integradas del sistema de generación para ejecutar la herramienta de análisis como parte del proceso de generación. Para obtener más información, vea Información general sobre Team Foundation Build.

Compatibilidad con la línea de comandos

Aparte de la integración total en el entorno de desarrollo, los desarrolladores pueden utilizar la herramienta de análisis desde la línea de comandos, como se indica en el ejemplo siguiente.

C:\>cl /analyze Sample.cpp