eLOC(effective Lines Of Code, 有效代码行)区别于一般LOC(Lines Of Code)的地方在于,eLOC并不考虑空白行,注释行,还有只包含 "{" 或
“}" 的代码行。之所以称之为有效代码行,是因为这种衡量方式能更好地描述programmer productivity和code understandability.
下面的代码利用正则表达式来判断空白行,注释行,和stand-alone的大括号行。输入的字符串是一行代码,若返回true则说明此行代码是eLOC,false则不是。
部分实现参考了http://mgc.name/article.asp?id=332
转载请注明本文出处: http://blog.csdn.net/flying881114/archive/2011/04/09/6312674.aspx
public boolean isELOC(String line)
{
//white line
if (line.matches("[//s]*"))
{
return false;
}
//block comments that ends within this line
else if (line.matches("^///*.*") && line.matches(".*//*/$"))
{
return false;
}
//block comments that starts in this line but not ends
else if (line.matches("^///*.*") && !line.matches(".*//*/$"))
{
comment = true;
return false;
}
//continue block comments
else if (comment)
{
//if block comments ends
if (line.matches(".*//*/$") && !line.matches("^///*.*")) {
comment = false;
}
return false;
}
//line comments
else if (line.matches("^//.*"))
{
return false;
}
//stand-alone braces
else if(line.equals("{") || line.equals("}"))
{
return false;
}
//else, line is effective
return true;
}