Кстати, считая таким макаром строки в своём проекте, заметил, что добавляю функциональность а объём кода почти не растёт. :) Видимо, сначала писал слишком раздуто, а теперь умудряюсь новые фичи вжимать в прежний размер.
@Valeriy Fedotov Ну, я не сторонник минимализма, зачем изобретать скрипт, если уже есть готовый? Потом, реально это не так просто, ибо есть много ньюансов (правда, для Common Lisp их меньше). Я в свое время тренировался и написал считалки кода для нескольких языков на C++, Python и Perl - потренировался и хватит, теперь предпочитаю использовать готовое решение.
> добавляю функциональность > а объём кода почти не растёт Ну это обычная ситуация, когда объём кода начинает даже стремительно уменьшатся. Это часто встречается.
А как ты на лиспе закрытый код пишешь? Я темноват в этом вопросе...
ОтветитьУдалитьТак же, как и на открытый, просто его не публикую :) Он работает на наших серверах и за пределы компании не выходит.
ОтветитьУдалитьА я вот так считаю:
ОтветитьУдалитьfind . -iname '*.lisp' | xargs grep -h -v '^\s*;.*$' | grep -v '^\s*$' | wc
@Valeriy Fedotov
ОтветитьУдалитьА пустые строки? А комментарии? Нормальная считалка должна считать только реальный код...
Она его и считает. :)
ОтветитьУдалитьgrep -h -v '^\s*;.*$' -- выкидываем комментарии. -h нужно, чтобы имя файла на строчке не печаталось.
grep -v '^\s*$' -- выкидываем строки из пробельных символов.
У этой считалки есть один недостаток: она всё суммирует, не видно было статистику по каждому файлу.
Улучшенная версия:
ОтветитьУдалить#!/bin/bash
FILES=`find . -iname '*.lisp'`
for i in $FILES
do
echo -ne `grep -v '^\s*;.*$' "$i" | grep -v '^\s*$' | wc -l`
echo -e "\t$i"
done
echo -n `find . -iname '*.lisp' | xargs grep -h -v '^\s*;.*$' | grep -v '^\s*$' | wc -l`
echo -e '\ttotal'
Кстати, считая таким макаром строки в своём проекте, заметил, что добавляю функциональность а объём кода почти не растёт. :) Видимо, сначала писал слишком раздуто, а теперь умудряюсь новые фичи вжимать в прежний размер.
@Valeriy Fedotov
ОтветитьУдалитьНу, я не сторонник минимализма, зачем изобретать скрипт, если уже есть готовый? Потом, реально это не так просто, ибо есть много ньюансов (правда, для Common Lisp их меньше). Я в свое время тренировался и написал считалки кода для нескольких языков на C++, Python и Perl - потренировался и хватит, теперь предпочитаю использовать готовое решение.
> добавляю функциональность
> а объём кода почти не растёт
Ну это обычная ситуация, когда объём кода начинает даже стремительно уменьшатся. Это часто встречается.