Публикация

Хакинг BPMonline:Небольшой анализ кода

Некоторые интересные факты про BPMonline, а именно, небольшой анализ кода. Анализу подверглись сборки из проекта Zyxel

1) Dependency Graph – показывается связи между assembly\namespace. Размер блока – количество строк кода C#.
Лидируют Terrasoft.Core и Terrasoft.UI.WebControls. А также имеется красная связь между Terrasoft.Messaging.Common и Terrasoft.WebApp
Dependency Graph

2) Dependencies – таблица зависимостей assembly\namespace друг от друга в числовом эквиваленте, аналог Dependency Graph с другого ракурса.
Dependencies
Число в ячейке указывает количество зависимостей (количество обращений, например, вызов метода) одной assembly\namespace от другой.
Зелёный цвет - assembly\namespace в строке используется в assembly\namespace в столбце
Синий цвет - assembly\namespace в столбце используется в assembly\namespace в строке
Если числа в ячейке нет, то assembly\namespace не связаны. Если в строке указан 0, то связей нет, но скорее всего, в коде есть неиспользуемый using
Считается, что чем больше число зависимостей, тем сильнее нарушается принцип разделения ответственности и independent code. Матрица должна стремиться в минимизации значений этих чисел и минимизации количества чисел.
Примечательно также наличие циклической зависимости Terrasoft.Messaging.Common и Terrasoft.WebApp (отражено также в Dependency Graph), что является нарушением
Конкретно
Terrasoft.Messaging.Common

public class MsgUtilService : BaseService, IMsgUtilService

Наследуется от класса BaseService из Terrasoft.WebApp.ServiceModel
А несколько классов в Terrasoft.WebApp.Services используют классы из Terrasoft.Messaging.Common. Отсюда получается циклическая зависимость(всего из-за одной связи =))

3) Metrics – визуально показывает “размеры” assembly\namespace в количестве кода и в количестве подэлементов. Масштаб 1 строка кода = 14 пикселей.
Metrics
Лидирует Terrasoft.UI.WebControls, хотя в Dependency Graph он несколько меньше Terrasoft.Core. Так как кроме строк кода в этом графе участвует количество подэлементов, то видимо
Terrasoft.UI.WebControls больше, потому что в неё больше namespace, классов, интерфейсов и других элементов.

4) Summary – показывает общие данные. Всего в ядре около 85000 кода, 14 сборок, 36 неймспейсов, 1858 классов и других типов. Мы используем 28 сторонних сборок (бОльшая часть из стандартного .Net)
Summary
Анализ проводился в NDepend

Нравится

Поделиться

0 комментариев
Показать все комментарии