如何计算程序中的代码行数?

时间:2013-04-21 12:16:21

标签: java

我想计算一个程序中的代码行数,并且我已经编写了代码来计算;的数量。它工作正常,但在某些情况下(如;if语句不存在)。在这种情况下,我将一些关键字存储在一个字符串数组中,我想使用while搜索该关键字。如果它工作正常,那么我将它增加1,但它不起作用。我已经尝试了很多,但它根本没有工作,它显示了异常。作为readLine(),您可以使用自己的代码。

Classdetect1.java

Demo.java

2 个答案:

答案 0 :(得分:0)

在Java中,所有语句都以;{ }内的块结束。一些例子:

System.out.println("One statement");

while (str.equals("One block of statements + one statement"))
{
    System.out.println("One statement");
}

此外,;根本不需要在同一行:

System.out.println(
    "One statement"
);

所以你可以简单地计算所有;(一个语句的结尾)和所有{(一个语句的结尾,一个块的开头),它将相当准确。

if (true)
{                               // One statement ending with '{'
    doSomething();              // One statement ending with ';'
    while (false)
    {                           // One statement ending with '{'
        doSomethingElse();      // One statement ending with ';'
    }
}
// 4 statements in total.

当然,有(一如既往)一些例外:

if (true) doSomething();  // One statement, or two?

do { doSomething(); } while (true); // Three statements, or two?

答案 1 :(得分:0)

试试这个:

BufferedReader br = new BufferedReader(new FileReader(new File("C:/lines.txt")));
String s = "";
String text = "";

//save all the file in a string
while ((s = br.readLine()) != null) {
    text += s + "\n";
}

//remove empty lines with a regex
String withoutEmptyLines = text.replaceAll("(?m)^[ \t]*\r?\n", "");

//lines of code = text with newline characters length - text without newline characters length
int linesOfCode = withoutEmptyLines.length() - withoutEmptyLines.replaceAll("\n", "").length();
System.out.println("Lines: "+linesOfCode);

我的C:/lines.txt文件:

01. a
02. 
03. b
04. c
05. c
06. d
07. as
08. d
09. asd
10. asd
11. a
12. 
13. 
14. 
15. asd
16. 
17. asd
18. 
19. 
20. 
21. asdasd
22. 
23. 
24. 

使用此文件,输出为:

Lines: 13

希望这有帮助