Использование результата cloc (count Lines of Codes)

Я пишу сценарий для своего исследования и хочу получить общее количество строк в исходном файле. Я подошел к Cloc и думаю, что собираюсь использовать его в своем сценарии.

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

Меня интересует только количество строк, чтобы использовать его в моих расчетах. Есть ли способ легко получить это число (возможно, выполнив некоторые параметры в командной строке (хотя я просмотрел доступные параметры и не нашел что-то полезное для моего случая))?

Я думал сделать регулярное выражение на результат, чтобы получить число; Тем не менее, я впервые использую Cloc, и может быть лучший / профессиональный способ сделать это.

Есть мысли?

С уважением, Арва

3 ответа

Я не уверен насчет CLOC. Но стоит использовать команду оболочки по умолчанию. Пожалуйста, посмотрите на этот вопрос.
Чтобы получить количество строк кода индивидуально

find . -name '*.*' | xargs wc -l

Получить общее количество строк кода в каталоге.

(find ./ -name '*.*' -print0 | xargs -0 cat) | wc -l 

Обратите внимание, что если вам нужно количество строк из файлов с определенным расширением, вы можете использовать *.ext,
*.rb, если это рубин.

Для чего-то очень быстрого и простого вы можете просто использовать:

Dir.glob('your_directory/**/*.rb').map do |file| 
  File.foreach(file).count
end.reduce(:+)

Это будет считать все строки .rb файлы в your_directory и это подкаталоги. Хотя я бы порекомендовал добавить некоторую обработку для пустых строк, а также строк комментариев. Для больше на Dir::glob

@BinaryMee и @engineersmnky спасибо за ваш ответ.

Я пробовал два разных решения, одно из которых с использованием readlines получило ответ от @gicappa

Подсчитать длину (количество строк) файла CSV?

другое решение с использованием Cloc. Я управлял командой

%x{perl #{ClocPath} #{path-to-file} > result.txt} 

и сохранил результат в result.txt

Cloc возвращает результат в графической форме (я не могу загрузить изображение), он также сообщает количество пустых строк, строк комментариев и строк кода. Как я уже сказал, меня интересуют строки кода. Итак, я открыл файл и использовал регулярное выражение, чтобы получить нужное мне число.

content = File.read("#{path}/result.txt")
line = content.scan(/(\s+\d+\s+\d+\s+\d+\s+\d+)/)
total = line[0][0].split(' ').last

содержимое здесь будет иметь содержимое файла, тогда строка получит эту строку из файла:

C# 1 3 3 17

C# - это язык файла, 1 - количество файлов, 3 - количество пустых строк, 3 - количество строк комментариев и 17 - количество строк кода. Я получил помощь формата из скрипта часов. Итого тогда будет номер 17.

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

Надеюсь, это поможет тем, кто в этом нуждается.

С уважением, Арва

Другие вопросы по тегам