2009-06-27 95 views
13

我想問你是否知道一些免費的C#庫(dll)來計算CK指標(主要是Cyclomatic Complexity)。免費的C#度量計算庫(DLL)

我需要爲我打算做的項目。我知道已經有一些完成的解決方案可以計算CK度量標準並以各種形式顯示給您,但我需要的是我可以在我的應用程序中使用的解決方案。所以在開始寫作之前,我首先想問你。

感謝

+0

你有沒有發現一個圖書館嗎?或者你是如何解決這個問題的? – RoflcoptrException 2010-10-21 21:41:48

+0

不,這是我的程序想法的一部分,但不幸的是我目前的時間不允許我繼續並創建應用程序。因此,我也沒有調查任何進一步的搜索適當的圖書館 – Juri 2010-10-22 05:46:38

+0

好的謝謝。所以我不得不進一步搜索;) – RoflcoptrException 2010-10-22 09:02:55

回答

15

DrivenMetrics是一個開源的C#命令行工具。核心功能作爲庫與命令行控制檯客戶機隔離(核心項目可用here)。

即使很簡單,它也可以滿足您的需求:它是免費的,計算行數並計算方法的圈複雜度(潛在代碼路徑的數量)。

這是通過直接分析IL得到的,這要歸功於Mono.Cecil(與NDepend依賴的庫相同)。這樣就可以從C#編寫,VB.Net,代碼生成的程序集進行分析......

  • 該項目已被宣佈 here
  • 代碼來源012ght可用於github
  • 打包版本也是available
  • 它適用於Windows和Mono。

UPDATE:

另一種選擇將是驚人的憲兵,從項目的靜態分析工具。

作爲使用示例,下面的代碼顯示程序集中每個方法的圈複雜度。

ModuleDefinition module = ModuleDefinition.ReadModule(fullPathToTheAssembly); 

foreach (var type in module.Types) 
{ 
    foreach (var me in type.Methods) 
    { 
     if (!me.HasBody || me.IsGeneratedCode() || me.IsCompilerControlled) 
      continue; 
     var r = AvoidComplexMethodsRule.GetCyclomaticComplexity(me); 

     Console.WriteLine("{0}: {1}", me.ToString(), r); 
    } 
}
  • 該項目被描述here
  • 代碼源代碼可以在github
  • 封裝版本也available
  • 它的工作都在Windows和Mono
3

我使用SourceMonitor,這是一個很好的免費應用程序,衡量代碼的複雜性和其他指標的各種語言,包括C#。我們從命令行驅動它來生成XML輸出,然後我們使用LINQ to XML來提取和分類我們感興趣的數據。然後,我們使用NVelocity創建HTML報告。

我知道它不是託管的圖書館,但您可能會發現它可以滿足您的需求。

-1

With 82 code metrics支持NDepend是用於.NET開發人員(但是它是商業工具)的Roll Royce工具的代碼指標。

0

它不是沒有免費的,但是我對NCover有很好的體驗的東西。他們也很好地與很多CI工具集成在一起。