我正在尝试编写自定义规则(代码分析),其中,如果方法的主体包含空语句,则会引发错误。
然而,有一个问题。我似乎无法弄清楚如何获取方法的主体(方法中的文本)。
如何在方法中获取文本,并将其分配给字符串?
提前致谢。
供参考;我在visual studio中使用c#,使用FxCop来制定规则。
编辑:添加了一些代码以供参考,但这不起作用。
using Microsoft.FxCop.Sdk;
using Microsoft.VisualStudio.CodeAnalysis.Extensibility;
public override ProblemCollection Check(Member member)
{
Method method = member as Method;
if (method == null)
{
return null;
}
if (method.Name.Name.Contains("{}"))
{
var resolution = GetResolution(member.Name.Name);
var problem = new Problem(resolution, method)
{
Certainty = 100,
FixCategory = FixCategories.Breaking,
MessageLevel = MessageLevel.Warning
};
Problems.Add(problem);
}
return Problems;
}
答案 0 :(得分:2)
FxCop不分析源代码,它适用于使用任何语言构建的.Net程序集。
您可以使用FxCop查找方法是否包含语句,我建议您阅读文档并检查现有规则的实现以了解它。
编译器可能会删除其他代码中间的空语句,您可能无法使用FxCop找到它。如果你想分析源代码,你应该看一下StyleCop。
答案 1 :(得分:1)
然而,有一个问题。我似乎无法弄清楚如何获得方法的主体 (方法中的文字)。
你做不到。 FxCop不能基于源工作,而是分析编译的字节码。
你可以做的是找到源 - 这不是完全无关紧要的 - 但你必须在没有FxCop API的情况下这样做。一个起点可能是分析pdb文件(不知道在哪里找到文档),因为它们可以指向包含该方法的文件。