1

作为构建的一部分,我想在我们的代码上运行 CppCheck。但是,如果不从命令提示符执行,我无法将输出保存到文件中。

从常规(Windows)命令提示符,或在 .bat 文件中使用硬编码路径,以下工作正常:

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

但是,我想从脚本运行它,例如 Powershell。我试过这个:

& '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 并获得结果的更好方法,请告诉我。

4

2 回答 2

0

我没有这个工具,但是如果您需要从中捕获 stderr,请尝试:

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

注意我删除了 exe 的完整路径只是为了缩短显示命令。

于 2012-10-23T16:17:42.623 回答
0

我对powershell的工作原理一无所知。但是如果你必须使用 2>&1 而不是 2> 那么你当然也会得到标准输出消息。但是您可以使用 cppcheck 标志 --quiet 或 -q 来跳过标准输出输出。

于 2012-10-28T10:25:29.450 回答