2010-02-10 35 views
6

有沒有辦法讓FxCop分析非託管C++代碼?設置/ clr標誌允許FxCop打開.exe。它找到了很多C++項目,但對代碼的分析非常薄弱。例如,下面的代碼被跳過:FxCop(或等效)for non.Net C++代碼


int i=0; 
if (i=2) printf("Don't worry..everything will be okay."); 

我想一個工具,它可以捕捉i=2,並警告說,它應該是i==2。任何關於讓FxCop更徹底的建議還是其他人認爲有用的工具?

回答

4

MSVC(至少VC9/VS2008)已經發出警告您的具體的例子:

warning C4706: assignment within conditional expression 

(哎呀。我才意識到,我有我的測試項目設置調到最警告級別4 -/W4 MSVC在默認設置下不會發出此警告)。因此,將項目設置設置爲/ W4並獲得更多診斷信息(希望沒有太多噪音)。

我發現在VC9中的警告是相當不錯的,你可以很容易地設置編譯器將它們視爲錯誤,如果你想強制這個問題。

Visual Studio的Team Server版本包含對PREfast(Microsoft提供的靜態分析工具(該選項位於C++項目的高級/啓用代碼分析C/C++))的支持。您也可以在Windows驅動程序工具包和/或Windows SDK工具,雖然我不能保證集成到Visual Studio上獲得WDK/SDK版本的說明:

有些人喜歡(非免費)的另一種選擇是Gimpel's PC-Lint product

0

我們使用覆蓋率,不是免費的,但一個很棒的靜態分析工具