0

我需要编写一个读取实际 C# .cs 文件的 Windows 应用程序,然后尝试确定该源文件上的哪些过程没有名为“int userID”的参数(它是一种代码检查器)。

是否有一些东西已经将 C# 文件读入某种对象,这些对象具有一个名为“procedureName”的属性和另一个名为“parameterList”的属性......可以查询?

如果不是,那么实现这一目标的最佳方法是什么?

4

1 回答 1

2

我建议使用 NRefactory 应该能够提供解决方案。以下是一个示例,它将在名称为 bob 的文件中查找所有方法。

CSharpParser parser = new CSharpParser();
SyntaxTree syntaxTree = parser.Parse(@"namespace Test
    {

        public class TestClass
        {
            public void Method(string bob)
            {
            }
        }
    }");

var result = syntaxTree.Descendants.OfType<MethodDeclaration>().Where(x => x.Descendants.OfType<ParameterDeclaration>().Any(y => y.NameToken.Name == "bob"));

if (result.Any())
{
    Console.WriteLine("We Win");
}
于 2013-04-23T11:04:24.937 回答