0

ビルドの一環として、ビルドのコマンドライン:$(python_bin)/python.exe %(FullPath)を持つpythonスクリプトを1つだけ含むプロジェクト(.vcxproj)が1つあります。 MSBuildのは、このPythonスクリプトから警告を解析し、ビルド後にそれらを表示することができる:警告をカスタムビルドのエラーとして扱うには?

"F:\Generators.vcxproj" (default target) (1) -> 
(CustomBuild target) -> 
    F:\Tool.py(274): warning : OPSEC [F:\Generators.vcxproj] 
    F:\Tool.py(274): warning : OPSEC [F:\Generators.vcxproj] 

    2 Warning(s) 
    0 Error(s) 

、どのように私はエラーとして、これらの警告を治療するためにそれを強制することができますか?私が見つけたオプションはTreat Linker Warning As Errorsです。このプロジェクトでのリンクは行われていないので(明らかにカスタムビルドの.pyファイルであるため)、ビルドステップからの警告であることは明らかです。

ClCompileセクションに<TreatWarningAsError>true</TreatWarningAsError>を追加しようとしました。助けてくれなかった。

これらの警告をエラーとして扱うにはどうすればmsbuildに強制できますか?

+0

コンパイラオプションはC++用ですが、警告はPythonコード用です。 – Ajay

+0

私はそれほど多くのことを考えました。私はちょうど助けになるかどうかを.vcxprojのいくつかの場所に入れようとしていました。それはしませんでした。どのように私はそれをエラーとして登録することができますどのようなアイデア? – Paladin

+1

これは[python]質問であり、[visual-C++]質問ではありません。あなたはあなたの質問に正しくタグ付けしていませんでした。 [Just rtfm](https://docs.python.org/3.1/library/warnings.html)で-Wオプションを探してください。 –

答えて

1

は、あなたの最近のコメントの一つで、私のスタートをオフにしてみましょう:

...警告など、PythonスクリプトのMSBuildの認識出力を。しかしそれは 同様に、bash、perl、PHPスクリプト、またはそのようなものになる可能性があります。 msbuild は出力を警告として認識し、その警告を エラーとして扱いたいとします。 ...

MSBuildの中に想像任意のツールの「警告をエラーに回す」何のジェネリックはありません。どうした? MSBuildによって呼び出されるすべてのツールには、それを行うための1つの方法があります。たとえば、C++コンパイラやC#コンパイラには、コマンドラインに特定のコマンドラインオプションが含まれています。これらのオプションは、これらの言語のmsbuildファイルによってコマンドラインに含まれています。

だから、あなたがする必要があるときにそれを行うには、ツール(質問のコンテキストでは、Python)を指示する必要があります。既存の/よく知られているプロパティ(TreatWarningsAsErrors)をトリガとして使用して、これを行うことができます。特定の値(true)がある場合は、ツールが警告をエラーとして出力してそれに応じて動作させる必要があります。

例:あなたは正確にメイクPythonはあなたが(警告をエラーに回す)やりたいどのようにわからない場合

<PropertyGroup> 
    <PythonCmd>$(python_bin)\python.exe</PythonCmd> 
    <PythonCmd Condition="'$(TreatWarningsAsErrors)' == 'true'">$(PythonCmd) -W error</PythonCmd> 
    <PythonCmd>$(PythonCmd) %(FullPath)</PythonCmd> 
</PropertyGroup> 

<Exec Command="$(PythonCmd)" .../> 

さて、あなたはそれを行うことができます何のMSBuild魔法はありません。あなたは突然doにpython固有の質問があります。あなたが現在行っている実際の問題は、Pythonがmsbuildやコマンドラインから実行されることとは関係がないためです。

第2のオプション:警告をエラーに変換するPythonの組み込み機能を使用できない場合、または使用したくない場合は、Exec -Tasks CustomErrorRegularExpression -propertyを使用して、正規表現を指定する必要がありますツール( "python.exe")の "エラー出力"として表示されます。 (未テスト!)

<PropertyGroup> 
    <ErrorExp>.*: error :.*</ErrorExp> 
    <ErrorExp Condition="'$(TreatWarningsAsErrors)' == 'true'">.*: (warning|error) :.*</ErrorExp> 
</PropertyGroup> 

<Exec ... CustomErrorRegularExpression="$(ErrorExp)"/> 

よう

何かあなたが始める必要があります。

しかし、Pythonはすでに警告をエラーとして設定する方法を提供しています(-W error経由)ので、オプションが不必要に畳み込まれているようです。

また、使用している可能性のある他のツールについてのあなたのコメントについては、上記の方法では、他のツールについての特定の知識と、カスタム正規表現が必要なため彼らのために。

そのようなアプローチでも、あなたが呼び出すツールについての特定の知識が必要であり、それほど多くのmsbuildは必要ありません。

私はここから完全に離れていて、実際には別の問題、質問、または必要があります。あなたの質問へのコメントをチェックすると、私は唯一のものではないように見えるので、あなたはあなたの質問を変更したり、より正確に(すでに試したものの例で可能) 。

+0

'warnings'モジュールを使って警告を出しただけでは動作しませんか? – Paladin

+0

率直に言っていいでしょう。答えを、msbuildプロパティをPython呼び出しにマップする方法の概念としてもっと考えてみましょう。タグを調整したり、Python特有の質問をする必要があるかもしれません。 –

+0

私の質問はPython固有のものだとは思わない – Paladin

関連する問題