2017-01-03 80 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")在句法和語義模型被曝光編譯器