天天看點

Ruby靜态分析工具檢視:metric_fu, Simian, Saikuro以及其他

代碼品質構成了軟體品質的一部分。像Java和C++之類主流語言的工具已經比較成熟了,而Ruby相關工具還在成長。随着Ruby從早期采納者向早期大衆普及,人們對這些工具的需求越來越多,而且SLOC(源代碼行數)在不斷增長。人們使用自動化工具檢測多種問題,比如風格不一緻、方法過程和代碼重複。

Steve Hayes在芝加哥舉辦的Agile2009大會上做了一個名為“Java和Ruby的代碼品質”的演講。InfoQ也借此機會審視了Ruby世界中可為人所用的工具。

  • Roodi(Ruby面向對象設計Inferometer)——該工具會解析你的Ruby代碼,并根據你配置好的清單,對設計方面的問題提出警告,比如:類代碼行數檢查、for循環檢查、參數個數檢查、圈複雜度檢查,還有其他10個檢查選項。
  • Reek——類似Roodi。
  • Saikuro ——設計目的是要檢查圈複雜度 。
  • Flog ——由Ryan Davis開發,它會給你的代碼計算一個得分:得分越高,你的代碼越差。計算得分時考慮了ABC度量名額(指派、分支和調用)。
  • Simian——類似的分析器,可以用來識别代碼重複(要想商用,就得付出99美元)。
  • Flay ——這是Ryan Davis開發的另一個免費工具,能夠找到代碼中在結構上的相似性。

要想使用所有這些工具,你很快就會覺得痛苦,這時metric_fu就成了救星。它包括了上述所有工具(Simian除外),而且能夠友善地生成關于你的應用的報告。很容易就能把它和Rails內建在一起,而且花些時間就能生成圖表。