2011-03-23 76 views
3

我想開始使用Open API開發Resharper的插件。由於可用文檔非常少,對於初學者,我想開發一個簡單的C#應用​​程序來提取類的詳細信息(例如,類名稱,類中的方法數等),以便我能夠理解Resharper庫和它提供的內置函數。開發簡單的C#應用​​程序來理解Resharper Open API

如果我可以提取這些細節並將其打印在控制檯上,以方便測試,這將是理想的。

謝謝。

回答

2

如果你想自己解析代碼,那會更復雜一些。以下是粗略概述瞭如何解析文件。

var buffer = new StringBuffer(sourceCode); 
var lexer = LexerFactory.CreateLexer(buffer); 
var defines = EmptyArray<PreProcessingDirective>.Instance; // assume there are none 
var parser = new CSharpParser(lexer, defines); 
var file = parser.ParseFile() as CSharpFile; 

現在您可以使用file來導航代碼結構。

順便說一句,我強烈建議使用F#。這是爲了這樣的事情。

+0

謝謝德米特里。 我非常理解你的代碼的邏輯,但他們resharper內置函數?我找不到他們。我想使用任何內置函數來獲取解析的C#文件的細節。 – Shaun 2011-03-23 15:32:26

+0

@Shaun當然是。 ''StringBuffer'在'JetBrains.Util'中,解析的東西在'JetBrains.ReSharper.Psi.CSharp'中,你當然也需要'JetBrains.ReSharper.Psi'。首先,我建議您將所有ReSharper DLL的引用添加到您的項目中 - 這樣,您將能夠從適合的組件中自動導入缺少的符號。 – 2011-03-24 08:18:19

+0

@Shaun呃......剛剛意識到,其中一些類是內部的或私人的。這是一個更正:改爲使用'CSharpLanguageService'類。它有創建解析器和詞法分析器的方法。 – 2011-03-24 08:34:42

3

在文檔方面,Developer Wiki上提供了一些信息,還有更多內容。您可能還想查看ReSharper Extensibility Guide,這有點嘈雜但仍然相關。

至於你如何檢查文件結構的問題 - 猜猜看 - 你甚至不需要API!以下是您需要執行的操作:

  • 使用/ReSharper.Internal鍵啓動Visual Studio。這將增強ReSharper頂級菜單的內部部分。
  • 挑選ReSharper-->Internal-->PSI Viewer。這將彈出一個類似於以下的表單:illustration
  • 現在,單擊創建按鈕,它可以讓您創建文件,語句,表達式或成員聲明。
  • 底部窗格將顯示解析的結構並讓您對其進行導航。

祝你好運!

+0

謝謝德米特里。在PSI Viewer甚至PSi瀏覽器(內部 - > windows - > PSI瀏覽器)中看到的細節非常好。 但我真的很感興趣從我的代碼本身處理所有這些細節。 我想我們可以通過使用JetBrains.ReSharper.Psi來訪問分析樹,但是我不確定我們如何輸入一個.cs文件然後提取它的文件結構。所以如果你可以放一小段代碼來獲取一個文件中的類的數量或者類似的例子,那將是非常有用的。這真的會幫助我先發一步。 – Shaun 2011-03-23 12:26:35

+0

@Shaun Ahh,在這種情況下,讓我寫另一個適當的答覆。 – 2011-03-23 12:39:12

相關問題