我知道FxCOP自定义规则适用于IL代码。还已经创建了一个自定义规则来检查方法的输入参数数量。现在,我想知道我们是否可以创建自定义规则以在类文件中实现评论比率(即1:15)。请告诉我你的看法。
答案 0 :(得分:8)
由于FxCop只能看到已编译的IL,因此无法真正对只在源中提供的内容进行判断调用。如果您想对源代码本身执行某些操作,则需要使用在该级别上运行的检查器。
StyleCop或可能Roslyn CTP将成为实施您的规则的候选人。 Resharper或CodeRush的自定义插件也可以使用。
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中进行实时编辑和执行,类型集结果显示带有按程序集/命名空间分组的功能,以及在源代码中跳转到类型定义:
此类代码规则can be checked live in Visual Studio和at Build process time可以创建HTML+JS report。此外,还提供了200 default code rules左右。