可执行行我写了扫描,发现代码的可执行行(ELOC),仅用于Java和C++代码的代码(BLOC)和评论(CLOC)的空行的Java程序。以下是我的代码:爪哇 - 算法找到的代码
if(extension.contains("java") || extension.contains("c++"))
{
Scanner input = new Scanner(fileObject);
while(input.hasNext())
{
String s = input.nextLine();
if(s.length()==0)
{
bloc++;
}
else if(s.contains("/*") || s.startsWith("/*"))
{
cloc++;
while(!s.contains("*/"))
{
cloc++;
s = input.nextLine();
}
}
else if(s.contains("//"))
{
cloc++;
}
else
{
eloc++;
}
}//while
System.out.println("ELOC: "+(eloc));
System.out.println("Blank Lines: "+bloc);
System.out.println("Comment Lines: "+cloc);
}
我跑不同的Java和C++源代码,但它并不总是给出正确的答案。我能做些什么来改善它?有什么我可以使用的在线Java代码?
对于这个问题,我只计算代码的可执行线。如果一行如下所示:
int x=0;//some comment
那么上面的行应该被计为一个可执行行。以下是我的更新代码:
String extension=getExtension(fileObject.getName());
if(extension.contains("java") || extension.contains("c++"))
{
Scanner input = new Scanner(fileObject);
String s;
while(input.hasNext())
{
s = input.nextLine().trim();
eloc++;
if(s.equals(""))
{
bloc++;
}
if(s.startsWith("//"))
{
cloc++;
}
if(s.contains("/*") && !s.contains("*\\"))
{
cloc++;
while(!s.contains("*/"))
{
cloc++;
eloc++;
s = input.nextLine();
}
}
else if(s.contains("/*") && s.contains("*\\"))
{
cloc++;
}
}
System.out.println("Total number of lines: "+eloc);
System.out.println("ELOC: "+(eloc-(cloc+bloc)));
System.out.println("Blank Lines: "+bloc);
System.out.println("Comment Lines: "+cloc);
}
任何意见/建议将不胜感激..谢谢!
http://stackoverflow.com/questions/2184999/sloc-for-java-projects –
你说它“并不总是给出正确的答案。”当它是错的时候,它怎么错了?你能给个例子吗? –
我将我的结果与locmetrics.com进行比较,未得到相同的结果。 – sap