静态检查框架公约

问题描述:

是否有产品/项目,将允许您定义说,一个MVC项目静态检查命名约定像器上的类,从控制器继承和/或执行最终被追加公约装饰具有属性的方法时的某些方法签名。静态检查框架公约

我基本上是在寻找一种方式来样设置一些护栏新开发者进场我们的团队,我们有一个明确的约定的其中一些动态建立通过反射用于电线的东西。看到这种反射导线会因为签名不兼容而失败,这对我们的加速过程来说是一个巨大的益处。

主要功能所需:

  • 静态/编译时间根据不同的检查破碎规则
  • 能力为目标的装饰具有特定属性(通过正则表达式或向导)
  • 规则套不同方法项目类型。 (例如:一种用于MVC应用程序,一组不同的Web窗体应用程序,以及一个类库一组不同的与.BLL后缀组约定)

任何输入建议表示赞赏,虽然我问你只有在您知道这些功能支持时才会回应。

+0

你试过FxCop/Code Analysis吗? – BrokenGlass 2012-01-27 22:28:35

个人经验在这里,但我总是为这样的事情写测试。我通过我的程序集解析并确保事情遵循约定。对于一些特定的示例,我检查WCF请求/响应对象以确保它们不通过线路发送“DTO”,并且它们都位于一致的XML名称空间中。

下面是一个简单的例子,确保所有服务方法返回的东西,继承BaseResponse对象:

[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"); 
} 

我敢肯定有人会更好的东西/更自动化的,但是这为我工作。

+0

这是一个非常酷的做法,我会试一试,看看它是否会覆盖使用情况我很担心这个周末。 – Gent 2012-02-01 14:13:31

+1

我喜欢它。它像你将要获得的一样灵活。它仅受反射灵活性的限制。也就是说,你可能不会遇到一些无法测试的东西。 – 2012-02-01 16:37:12

+0

谢谢我能够通过反思涵盖我所有的案例! – Gent 2012-02-06 14:26:39