2012-11-08 87 views
1

目前我正在開發一個沒有打開代碼分析的項目。你如何針對一部分文件運行代碼分析?

我想要做的只是運行CA針對我/觸摸工作中的文件是什麼之前,我簽入,但有一定的侷限性:

  • 我沒有把它的選項在項目上。即使我做了...
  • 該項目是巨大的; CA需要運行一段時間,並且警告很多。從列表中挑選出我接觸到的文件將成爲大海撈針。

任何人有什麼想法?

回答

0

一個想法是通過工具NDepend運行代碼規則(免責聲明:我是該工具的開發人員之一)。

我想什麼做的只是運行對我工作的文件CA /觸摸

關於這第一點,NDepend的讓我們通過LINQ查詢編寫代碼的規則,並提出了一個設施是query the code diff之間的當前代碼版本,和以前版本的代碼(基線)。因此,用戶可以編寫一個代碼規則,只關注從現在到基線之間已經改變的代碼規則。

提出了大約200個默認代碼規則,例如Avoid making complex methods even more complex。如果我們看一下這條規則的LINQ代碼,我們可以首先看到,它只過濾CodeWasChanged的方法,然後檢測那些足夠複雜並且變得更復雜的方法。這裏通過流行的代碼度量Cyclomatic Complexity來定義方法複雜度。

// <Name>Avoid making complex methods even more complex (Source CC)</Name> 

warnif count > 0 
from m in JustMyCode.Methods where 
    m.CodeWasChanged() // <----- 

let oldCC = m.OlderVersion().CyclomaticComplexity 
where oldCC > 6 && m.CyclomaticComplexity > oldCC 

select new { m, 
    oldCC , 
    newCC = m.CyclomaticComplexity , 
    oldLoc = m.OlderVersion().NbLinesOfCode, 
    newLoc = m.NbLinesOfCode, 
} 

自基線以來,所有默認或自定義規則都可以適用於被重構的代碼或已引入的代碼。代碼規則組Code Quality RegressionAPI重大更改包含這些自適應的代碼規則,開箱即用。

關於點CA需要一個年齡來運行,並且警告很多。你可以try NDepend now,看到它不會讓你等待。它需要幾秒鐘的時間來分析您的大型代碼庫並執行200條默認規則(因爲它們只是C#LINQ查詢,所以可以輕鬆定製)。

相關問題