可執行行我寫了掃描,發現代碼的可執行行(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