2016-06-16 1 views
1

時間の経過とともに非推奨にするタイプのOldThingがあります。新しいコールが廃止予定のタイプに使用されている場合、NDependに分析が失敗するようにするにはどうすればよいですか?

from this point on, don't add any more calls to 'OldThing'というNDependクエリ/ルールが必要です。

私たちは現在NDependを使用しており、don't make large methods even largerのようなチェックのためのベースラインビルドを持っています。

私たちはNDependを使ってを追加し、OldThingに発信したいと考えています。私は次のCQLクエリを持っています:

// <Name>Don't use OldThing going forwards</Name> 

warnif count > 0 

let containsMethods = Methods.WithFullNameIn(
    "MyNamespace.OldType.get_Foo()", 
    "MyNamespace.OldType.get_Bar()") 

from m in Application.Methods.UsingAny(containsMethods) 
where m.IsUsedRecently() 
select m 

...問題はありません。 新しいが見つかりません。

これをNDependで行う方法がありますか(おそらくtrend metricsを利用しています)。

答えて

1

where m.IsUsedRecently()は必要ありません。これはサードパーティのメソッド呼び出しのみです。

letの式が適切な非推奨のメソッドと一致していることを再度確認する必要があります(ObsoleteAttributeを使用してそれらを一度に一致させることもできます)。

最後に、あなたがこのルールcriticalをしなければならないし、それが動作するはずです:)

+0

おかげ@Patrick。これで、変更されたファイルの使用法が報告されますが、私はそれを追加の用途だけに報告したいと思います。たとえば、同僚がファイルを開いて変更した(ただし、これらのメソッドに*追加の呼び出しを追加していない)が、これらのメソッドを5回使用してビルドが中断されています。 –

+0

NDependは、あるメソッドが別のメソッドを呼び出しているのかどうかを知ることはできますが、メソッドが別のメソッドをN回呼び出すのではありません。このコンテキストでは、どの新しいメソッドまたはリファクタリングされたメソッドが古いメソッドを呼び出すのかを知りたいですか? (そして、ベースラインで呼び出さなかった) –

+1

あるビルドから別のビルドまでの 'カウント'を比較できる機能があればいいと思います。ビルドごとに新しい「トレンド」クエリを追加し、カウントがアップしたかどうかを確認することができます。 –

関連する問題