在 C# 中解析 VB.Net 代码库
Parsing VB.Net codebase in C#
我正在开发一个 VB.NET 代码库,它使用与匈牙利语 Notiation 模糊相似的旧命名约定,例如:
- 成员字符串 Test 将是 mstrTest
- 函数范围的 int Test 将是 lintTest
- 参数对象测试将是 pobjTest
为了验证变量的命名是否正确,并为每个不一致的变量名制定解决方案,我需要在代码库中找到任何变量实例,以及它们的范围和类型。
我已经使用正则表达式进行了一些测试来查找函数和子变量,但是 class 成员变量的实例(例如)很难以这种方式进行,更不用说解析代码了正则表达式感觉不正确。
有没有一种方法(在 C# 中)我可以从代码库创建某种结构化的层次结构 而无需 从头开始,或者有更好的方法来实现这个目标一般来说?
抱歉,如果我的解释是 wrong/vague,我之前没有尝试过解析语言。
即使在 VB6 时代,匈牙利表示法也被认为是非常糟糕的做法。你问的是需要代码分析。
正则表达式是不够的。您可以使用 Resharper 等工具使用其 SDK 查找甚至重命名变量,尽管可能有一些插件已经可以满足您的需求。在 .NET vNext 中,Roslyn 编译器将允许您开箱即用地执行此操作。如果您不想使用 Resharper,也许您可以尝试使用 VS2015 CTP 6 创建一个快速实用的实用程序。
您可以从 Roslyn 的 GitHub repository, it contains several samples that show how to write analyzers, refactorings etc, as well as documentation on syntax and semantic analysis. Also check Kathleen Dollard's RoslynDOM 库开始,它显着简化了编码
我正在开发一个 VB.NET 代码库,它使用与匈牙利语 Notiation 模糊相似的旧命名约定,例如:
- 成员字符串 Test 将是 mstrTest
- 函数范围的 int Test 将是 lintTest
- 参数对象测试将是 pobjTest
为了验证变量的命名是否正确,并为每个不一致的变量名制定解决方案,我需要在代码库中找到任何变量实例,以及它们的范围和类型。
我已经使用正则表达式进行了一些测试来查找函数和子变量,但是 class 成员变量的实例(例如)很难以这种方式进行,更不用说解析代码了正则表达式感觉不正确。
有没有一种方法(在 C# 中)我可以从代码库创建某种结构化的层次结构 而无需 从头开始,或者有更好的方法来实现这个目标一般来说?
抱歉,如果我的解释是 wrong/vague,我之前没有尝试过解析语言。
即使在 VB6 时代,匈牙利表示法也被认为是非常糟糕的做法。你问的是需要代码分析。
正则表达式是不够的。您可以使用 Resharper 等工具使用其 SDK 查找甚至重命名变量,尽管可能有一些插件已经可以满足您的需求。在 .NET vNext 中,Roslyn 编译器将允许您开箱即用地执行此操作。如果您不想使用 Resharper,也许您可以尝试使用 VS2015 CTP 6 创建一个快速实用的实用程序。
您可以从 Roslyn 的 GitHub repository, it contains several samples that show how to write analyzers, refactorings etc, as well as documentation on syntax and semantic analysis. Also check Kathleen Dollard's RoslynDOM 库开始,它显着简化了编码