3

Roslyn を使用して、到達不能なコードやその他のビルトイン コンパイル警告を検出することは可能ですか?

private void DoSomething()
{
     string a = "TEST";

     throw new Exception("Why would I throw an exception here?");

     a = "This will never be reached"; //this is a compile time warning for unreachable code...Can I detect it?

}

セマンティック メソッドとシンタックス メソッドのノード プロパティを調べてみましたが、問題や警告のコレクションは見つかりませんでした。

4

1 に答える 1

7

これは、セマンティック モデルの AnalyzeRegionControlFlow メソッドを使用して検出できます。関心のあるステートメントに対応するテキスト スパンでこのパスを呼び出します。AnalyzeRegionControlFlow は、プロパティ RegionEndPointIsReachable を持つデータ構造を返します。また、リージョンにジャンプしたり、リージョンからジャンプしたりするすべてのステートメントも通知します。

コンパイラが報告する実際の診断を見つける方法を知りたい場合は、セマンティック モデルで GetDiagnostics メソッドを使用する必要があります。

于 2012-04-19T18:17:30.143 に答える