2012-10-23 115 views
1

我想對我們的代碼運行CppCheck作爲我們構建的一部分。但是,如果不從命令提示符執行,我無法將輸出保存到文件中。CppCheck輸出到Powershell的xml文件

從一個普通(窗口)命令提示符下,或.bat文件下列內硬編碼路徑正常工作:

"C:\Program Files\Cppcheck\CppCheck.exe" --enable=all --xml-version=2 "<full_path_with_spaces_to_source>" 2> cppcheck_result.xml 

不過,我想從一個腳本,例如運行電源外殼。我嘗試這樣做:

& 'C:\Program Files (x86)\Cppcheck\cppcheck.exe' --enable=all --xml-version=2 $CheckPath | Out-File cppcheck_ps.xml 

但這種管道的文件簽入XML文件和XML結果會在PowerShell中的輸出窗格中顯示。

我也嘗試直接從我們的構建服務器(TeamCity)作爲命令行構建步驟運行exe文件,但沒有創建輸出文件!執行檢查並在構建日誌中看到正常輸出,但不知何故2>會丟失。我正在使用TeamCity版本7.1.1。

我已經到處搜索了我能想到的,最近的我可以找到的是This

但是這並沒有爲我工作,所以任何幫助將不勝感激。

或者,如果您知道更好的方式來運行CppCheck並獲得結果,請讓我知道。

回答

0

我沒有這個工具,但如果你需要捕獲標準錯誤從中嘗試:

& '.\cppcheck.exe' --enable=all --xml-version=2 $CheckPath 2>&1 | Out-File cppcheck_ps.xml 

注意我刪除的完整路徑的exe只縮短顯示器的命令。

+1

非常感謝,這工作。雖然它也增加了輸出文件的以下內容:cppcheck.exe:<?xml version =「1.0」encoding =「UTF-8」?> At line:1 char:2 +&<<<<' C:\ Program Files(x86)\ Cppcheck \ cppcheck.exe'--enable = all --xml-version = 2 $ CheckPath 2>&1 | Out-File cppcheck_ps.xml + CategoryInfo:NotSpecified:(<?xml version =「1.0」encoding =「UTF-8」?>:String)[],RemoteException + FullyQualifiedErrorId:NativeCommandError – Kim

+0

也許我也有點太快速。這將創建所需的文件,但也添加所有的命令行輸出(如哪些文件已被分析和%完成),這不是我想到的。但它會做,直到我能找到更好的解決方案。再次感謝。 – Kim

0

我不知道有關PowerShell的工作原理。但是如果你必須使用2> & 1而不是2>,那麼你當然也會得到stdout消息。但是你可以使用cppcheck標誌--quiet或者-q來跳過標準輸出。