2

我正在用 C 编写一个简单的 LOC 计数器来计算我的 C 源文件中有多少行代码。它旨在从命令行运行,将目标文件重定向为输入,并查看打印到标准输出的总行数。例如:

  counter.exe < counter.c
  15

到目前为止,我使用的唯一规则是:

  1. 只计算超过 3 个字符的行(没有空行或只有右大括号和分号的行等)。

  2. 不要将空格算作字符。

这是我的程序:

#include <stdio.h>

int main() {

    int input;
    int linecount = 0;
    int charcount = 0;

    while ((input = getchar()) != EOF) {

        if (input == ' ') {
        }
        else if (input == '\n') {
            if (charcount > 3) {
               linecount++;
            }
            charcount = 0;
        }
        else {
            charcount++;
        }
    }

    printf("%d\n", linecount);

    return 0;
}

我的问题是,您能否对规则进行一些改进以使其成为更有效的措施?人们是否经常将注释视为有效的代码行?空格或空行怎么样?

我不想开始就 LOC 计数的有效性展开辩论,这是我在几次采访中被问到的问题,我认为总的来说,我认为我自己的项目有多少行代码值得了解。谢谢!

4

5 回答 5

7

一般来说,人们会:

  • 将评论计数为 LOC
  • 将空行计数为 LOC

然而,人们也假设/实践:

  • 包含的评论是必要的/有用的(不是无偿的)
  • 空行并不过分,并且存在以提供清晰性

因此,代码行计数器通常会在其计算中考虑所有换行符。

于 2011-03-11T16:00:12.897 回答
6

不要写程序。利用wc --lines

于 2011-03-11T15:58:59.307 回答
2

我意识到这是一个编程示例,但如果你想使用 Windows 命令行,我发现了这个.

这导致:

findstr /R /N "^" *.h *.c | find /C ":"

计算 .h 和 .c 文件中的所有行。

于 2013-05-21T10:57:59.263 回答
1

我想我来自与 kvista 不同的开发风格,但我们分别计算了代码行数和注释。我们预计评论将占总行数(评论+代码)的一定百分比。我们根本没有计算空行。

如果您正在寻找一些编程挑战,您可以测量 C 程序的圈复杂度(或条件复杂度)。

于 2011-03-11T17:22:01.293 回答
0

制定一个计划,说明编写和调试应用程序需要多长时间。注意结束日期。

花一些时间在网上搜索工具,例如: http:
//www.campwoodsw.com/sourcemonitor.html

把剩下的时间安排在你的日程安排中去度假。:-)

否则任务会变得很可怕。比如解析评论。定义一行(以及一行上有多少语句或标记)。空行算不算?

为其他项目节省宝贵的时间。使用现有工具。

于 2011-03-11T20:36:00.610 回答