2011-09-12 81 views

回答

4

Code Query and Rule over LINQ (CQLinq)確實提供了一個設施,以忽略生成的代碼

有一個方便的預定義域名爲JustMyCode類型ICodeBaseView

JustMyCode代表CQLinq的一個工具,用於從CQLinq查詢結果中消除生成的代碼元素。例如下面的查詢將只匹配不是由工具生成(如UI設計者)大的方法:

from m in JustMyCode.Methods where m.NbLinesOfCode > 30 select m 

該組產生的代碼元素通過與CQLinq關鍵字notmycode前綴CQLinq查詢定義 。例如下面的查詢匹配的源文件的名稱以「了.Designer.cs」結束定義的方法:

notmycode from m in Methods where 
    m.SourceFileDeclAvailable && 
    m.SourceDecls.First().SourceFile.FileName.ToLower().EndsWith(".designer.cs") 
select m 

的CQLinq查詢亞軍執行所有notmycode查詢依靠JustMyCode查詢,因此域名JustMyCode被定義爲全部。顯然,如果notmycode查詢依賴於JustMyCode域,CQLinq編譯器會發出錯誤。

有4個默認值notmycode查詢,很容易適應您的需要。注意到沒有默認notmycode爲命名空間查詢,但你可以創建自己的一個(或多個):

+0

Patrick,你能否詳細說明這一點並描述如何修改用於生成項目指標的所有CQL查詢?我可以看到嵌入到項目文件中的編碼查詢,但在我的生活中,我無法找到我要在UI中修改它們的位置! – rbellamy

+0

只需啓動VisualNDepend。exe文件,對NDepend項目進行分析或加載NDepend項目的最新分析結果,然後查看面板「CQL Query Explorer」,這是瀏覽查詢和規則並編輯它們的地方。 –

+0

我指的是一次更改所有查詢的能力。用例 - 使用「CQL查詢編輯」選項中提供的「複製到剪貼板默認CQL查詢」複製所有查詢。然後,使用選擇的正則表達式工具,修改所有查詢以忽略特定的名稱空間,或者遵循NDepend [Generated]屬性或您希望對CQL語句的標準進行其他全局更改。現在,如何用這些更新/修改的查詢輕鬆替換NDepend項目的默認查詢? – rbellamy

1

在「重構方法的快速總結」中找到了這一點R」

// Here are some ways to avoid taking account of generated methods. 
!(NameIs "InitializeComponent()" OR 
    // NDepend.CQL.GeneratedAttribute is defined in 
    // the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll 
    // You can define your own attribute to mark "Generated". 
    HasAttribute "OPTIONAL:NDepend.CQL.GeneratedAttribute") 

但是,這並沒有解決需要修改每一個CQL查詢,以確保他們都忽略生成的代碼。

相關問題