メソッドを特定のコンテキストでのみ呼び出す必要があることを指定する規則テストを作成しようとしていEmpty
ますTestAttribute
。
ゲッターを古いものとしてマークしたり、別のメソッドを使用したりする必要があることも知っていますが、将来壊れないように、これに関する規約テストも必要です。
私は、慣例テストでリフレクションによる静的分析を使用したいと考えています。この種の分析を実行するにはどうすればよいでしょうか。
メソッドを特定のコンテキストでのみ呼び出す必要があることを指定する規則テストを作成しようとしていEmpty
ますTestAttribute
。
ゲッターを古いものとしてマークしたり、別のメソッドを使用したりする必要があることも知っていますが、将来壊れないように、これに関する規約テストも必要です。
私は、慣例テストでリフレクションによる静的分析を使用したいと考えています。この種の分析を実行するにはどうすればよいでしょうか。
はい、Roslyn はこの種のことを手伝うことができます。これがスタンドアロン分析としてどのように見えるかの例は、次のようになります。
var solution = Solution.Load(pathToSolution);
foreach (var project in solution.Projects)
{
var type = project.GetCompilation().GetTypeByMetadataName(typeNameContainingMethod);
var method = type.GetMembers("Empty").Single();
var references = method.FindAllReferences(solution);
foreach (var referencedSymbol in references)
{
foreach (var referenceLocation in references)
{
CheckIfCallIsAllowed(referenceLocation);
}
}
}
テストではなく編集時にこれを行う別の方法については、「コードの問題の作成」チュートリアルと Roslyn CTP に付属するコードの問題テンプレートを参照することもできます。