9

コントローラから継承したクラスの最後にコントローラが追加されたり、クラスの最後の部分にコントローラが追加されたりするなど、命名規則を静的にチェックするためのMVCプロジェクトの規則を定義できる製品/プロジェクトはありますか?ある属性を持つメソッドを装飾するときの特定のメソッドシグネチャ。フレームワーク規約の静的チェック

基本的に私たちのチームに来る新しい開発者のためのガードレールをいくつか設定する方法を模索していますが、その中にはリフレクションを通して物事を動的に配線するために使用される明確な規則があります。互換性のない署名のためにこの反射ワイヤーアップが失敗することがわかると、私たちのランプアッププロセスに大きな恩恵をもたらすでしょう。必要な

主な特長:

  • スタティック/壊れたルールのために(正規表現またはウィザードを経由して)特定の属性の異なるに基づいてルールの
  • 異なるセットで飾られた方法を対象とする
  • 能力をチェックする時間をコンパイルしますプロジェクトの種類。 (例:MVCアプリケーション用の一連の規則、Webフォームアプリケーション用の別の集合、.BLLの付いたクラスライブラリ用の別の集合)

入力候補は高く評価されますがこれらの機能がサポートされていることがわかっている場合にのみ応答します。

+0

FxCop/Code Analysisを試しましたか? – BrokenGlass

答えて

4

ここでの個人的な経験はありますが、私はいつもこのようなテストを書いています。私は私の集会を解析し、物事が慣習に従っていることを確認します。具体的な例をいくつか挙げてみると、私はWCFの要求/応答オブジェクトをチェックして、ワイヤを介して「DTO」を送信していないことを確認し、すべてが一貫したXML名前空間に入っていることを確認します。

[Test] 
public void All_IMyService_methods_should_return_a_BaseResponse() 
{ 
    var methods = typeof (IMyService).GetMethods(); 
    foreach (var methodInfo in methods) 
     Assert.That(typeof (BaseResponse).IsAssignableFrom(methodInfo.ReturnType), "Service Method " + methodInfo.Name + " does not return a BaseResponse"); 
} 

私は誰かがより自動化/より良いものを持っていると確信してんだけど、これは私の仕事:ここ

は、すべてのサービスメソッドがBaseResponseオブジェクトを継承し、何かを返すことを確認する簡単な例です。

+0

これは本当にクールなアプローチですが、私は今週の懸念しているユースケースをカバーするかどうかを確認するためのショットを提供します。 – Gent

+1

私はそれが好きです。それはあなたが得ることになるほど柔軟です。それは、反映の柔軟性によってのみ制限されます。つまり、おそらくテストできないものにぶつからないでしょう。 –

+0

感謝して、すべてのケースをカバーすることができました。 – Gent

関連する問題