9

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

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

需要的主要功能:

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

尽管我要求您仅在知道支持这些功能时才回复任何输入建议。

4

1 回答 1

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

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

于 2012-01-27T22:30:26.953 回答