C# 需要遍历解决方案中的.cs文件并确定是否使用了函数

C# 需要遍历解决方案中的.cs文件并确定是否使用了函数,c#,C#,我想写一个实用程序的工作,我可以采取一个我们使用自定义代码生成过程生成的函数名列表,并通过一个特定的解决方案遍历所有的.cs文件,并确定是否正在使用该函数。阻止我弄明白这一点的最困难的事情是确定函数是否在注释行或代码块中。我计划只循环遍历每个.cs文件,并使用streamreader查找函数名上的匹配项。这是一个好的开始吗 注意:这是一个实用程序,我想写,我可以使用各种解决方案文件。我们的code gen实用程序生成了数千个函数,我希望报告未使用的函数。我将编译代码并使用类似的工具,没有理由重新

我想写一个实用程序的工作,我可以采取一个我们使用自定义代码生成过程生成的函数名列表,并通过一个特定的解决方案遍历所有的.cs文件,并确定是否正在使用该函数。阻止我弄明白这一点的最困难的事情是确定函数是否在注释行或代码块中。我计划只循环遍历每个.cs文件,并使用streamreader查找函数名上的匹配项。这是一个好的开始吗


注意:这是一个实用程序,我想写,我可以使用各种解决方案文件。我们的code gen实用程序生成了数千个函数,我希望报告未使用的函数。

我将编译代码并使用类似的工具,没有理由重新发明轮子


使用CQL代码查询语言语句可以很好地自动化此过程。

我会编译代码并使用类似的工具,没有理由重新发明轮子

使用CQL代码查询语言语句可以很好地自动化此过程。

我一直在:

编辑->查找和替换->在文件中查找

然后弹出一扇窗户。您可以从“查找范围”下拉列表中选择整个解决方案。然后在“查找内容”字段中键入要查找的内容

编辑:哦,我看到你在寻找一个函数列表。我道歉。我想这只适用于单个项目…

我总是去:

编辑->查找和替换->在文件中查找

然后弹出一扇窗户。您可以从“查找范围”下拉列表中选择整个解决方案。然后在“查找内容”字段中键入要查找的内容


编辑:哦,我看到你在寻找一个函数列表。我道歉。我想这只适用于单个项目…

csproj文件是xml,因此您可以使用它来获取项目中列出的文件列表。您可以通过在类中查找大括号之外的代码,然后解析出任何修饰符、返回类型和参数,然后在每个文件中搜索找到的所有方法名来选择方法名。在处理之前将注释从文件中剥离的奖励

我正在做一些非常类似的C代码目前,它的工作正常

我在查找函数调用时做了一件事,我有一个调用列表,其中我关心的是它们是否在文件中被调用,如下所示:

在已删除所有注释的文件上为函数名运行正则表达式 如果正则表达式找到匹配项,请逐行检查文件,并报告在哪一行找到函数调用
csproj文件是xml,因此您可以使用它来获取项目中列出的文件列表。您可以通过在类中查找大括号之外的代码,然后解析出任何修饰符、返回类型和参数,然后在每个文件中搜索找到的所有方法名来选择方法名。在处理之前将注释从文件中剥离的奖励

我正在做一些非常类似的C代码目前,它的工作正常

我在查找函数调用时做了一件事,我有一个调用列表,其中我关心的是它们是否在文件中被调用,如下所示:

在已删除所有注释的文件上为函数名运行正则表达式 如果正则表达式找到匹配项,请逐行检查文件,并报告在哪一行找到函数调用
我希望通过编写一个可跨多个解决方案使用的实用程序并报告未使用的功能来实现此过程的自动化。我希望通过编写一个可跨多个解决方案使用的实用程序并报告未使用的功能来实现此过程的自动化。我希望找到一个免费的解决方案,因为我没有独立软件许可证如果情况变得更糟,我可能不得不买一个+1作为一个好的答案。这取决于您需要多久做一次,但您可以手动从reflector获取这样一个列表-或者构建一个自定义反射工具,根据您编译的程序集生成此报告。啊,我认为我们走的是正确的道路。生成的代码最终在其自己的程序集中。我可以存储程序集中生成的所有函数名的列表,然后加载解决方案中的所有其他程序集,并查看调用了哪些生成的函数。我只是不知道如何判断外部函数调用是否是通过反射进行的……我希望找到一个免费的解决方案,因为我没有独立的许可证。如果情况变得更糟,我可能不得不买一个+1作为一个好的答案。这取决于您需要多久做一次,但您可以手动从reflector获取这样一个列表-或者构建一个自定义反射工具,根据您编译的程序集生成此报告。啊,我认为我们走的是正确的道路。生成的代码最终在其自己的程序集中。我可以存储从程序集中生成的所有函数名的列表,然后加载
查看解决方案中的所有其他程序集,并查看调用了哪些生成的函数。我只是不知道如何判断外部函数调用是否是通过反射进行的……如何去掉所有注释?我有一个正则表达式,搜索//注释,然后搜索/***/注释,有些情况下你必须小心,比如有人使用像//*/这样的注释在代码块之间切换。更好的解决方案是使用解析器,而不是我使用的大量正则表达式,但这是我最初使用的方式,我没有机会重写它。如何删除所有注释?我有一个正则表达式,搜索//注释,然后搜索/**/注释,有些情况你必须小心,比如有人使用//*/之类的注释作为代码块之间的切换。更好的解决方案是使用解析器,而不是我使用的大量正则表达式,但这是我最初使用的方式,我没有机会重写它