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
執行分析工具做為簽入原則的一部分
從組織的角度來看,您可能想指定所有的簽入都要滿足特定的原則,尤其您會想要確認您已經確實遵循這些原則:
所簽入的程式碼中沒有建置錯誤。
已執行程式碼分析做為最新組建的一部分。
您可以指定簽入原則,達成上述要求。
Team System 小組建置整合
您可以使用建置系統的整合式功能,執行分析工具做為建置程序的一部分。如需詳細資訊,請參閱 Team Foundation Build 概觀。
命令列支援
除了完全整合在開發環境中之外,程式開發人員也可以從命令列使用分析工具,如以下範例所示:
C:\>cl /analyze Sample.cpp