2012-12-14 22 views
18

ビルド時に、ビルド出力ウィンドウに警告として分類されずにメッセージを出力したいと考えています。私。 Visual Studioのエラーリストで、「メッセージ」フィルタがオンになっている場合にのみ表示することをお勧めします。ビルド出力にメッセージを出力する(警告ではありません)

と同じ機能が必要です。 #warning Warning Message 警告として分類したくありません。

コンテキスト:

私は現在の警告の多くを生成するプロジェクトがたくさんあります。私が最初にやってみたいのは、新しい警告が導入されないようにすることです。だから、私はしました:

  1. を経て、既存の警告を排除するために#pragma warning disable/restoreを使用「のエラーと警告」になりました。

しかし、私が無効にした警告については、ここでは警告が表示されていることを示すメッセージを印刷したいと思います(私はまだ調査をしていません警告)。たとえば、警告の多くは、「時代遅れの」タイプの警告であり、どこかで作業を行う必要があります。だから、私はこれらの警告が消えないようにしたくありません。

理想的には、私はこのような何かをしたい:

#pragma warning disable 0618 
#message Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

私は、問題に対処する他のアプローチに開いています。

+0

#Pragma warning disableを検索して出力してから、それをafter buildイベントで呼び出すにはどうすればいいですか? –

+0

問題をフレーミングするもう1つの方法: "warnings on errors on"をオンにすると、すべての警告がエラーになります。そして今、エラーとなったものを警告に戻す方法があります。 「警告をエラーとして」表示する場合でも、警告を受け取る仕組み。 –

+0

@ダン、はい。それは素晴らしいでしょう。 –

答えて

6

MSDNによると、あなたは#pragmaを拡張することはできません。http://msdn.microsoft.com/en-us/library/x74w198a.aspx

しかしErrorListは厳格な要件ではない場合、あなたはこの問題を回避することができます:あなたは、あなたに重要なことを強調するためにコメントを使用することができます。 コメントの先頭に特別なトークンを追加すると、TaskListウィンドウでそのトークンを追跡できます。
だから、あなたのコードは次のようになります。 - >タスクリスト - あなたがビューを開くだろう場合、

#pragma warning disable 0618 
//TODO: Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

その後>ドロップダウンにコメントを選択し、あなたがあなたのコメントが表示されます。
は3つのあらかじめ定義されたトークンがあります:TODO、HACKとUNDONE - あなたはあなた自身のようなメッセージを追加し、あなたが最初に何を期待あなたのコードはに似て見えるように、それの優先順位を変更することができます。トークンの

#pragma warning disable 0618 
//MESSAGE: Existing Warning: 0618: IObsoleteInterface is obsolete. 
class MyClass : IObsoleteInterface 
#pragma warning restore 0618 

詳しい情報をおhttp://msdn.microsoft.com/en-us/library/zce12xx2(v=vs.100).aspx

「Resharper」を使用している場合は、TODO用の別のツールがあります。 ReSharper - >ツール - > To-do Items

+0

ありがとう、私はこれが "十分に近い"解決策であると思います。私はビルド時にあなたの顔に少しだけ何かがあることを本当に望んでいましたが、これはそれらを追跡するための解決策を提供します。すぐに私が好きな答えが得られなければ、私は戻ってこれを「受け入れられた答え」とマークします。 –

1

csc task's WarningsNotAsErrorsパラメータを調べる必要があります。 TreatWarningsAsErrors = trueでこのパラメータに "許容される"警告のリストを指定すると、既存の警告が記録され、新しい警告はエラーとして表示されます。この勿論

は正確に新しい警告に対する既存いますが、中に残しに慣れている正確な警告番号と仕事をする方法。

しかし、私の最初の提案は、単にこれらを修正するだろうされていません。ビルド外に隠れてしまうと、あまり対処されません。

+0

*私が手動で作成する警告(#警告で作成された警告)を取り除くことができたらうまくいくかもしれません。私は警告を修正したいと思っていますが、いくつかは他の人によって時間+行動を取るので、私は新しいものが作成されないようにしたいと考えています。興味深い。 –

2

Visual Studioの "Premium"または "Ultimate"エディションを使用している場合は、ルールセットを使用したコード分析機能があります。

&を右クリックして[コード解析]タブを選択すると、警告としてエラーを処理し、警告の一部を無効にするなどのさまざまな設定が行われます。

警告を無視するか、エラーとして処理するように設定できます。すぐに使用できるMicrosoftのルールセットを使用することもできますし、要件に応じてカスタムルールセットを作成することもできます(これは難しいことではありません。&が私の要件に対応しています)。ソリューションエクスプローラでプロジェクトを選択し

  1. :マネージコードのコード分析を有効にするには

  2. [プロジェクト]メニューの[プロパティ]をクリックします。
  3. [コード分析]をクリックします。
  4. ビルド時にコード分析を有効にする(CODE_ANALYSIS定数を定義する)を選択します。コード分​​析の設定の詳細については

、ご覧ください。 http://seesharper.wordpress.com/2010/04/02/code-analysis-in-team-build-2010/

をカスタムルールセットを構築するために:ルールセット&コード分析について学習するための

http://msdn.microsoft.com/en-us/library/dd264974.aspx

http://blogs.msdn.com/b/codeanalysis/archive/2010/03/26/how-to-write-custom-static-code-analysis-rules-and-integrate-them-into-visual-studio-2010.aspx

を:

http://msdn.microsoft.com/en-us/library/dd264996.aspx

+0

私はプレミアムを持っているので、私が仕事に戻るときにそれを試してみます。ありがとう! –

関連する問題