2017-01-03 118 views
0

访问文件的源代码,我试图写一个微软的Visual Studio扩展,分析代码,并通知各功能的圈复杂度得分的用户。我正在通过IWpfTextView访问代码进行分析,但现在我注意到IWpfTextView.TextViewLines只包含屏幕上可见的代码行。我需要能够访问所有的代码,而不仅仅是可见的代码,以便计算圈复杂度。有人知道我可以如何访问所有的代码吗?提前致谢!!如何从一个Visual Studio扩展

回答

1

利用自动化模型(EnvDTE)你会使用EnvDTE.Project.CodeModel或EnvDTE.ProjectItem.FileCodeModel的代码模型。请参阅:

HOWTO: Get an EnvDTE.DTE instance from a Visual Studio package.

HOWTO: Navigate the code elements of a file from a Visual Studio .NET macro or add-in.

每个EnvDTE.CodeElement有GetStartPoint/GetEndPoint方法来获取一些相关点。给定一个EnvDTE.TextPoint您可以创建一个EnvDTE.EditPoint(通过TextPoint.CreateEditPoint),然后调用EditPoint.GetText(...)

对于VS 2015和更高和C#/ VB.NET,你可以使用Compiler Platform (a.k.a. "Roslyn")在句法和语义模型被曝光编译器