静态检查框架约定

时间:2012-01-27 19:35:44

标签: c# vb.net visual-studio visual-studio-2010 convention-over-configur

是否有一个产品/项目允许您定义一个MVC项目的约定来静态检查命令约定,例如Controller附加在从控制器继承的类的末尾并且/或在装饰时强制执行某个方法签名具有属性的方法。

我基本上正在寻找一种方法来为我们团队的新开发人员设置一些护栏,我们有一套明确的约定,其中一些用于通过反射动态连接。看到这种反射连接因签名不兼容而失败将对我们的提升过程带来巨大的好处。

需要的主要功能:

  • 静态/编译时间检查损坏的规则
  • 能够定位使用特定属性(通过RegEx或向导)修饰的方法
  • 基于不同类型项目的不同规则集。 (示例:MVC应用程序的一组约定,Web窗体应用程序的不同集合,以及后缀为.BLL的类库的不同集合)

我们非常感谢任何输入建议,但我要求您只有在知道这些功能受支持时才会回复。

1 个答案:

答案 0 :(得分:4)

这里的个人经历,但我总是为这样的事情写测试。我通过我的程序集解析并确保遵循约定。对于几个具体示例,我检查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");
}

我确信有人会有更好/更自动化的东西,但这对我有用。