Я написал небольшой скрипт для перебора файлов в папках для подсчета строк кода.
Сердцем скрипта является эта функция для подсчета строк пробелов, комментариев и кода. (Обратите внимание, что на данный момент он заточен под C# и не поддерживает многострочные комментарии).
Просто мне это не очень нравится - у кого-нибудь есть более чистая версия?
// from list of strings return tuple with count of (whitespace, comments, code)
let loc (arr:List<string>) =
let innerloc (whitesp, comment, code) (l:string) =
let s = l.Trim([|' ';'\t'|]) // remove leading whitespace
match s with
| "" -> (whitesp + 1, comment, code) //blank lines
| "{" -> (whitesp + 1, comment, code) //opening blocks
| "}" -> (whitesp + 1, comment, code) //closing blocks
| _ when s.StartsWith("#") -> (whitesp + 1, comment, code) //regions
| _ when s.StartsWith("//") -> (whitesp, comment + 1, code) //comments
| _ -> (whitesp, comment, code + 1)
List.fold_left innerloc (0,0,0) arr