共用方式為


C/C++ 程式碼分析概觀

更新:2007 年 11 月

C/C++ 程式碼分析工具會將 C/C++ 原始程式碼中可能的缺失資訊提供給程式開發人員。由這個工具所報告的常見程式碼錯誤包括:緩衝區滿溢 (Buffer Overrun)、未初始化的記憶體、null 指標取值以及記憶體和資源流失。

IDE (整合式開發環境) 整合

為了讓程式開發人員可以自然而然地加以使用,分析工具已經完整地整合在 IDE 中。在建置程序期間,針對原始程式碼所產生的警告都會出現在 [錯誤清單] 中。這些警告會包含缺失路徑資訊 (如果有的話),按兩下警告就可反白顯示導致警告的缺失路徑。

#pragma 支援

程式開發人員可以使用 #pragma 指示詞將警告視為錯誤,並且啟用或停用警告,如下列範例所示:

#pragma warning (error: 6260)

#pragma warning (disable: 6011)

#pragma warning (enable: 6056)

附註支援

附註能夠提升程式碼分析的準確性,因為它們會提供函式參數和傳回值型別之 Pre 和 Post 條件的額外資訊。

#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)] 會要求呼叫端將非 null 參數 "source" 傳遞給 CalcSquareRoot

執行分析工具做為簽入原則的一部分

從組織的角度來看,您可能想指定所有的簽入都要滿足特定的原則,尤其您會想要確認您已經確實遵循這些原則:

  1. 所簽入的程式碼中沒有建置錯誤。

  2. 已執行程式碼分析做為最新組建的一部分。

您可以指定簽入原則,達成上述要求。

Team System 小組建置整合

您可以使用建置系統的整合式功能,執行分析工具做為建置程序的一部分。如需詳細資訊,請參閱 Team Foundation Build 概觀

命令列支援

除了完全整合在開發環境中之外,程式開發人員也可以從命令列使用分析工具,如以下範例所示:

C:\>cl /analyze Sample.cpp