Я хочу начать измерение того, что Майкл Фезерс назвал турбулентностью кода, а именно отток по сравнению со сложностью.
Для этого мне нужно измерить сложность файла C++ или Java. Поэтому я нашел пару инструментов для измерения цикломатической сложности (CC). Каждый из них хорошо измеряет CC на уровне функции или метода. Однако мне нужна метрика на уровне файлов, а там они не так хороши. Один инструмент просто возвращает среднее значение сложности всех методов в файле, а другой инструмент обрабатывает весь файл как один гигантский метод, т. е. подсчитывает все точки принятия решений во всем файле.
Поэтому я провел небольшое исследование и обнаружил, что Маккейб определяет CC только в терминах модулей, а они определяют модуль как функцию, а не как файл (см. google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCoQFjAA&url=http%3A%2F%2Fwww.rivier.edu%2Ffaculty%2Fvriabov%2FCS699_McCabe_Overview.ppt&ei=o8NMUtikC4TCywG4p4DAAQ&usg=AFQjCNH_KmduonpB78Wbx4LJuc5gfPNcWQ&sig2=oLS16awUouU39N8eb1HY4A&bvm= bv.53537100,d.aWc" rel="noreferrer">данная презентация). И я думаю, что это имеет смысл.
Так что теперь я пытаюсь понять, как представить сложность файла. Я думаю, что я должен просто использовать максимальный метод CC для этого файла.
Любые мысли об этом подходе или любые другие предложения?
Спасибо!
Кен