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を使用しています。

私は思いつく限りどこでも検索しました、そして私が見つけることができた最も近いものはこれでした。

しかし、これは私にはうまくいきませんでしたので、どんな助けでも大歓迎です。

または、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>だけでなく2>&1を使用する必要がある場合は、もちろんstdoutメッセージも表示されます。ただし、cppcheckフラグ--quietまたは-qを使用して、stdout出力をスキップできます。

于 2012-10-28T10:25:29.450 に答える