获取方法体c#

时间:2014-02-06 13:03:19

标签: c# visual-studio fxcop

我正在尝试编写自定义规则(代码分析),其中,如果方法的主体包含空语句,则会引发错误。

然而,有一个问题。我似乎无法弄清楚如何获取方法的主体(方法中的文本)。

如何在方法中获取文本,并将其分配给字符串?

提前致谢。

供参考;我在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;
        }

2 个答案:

答案 0 :(得分:2)

FxCop不分析源代码,它适用于使用任何语言构建的.Net程序集。

您可以使用FxCop查找方法是否包含语句,我建议您阅读文档并检查现有规则的实现以了解它。

编译器可能会删除其他代码中间的空语句,您可能无法使用FxCop找到它。如果你想分析源代码,你应该看一下StyleCop。

答案 1 :(得分:1)

  

然而,有一个问题。我似乎无法弄清楚如何获得方法的主体   (方法中的文字)。

你做不到。 FxCop不能基于源工作,而是分析编译的字节码。

你可以做的是找到源 - 这不是完全无关紧要的 - 但你必须在没有FxCop API的情况下这样做。一个起点可能是分析pdb文件(不知道在哪里找到文档),因为它们可以指向包含该方法的文件。