关于‘Metrics’

如同统计代码行数

发表于2008年12月17日

在Javaeye有一些讨论,其中比较简单的方法是用shell脚本:

find . -type f -iname "*.java" -exec cat {} \; | wc -l   

如果不需要太精确的信息,这一结果已经足够说明工作量了。

ohloh.net这个网站开源了一个很棒的代码统计工具ohcount

安装:

sudo apt-get instal ohcount

试验一下:

liwen@cube:~/$ svn checkout http://rur-ple.googlecode.com/svn/trunk/ rur-ple-read-only
liwen@cube:~/rur-ple-read-only$ ohcount
Examining 720 file(s)
 
                          Ohloh Line Count Summary                          
 
Language          Files       Code    Comment  Comment %      Blank      Total
----------------  -----  ---------  ---------  ---------  ---------  ---------
html                285      26993        420       1.5%       6553      33966
python               29       4027       1015      20.1%        642       5684
css                   7        180         39      17.8%         34        253
make                  1         55         31      36.0%         19        105
xml                   1         21          0       0.0%          3         24
shell                 2          4          0       0.0%          0          4
----------------  -----  ---------  ---------  ---------  ---------  ---------
Total               325      31280       1505       4.6%       7251      40036

圈复杂度(Cyclomatic Complexity, or Conditional Complexity)

发表于2008年12月3日

圈复杂度是度量方法中相对简单的一种。
CodeProject上的这篇文章可以解释如何分析代码的圈复杂度。
.NET平台的FxCop,NDepend有圈复杂度相关的计算功能。Java平台还有很多类似的工具, 其中CheckStyle是比较流行的一个。PMD与CheckStyle类似也支持根据可配规则进行分析。通常在违反规则的时候给出相应的Warning。

PS:关于Checkstyle和PMD的比较。

developerWorks关于持续重构的文章(英文版中文版),文中讲解了CheckStyle和PMD对重构所发挥的作用。