在我的项目中,我使用自定义控件而不是普通的 ASP.NET 控件。我们已经在 .NET 上构建了一个体系结构并正在使用它的控件。
现在我需要编写一个自定义规则来检查是否正在使用某些 Windows 控件。原因是,我的团队需要仅限于我旨在替换 Windows 控件的自定义控件。
示例:我需要搜索,如果他们正在使用 System.Windows.Controls.Textbox .....我需要它是一个错误。
谁能帮我写代码?
我希望问题很清楚.....如果需要进一步澄清,请告诉我。
在我的项目中,我使用自定义控件而不是普通的 ASP.NET 控件。我们已经在 .NET 上构建了一个体系结构并正在使用它的控件。
现在我需要编写一个自定义规则来检查是否正在使用某些 Windows 控件。原因是,我的团队需要仅限于我旨在替换 Windows 控件的自定义控件。
示例:我需要搜索,如果他们正在使用 System.Windows.Controls.Textbox .....我需要它是一个错误。
谁能帮我写代码?
我希望问题很清楚.....如果需要进一步澄清,请告诉我。
NDepend工具让我们在 .NET 代码上编写自定义代码规则比使用 FxCop 更容易。免责声明:我是该工具的开发人员之一
使用此工具,您可以在 LINQ 查询(称为CQLinq)上编写自定义代码规则。例如,您要查询的查询可以用 CQLinq 以这种方式编写:
// <Name>Don't use system controls</Name>
warnif count > 0
let systemControls = ThirdParty.Types.Where(
t => t.DeriveFrom("System.Windows.Forms.Control".AllowNoMatch()))
where systemControls.Count() > 0
from t in systemControls
let methodsThatCreateT = t.TypesUsingMe.ChildMethods().Where(m => m.CreateA(t))
select new { t, methodsThatCreateT }
在编辑此类代码规则时,会立即显示可浏览的结果(此处为3 毫秒)。双击此结果中的任何类型或方法,将跳转到 Visual Studio 源代码中的声明:
提出了200 条默认代码规则。该工具 100% 集成在 Visual Studio 2012、2010 和 2008 中。默认或自定义代码规则可以在 Visual Studio 中验证,和/或在构建过程时,在生成的 HTML+javascript 报告中进行验证。
这种规则的逻辑相当简单:
这个比较简单。一个更大的问题是,通常会在设计器生成的代码中调用相关的构造函数,而大多数人在执行 FxCop 时倾向于忽略这些代码。要使您的规则生效,您需要在分析中包含设计器生成的代码。