如何将实际的c# *.cs源代码文件读取为可查询的对象

本文关键字:读取 文件 对象 查询 源代码 cs | 更新日期: 2023-09-27 18:10:21

我需要写一个windows应用程序,读取一个实际的c# .cs文件,然后试图确定哪些源文件上的程序没有一个名为"int userID"的参数(这是一种代码检查器)。

有没有什么东西已经读取c#文件到某种类型的对象,有一个名为"procedureName"的属性和另一个名为"parameterList"的属性…可以查询??

如果不是,最好的方法是什么?

如何将实际的c# *.cs源代码文件读取为可查询的对象

我建议使用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");
}