我想通過靜態分析驗證C#代碼中的一些設計模式。我發現通過爲Resharper創建插件,我可以在編碼時即時驗證模式。但是我沒有找到與其開放式API相關的良好文檔。有什麼鏈接可以找到合適的文檔。通過爲Resharper創建插件來靜態分析C#代碼來查找設計模式?
我正在使用MVVM模式,所以我想驗證View-Model類沒有任何依賴關係 與UI類或元素(WPF元素)。
我想通過靜態分析驗證C#代碼中的一些設計模式。我發現通過爲Resharper創建插件,我可以在編碼時即時驗證模式。但是我沒有找到與其開放式API相關的良好文檔。有什麼鏈接可以找到合適的文檔。通過爲Resharper創建插件來靜態分析C#代碼來查找設計模式?
我正在使用MVVM模式,所以我想驗證View-Model類沒有任何依賴關係 與UI類或元素(WPF元素)。
This article看起來可能會有所幫助。有一個用於創建上下文感知插件的演練。它繼續here。
我認爲第二篇文章與您最相關,因爲它涵蓋了使用訪問者模式鉤入ReSharper守護進程 - 並執行一些有用的工作。
This page是Open API文檔的根源。
HTH
該文檔目前有些分散。爲了讓你開始,請看看我認爲瞄準4.5版本的ReSharper Extensibility Guide,但仍然是一個好的開始。正如另一張海報中提到的,Hadi Hariri's blog是查找ReSharper插件編寫信息的好來源。另外,請查看ReSharper PowerToys瞭解一些示例代碼。
最後,ReSharper 6插件開發的文章(很少,至今)here。更多內容將很快添加。
感謝您的回覆,我沒有經過powerToy源碼。有沒有任何文件可以用於理解PowerToy源代碼(用戶友好的文檔)。ReSharper Extensibility Guide對於理解一些基礎知識非常有用。 我發現了一些與R#([This link](http://www.rsdn.ru/projects/rsharp/article/rsharp_mag.xml#EGB))有關的文檔,在Resharper插件中有用嗎? – 2011-03-15 10:53:54
@Vinod - 不,這與另一個名爲R#的項目有關,它與ReSharper無關。 – 2011-03-15 11:01:15
我非常喜歡您鏈接的ReSharper Extensibility Guide中的「如何尋找幫助」部分下的「TODO」!非常多的話題;-) – sheikhjabootie 2011-03-15 11:18:57
ReSharper 5引入了模式目錄AKA結構搜索和替換。它允許您輕鬆創建快速修復和上下文操作,無需編寫自己的ReSharper插件。我建議在開始編寫插件之前檢查它是否滿足您的需求。您可以在這裏找到的概述:
http://blogs.jetbrains.com/dotnet/2010/04/introducing-resharper-50-structural-search-and-replace/
JetBrains公司還提供了一個樣本目錄,其中展示了一些很酷的東西,你可以做什麼,他們的下載頁面上:
謝謝詹姆斯的回覆。 我其實有很多類和名字空間。所以我想根據每個類中使用的命名空間將它們分成不同的層,並且使用少量的方法來限制幾層。 例如,我不希望在視圖層中有一個dispose()方法(我正在使用MVVM設計樣式)。 所以我需要知道哪一類屬於先查看圖層。 我可以根據使用的命名空間和父類對圖層進行分類。 我們可以得到名稱空間和父類(或接口)的列表,然後使用「搜索和替換」在該類中搜索表達式? – 2011-03-17 10:45:44
@Vinod - 不,你需要一個完整的ReSharper插件來完成你想要實現的任務。使用模式目錄,您可以根據類型(或派生)進行限制,但不能根據名稱空間進行限制。 – 2011-03-21 17:36:35
感謝您的答覆..我經歷了這些網站,但發現有關插件開發的信息很少。我想知道是否有像JavaDoc這樣的文檔能夠更好地理解API。 – 2011-03-15 10:57:44
@Vinod - 我不認爲有像JavaDoc這樣描述API本身的東西。所有的Open API文檔都非常複雜(http://confluence.jetbrains.net/display/ReSharper/ReSharper+Plugin+Development)。 2.5x文檔是最全面的 - 但它大多是示例,並沒有像javadoc。後面的版本似乎只是記錄了版本之間的差異和新功能。它大部分似乎只是指PowerToy的例子。我認爲學習它的唯一方法是挑選一些例子。 – sheikhjabootie 2011-03-15 11:30:03