我正在编写自定义代码分析检查,其中我需要检查 ASP .NET MVC 应用程序中的模型类是否没有控制器类的引用。但是我找不到与如何检查我的控制器以供模型类参考有关的任何内容。
问问题
298 次
2 回答
0
如果您使用访问者方法 ( http://binarycoder.net/fxcop/html/check_and_visit.html ) 创建规则,您可以重写该VisitMemberBinding
方法以验证是否正在访问控制器类型的任何成员(假设您有识别特定目标类型是否有资格作为控制器的方法)。
于 2013-03-25T12:54:46.553 回答
0
.NET 开发人员的工具NDepend特别适合编写这种静态分析检查(免责声明:我属于开发 NDepend 的团队)
- 我正在编写自定义代码分析检查,其中我需要检查 ASP .NET MVC 应用程序中的模型类是否没有控制器类的引用
NDepend 允许通过 C# LINQ 查询编写自定义代码规则。提供了大约200 条默认代码规则。这种 LINQ 语法使编写您要求的规则变得简单:
warnif count > 0
let modelClasses = Application.Namespaces.WithNameLike("Model").ChildTypes()
let controllerClasses = Application.Namespaces.WithNameLike("Controller").ChildTypes()
from modelClass in modelClasses.UsingAny(controllerClasses)
select new { modelClass,
controllerClassesUsed = modelClass.TypesUsed.Intersect(controllerClasses)
}
显然调整这条规则很容易,也许你想通过不同的方式定义模型类或控制器类(从某个类派生,实现某个接口......)。
NDepend 可以集成到 VS 2012、2010、2008 中,并且可以编辑 LINQ 规则并实时浏览其结果。规则检查也可以集成到您的构建过程中,并且可以在报告中显示违反规则的情况。
- 但是我找不到与如何检查我的控制器以供模型类参考有关的任何内容。
我不确定是否理解这个要求,你的意思是要写一个规则来检查控制器类是否确实在使用模型类?
于 2013-03-26T07:38:08.767 回答