2009-03-01 10 views
5

Недавно мне было предложено проанализировать проект и определить 20 классов, которые являются наиболее подверженными риску на основе метрик дизайна.Анализ проекта с использованием Sourcemonitor

Я начал анализировать проект, и я решил выбрать классы с максимальной максимальной сложностью. Должен ли я смотреть на что-нибудь еще, кроме максимальной сложности. то есть количество вызовов, операторов, классов, методов/классов, максимальную глубину и т. д. Я возглавляю в правильном направлении? если не то, что еще я должен смотреть?

Заранее спасибо.

ответ

5

В первую очередь я бы рассмотрел максимальную сложность, максимальную глубину и количество утверждений. Эти три показателя обнаруживают действительно плохо написанные методы (длинные, глубоко вложенные и имеющие множество решений и зависимостей).

Сортировка SourceMonitor сообщает о каждой из этих трех показателей и записывает верхние 20-30 классов, а затем выбирает те, которые были ранжированы во всех трех списках.

+0

Возможно, это зависит от языка проекта, но в C++ я вижу, что * Показатель метода отображения ... * обеспечивает наилучшие результаты для данной контрольной точки. BTW: Вы предложили бы взвесить эти три критерия ('wc': weight of Complexity,' wd': weight of Depth, 'ws': weight of Statementments), а затем найти' max (wc * C + wd * D + ws * S) 'или это не прагматично? – Wolf

+1

@Wolf Я думаю, что вы чрезмерны. Этот инструмент просто дает вам показатели по нескольким различным критериям. Просто выберите показатели, которые лучше всего описывают состояние вашего кода, а затем выполняйте действия с наихудшими исходными файлами в соответствии с этими метриками. Я не думаю, что существует точная формула для этой проблемы. – zendar

1

Это хорошее место для начала, но я бы сказал, что риск также связан с количеством кода, содержащего модульные тесты.

Например, функция с циклом. сложность 20, которая имеет 100% -ный охват тестового кода, более безопасна, чем функция с циклом. сложность 10 без единичных тестов.

+0

Функция покрытия на 100% гораздо более вероятна, чем «без ошибок»; но его более высокая сложность означает, что, вероятно, потребуется больше работы (усилий) для его изменения или расширения. – Schollii

+0

Правда, но Source Monitor не поддерживает измерение тестового покрытия. Возможно, это не лучший инструмент для оптимального решения задачи. * Определите 20 классов, которые наиболее подвержены риску на основе показателей дизайна *. – Wolf