Программа C для подсчета строк кода - PullRequest
1 голос
/ 11 марта 2011

Я пишу простой счетчик LOC в C, чтобы подсчитать, сколько строк кода в моих исходных файлах 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 в целом, это то, о чем меня спрашивали в нескольких интервью, и я думаю, что стоит знать, вобщий смысл, сколько строк кода мои собственные проекты.Спасибо!

Ответы [ 5 ]

7 голосов
/ 11 марта 2011

Обычно люди делают:

  • Считать комментарии как LOC
  • Считать пустые строки как LOC

Однако люди также предполагают / практикуют:

  • Включенные комментарии необходимы / полезны (не даром)
  • Пустые строки не являются чрезмерными и существуют для обеспечения ясности

Счетчики строк кода, какрезультат, как правило, учитывают все разрывы строк при их вычислении.

6 голосов
/ 11 марта 2011

Не пишите программу. Используйте wc --lines

2 голосов
/ 21 мая 2013

Я понимаю, что это был пример программирования, но если вы хотите использовать командную строку Windows, я нашел this .

Что приводит к:

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

Подсчитывает все строки в файлах .h и .c.

1 голос
/ 11 марта 2011

Полагаю, я пришел из другого стиля разработки, чем Kvista, но мы подсчитали строки кода и комментарии отдельно.Мы ожидали, что комментарии будут составлять определенный процент от общего количества строк (комментарии + код).Мы вообще не считали пустые строки.

Если вам нужна небольшая программная задача, вы можете измерить цикломатическую сложность (или условную сложность) ваших программ на C.

0 голосов
/ 11 марта 2011

Составьте график того, сколько времени вам понадобится, чтобы написать и отладить приложение.Обратите внимание на дату окончания.

Потратьте некоторое время на поиск в Интернете таких инструментов, как:
http://www.campwoodsw.com/sourcemonitor.html

Возьмите оставшееся время в своем графике и отправьтесь в отпуск.: -)

Иначе задача становится чудовищной.Такие как разбор комментариев.Определение строки (и сколько операторов или токенов в строке).Подсчитываются ли пустые строки?

Экономьте свое драгоценное время для других проектов.Используйте существующие инструменты.

...