我们可以使用C#创建一个FxCop自定义规则来检查类文件中的Comments Ratio

时间:2013-05-29 06:33:30

标签: c# fxcop

我知道FxCOP自定义规则适用于IL代码。还已经创建了一个自定义规则来检查方法的输入参数数量。现在,我想知道我们是否可以创建自定义规则以在类文件中实现评论比率(即1:15)。请告诉我你的看法。

2 个答案:

答案 0 :(得分:8)

由于FxCop只能看到已编译的IL,因此无法真正对只在源中提供的内容进行判断调用。如果您想对源代码本身执行某些操作,则需要使用在该级别上运行的检查器。

StyleCop或可能Roslyn CTP将成为实施您的规则的候选人。 ResharperCodeRush的自定义插件也可以使用。

NDepend附带了这项功能,正如帕特里克指出的那样。

答案 1 :(得分:1)

FxCop不解析(C#)源文件,它只关注IL编译代码的分析。因此,FxCop不知道源文件中的注释。


或者,您可以使用工具NDepend编写自定义代码规则,以使用C#检查类文件中的评论比率(免责声明:我是开发人员之一工具)。

NDepend是一个IL静态分析器,它还解析C#源文件以收集注释代码度量标准(有关详细信息,请访问Understanding NDepend Analysis Inputs)。

NDepend让我们通过C#LINQ查询查询代码,并且在warnif count > XX作为前缀时查询可以成为规则。因此,编写LINQ代码规则以使用C#检查类文件中的 Comments Ratio,就像编写一样简单:

// <Name>Types not enough commented</Name>
warnif count > 0
from t in Application.Types
where t.NbLinesOfCode > 0 
let commentRatio = t.NbLinesOfComment / (float)t.NbLinesOfCode
where commentRatio < 0.5 // Require at least 50% of comments
orderby commentRatio descending
select new { t, 
             commentRatio , 
             t.NbLinesOfComment, 
             t.NbLinesOfCode 
           }

此代码规则可以在Visual Studio中进行实时编辑和执行,类型集结果显示带有按程序集/命名空间分组的功能,以及在源代码中跳转到类型定义:

Ratio Comment CQLinq NDepend

此类代码规则can be checked live in Visual Studioat Build process time可以创建HTML+JS report。此外,还提供了200 default code rules左右。