静态检查框架约定

Gen*_*ent 9 c# vb.net visual-studio-2010 convention-over-configur visual-studio

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

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

主要特点需要:

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

任何输入建议都表示赞赏,但我要求您只有在知道这些功能受支持时才会回复.

Mat*_*ogg 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");
}
Run Code Online (Sandbox Code Playgroud)

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