Übersicht über die Codeanalyse für C/C++

Aktualisiert: November 2007

Das Codeanalysetool für C/C++ liefert Entwicklern Informationen zu möglichen Fehlern im C/C++-Quellcode. Zu den Codierungsfehlern, die das Tool am häufigsten findet, zählen Pufferüberlauf, nicht initialisierter Speicher, Dereferenzierung eines NULL-Zeigers sowie Speicher- und Ressourcenverluste.

Integration in die integrierte Entwicklungsumgebung (Integrated Development Environment – IDE)

Das Analysetool ist vollständig in die IDE integriert, um den Entwicklern die Verwendung so leicht wie möglich zu machen. Während des Buildprozesses werden alle für den Quellcode generierten Warnungen in der Fehlerliste angezeigt. Diese Warnungen umfassen Informationen zum Fehlerpfad, sofern verfügbar. Wenn Sie auf eine Warnung doppelklicken, wird der entsprechende Fehlerpfad hervorgehoben.

#pragma-Unterstützung

Mithilfe der #pragma-Direktive können Warnungen als Fehler behandelt sowie aktiviert oder deaktiviert werden, wie in den folgenden Beispielen dargestellt:

#pragma warning (error: 6260)

#pragma warning (disable: 6011)

#pragma warning (enable: 6056)

Unterstützung von Anmerkungen

Durch Anmerkungen kann die Genauigkeit der Codeanalyse gesteigert werden. Anmerkungen enthalten zusätzliche Informationen zu Vor- und Nachbedingungen für Funktionsparameter und Rückgabetypen.

#include <CodeAnalysis/SourceAnnotations.h>

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

(

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

    unsigned int size

);

Im obigen Beispiel gilt Folgendes:

[Post ( MustCheck=SA_Yes)] – der Aufrufer muss den Rückgabewert von CalcSquareRoot überprüfen.

[Pre ( Null=SA_No)] – der Aufrufer muss den Nicht-NULL-Parameter "source" an CalcSquareRoot übergeben.

Ausführen des Analysetools im Rahmen der Eincheckrichtlinien

In einer Organisation ist es sinnvoll festzulegen, dass beim Einchecken stets bestimmte Richtlinien beachtet werden müssen. Insbesondere die folgenden Richtlinien sollten eingehalten werden:

  1. Der einzucheckende Code darf keine Buildfehler enthalten.

  2. Die Codeanalyse muss als Teil des letzten Builds ausgeführt worden sein.

Die Einhaltung dieser Vorgaben können Sie durch das Definieren von Eincheckrichtlinien gewährleisten.

Team System Team Build-Integration

Sie können die integrierten Features des Buildsystems verwenden, um das Analysetool im Rahmen des Buildprozesses auszuführen. Weitere Informationen finden Sie unter Übersicht über Team Foundation Build.

Befehlszeilenunterstützung

Das Analysetool ist nicht nur vollständig in die Entwicklungsumgebung integriert, sondern kann auch über die Befehlszeile verwendet werden, wie im folgenden Beispiel gezeigt:

C:\>cl /analyze Sample.cpp