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