Скрипт для расчета показателей Agile PPP-кода дяди Боба для C #

Я читаю Agile PPP для C #, и в какой-то момент дядя Боб представляет интересные показатели по качеству дизайна:

Эти:

  • H (relational cohesion) = (R + 1) / N, where:
    • R = number of internal relations inside a component;
    • N = количество классов внутри этого компонента.
  • I (Instability) = Ce / (Ca + Ce), where:
    • Ca = afferent couplings;
    • Ce = эфферентные муфты;
  • A (Abstractedness) = Na / Nc, where:
    • Nc = number of classes;
    • Na = количество абстрактных классов;
  • D' (normalized Distance from main sequence) = abs(A + I - 1) / sqrt(2), where:
    • "main sequence" is, inside an A vs I cartesian plot, the diagonal line formed by the positions where A + I = 1;

Самая интригующая часть (прямо из книги):

Описанные нами показатели успешно применяются в ряде проектов с 1994 года.

Несколько автоматических инструментов рассчитают их за вас, и их несложно вычислить вручную.

Также несложно написать простой сценарий оболочки, Python или Ruby, чтобы просматривать исходные файлы и вычислять их.

В качестве примера сценария оболочки вы можете загрузить depend.sh из раздела бесплатных программ objectmentor.

Мне не удалось найти этот depend.sh скрипт, и я не уверен, согласен ли я с тем, что эти показатели легко вычислить вручную или с помощью какого-либо скрипта (я бы хотел использовать для этого Python, если это так).

Итак, вопросы:

  • Есть ли бесплатный инструмент или скрипт для расчета показателей дяди Боба для кода C #? В Visual Studio есть некоторые метрики, но они разные, и я действительно не знаю и не забочусь, как их интерпретировать;
  • Как мне подойти к задаче по созданию собственного скрипта Есть известный факт «регулярное выражение не может анализировать html», и мне интересно, поддается ли структура кода C # своего рода «простому скрипту» Дядя Боб предлагает, чтобы можно было рассчитать эти показатели. Стоит ли мне даже попробовать?

person heltonbiker    schedule 26.08.2016    source источник
comment
Допустимые вопросы, но первый - это запрос на внешний ресурс, который не по теме. Учитывая, что у вас есть достойные спецификации, вы можете посмотреть, достаточно ли SoftwareRecs может помочь. Ваша последняя точка зрения слишком широка (или основана на мнении).   -  person rene    schedule 26.08.2016
comment
@rene, не могли бы вы помочь мне улучшить мои вопросы, чтобы они оставались по теме?   -  person heltonbiker    schedule 26.08.2016
comment
@rene Я отредактировал свою вторую пулю.   -  person heltonbiker    schedule 26.08.2016
comment
Запрос ресурса покрыт, я думаю. К широкому охвату можно обратиться, если вы начнете со сценария, например, чтобы определить, какие классы есть. Тогда задайте вопрос об этом. Затем вы продолжаете, задавая новый вопрос для каждой части метрики, где пробуйте некоторые биты, а затем передаете их сообществу.   -  person rene    schedule 26.08.2016
comment
Если вы используете Visual Studio, модель автоматизации имела классы и коллекции о классах. Это могло быть началом. Или проверьте пространство имен отражения и спросите, может ли это помочь   -  person rene    schedule 26.08.2016
comment
Многое связано: stackoverflow.com/questions/ 1031135 /   -  person heltonbiker    schedule 29.08.2016


Ответы (1)


Инструмент NDepend вычисляет эти показатели и позволяет легко записывать свои собственные показатели с помощью C # Linq Queries.

Он интегрирован в Visual Studio и также генерирует отчет с диаграммой показателей дяди Боба.

14-дневная пробная полнофункциональная версия доступна для загрузки.

Диаграмма показателей NDepend дяди Боба

person Patrick from NDepend team    schedule 29.08.2016