Специфические программные показатели для программ Clojure

Мы рассматриваем возможность записи статического анализатора для сбора метрик программного обеспечения для кода Clojure. Конечно, он будет обрабатывать очевидные вещи, такие как количество файлов, функции, параметры для каждой функции и т.д. Интересно, существуют ли какие-либо показатели, специфичные для кода Clojure. Любые идеи?

Ответы

Ответ 1

В среднем - я думаю, что программные показатели - сомнительная идея - они обычно отвлекают вас от действительно важного вопроса, который "насколько мы доставляем заказчику".

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

Итак, вот несколько, которые могут быть Clojure -специфичны.

  • Определяется число верхних уровней (возможно, выраженное как отношение к общему количеству символов?)
  • Сопряжение Java:% символов, связанных с Java interop (new, ClassName.,.someMethod и т.д.) - в идеале поддерживать связь, ограниченную определенными модулями, ответственными за взаимодействие Java, то есть должно быть крайне низким% везде, кроме библиотек, которые управляют взаимодействием.
  • Средний максимальный уровень вложенности функции defns (думаю, 5ish good, 10+ bad??)
  • Макро плотность:% форм, требующих расширения макросов
  • % функций с docstrings
  • % символов или функциональных параметров, определенных с помощью типов подсказок
  • Средний размер анонимных функций (они, вероятно, должны быть небольшими!)
  • % функций в clojure.core используется (дает некоторое представление о "диапазоне словаря" и сложности кода)
  • (Спасибо nickik!) количество созданных ref-типов (динамические vars, atom, ref и агент) - важно, если вы хотите внимательно следить за своим изменчивым состоянием!

p.s. если вы получите эту работу, было бы очень интересно увидеть изменения в результатах в различных проектах с открытым исходным кодом clojure!