如何从Visual Studio扩展访问文件的源代码

时间:2017-01-03 18:30:19

标签: visual-studio vsix

我正在尝试编写一个Microsoft Visual Studio扩展,分析代码并通知用户每个函数的圈复杂度得分。我通过IWpfTextView访问代码进行分析,但是现在我注意到IWpfTextView.TextViewLines只包含屏幕上可见的代码行。我需要能够访问所有代码而不仅仅是可见代码才能计算出圈复杂度。有谁知道我如何访问所有代码?在此先感谢!!

1 个答案:

答案 0 :(得分: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")