Как рассчитать цикломатическую сложность функции Clojure?

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


person Maurits Rijk    schedule 19.03.2011    source источник
comment
Не думаю, что CC имеет много смысла в Clojure, но, в любом случае, вы хотите подсчитывать не точки принятия решений как таковые, а возможные пути выполнения.   -  person Apalala    schedule 20.03.2011
comment
Макросы не должны быть проблемой; вы можете использовать macroexpand, чтобы полностью избавиться от них.   -  person Joost Diepenmaat    schedule 20.03.2011


Ответы (1)


Макросы - это абстракция, и они не должны участвовать в вычислении CC, как и вызов функции.

Тем не менее, я не думаю, что CC особенно интересен для Clojure. Меня бы больше интересовало то, что измеряет чрезмерное использование изменчивости.

person Stuart Dabbs Halloway    schedule 06.04.2011