Как я могу визуализировать изменения в большом качестве базы кода?

Одна из вещей, о которых я часто думал, - как мы можем использовать какие-то метрики для измерения изменений, идем ли мы в обратном направлении или нет? Это в контексте большой, унаследованной базы кода, которую мы улучшаем. Большая часть кода - C++ с наследием C. Некоторые новые функции и графический интерфейс написаны на C#.

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

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

Со временем я хотел бы иметь более сложные числа, но те же методы визуализации, используемые для представления изменений.

Мне нравится идея Crap4j сосредоточиться на соотношении сложности и количества модульных тестов, охватывающих этот код.

Я также хотел бы включить метрики SOLID дяди Боба и некоторые метрики Chidamber и Kemerer OO. Трудно найти инструменты для их генерации на C++. Похоже, что единственным вариантом является Кракатау Essential Metrics (я не возражаю против оплаты инструментов). Мое желание использовать метрики CK частично исходит из книг " Объектно-ориентированные метрики: меры сложности " Хендерсона-Селлерса и более ранних объектно-ориентированных метрик программного обеспечения.

Если мы начнем использовать ряд этих метрик, мы можем получить около десяти чисел, которые меняются во времени. Я довольно плохо осведомлен о статистике, но, кажется, было бы интересно отследить кучу таких метрик, а затем обратить внимание на то, какие из них имеют тенденцию меняться.

Обратите внимание, что связанный с этим вопрос касается измерения качества кода в большой кодовой базе. Я больше заинтересован в измерении изменений.

2 ответа

Решение

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

Вы также можете взглянуть на документацию NDepend о показателях кода. Отказ от ответственности: я являюсь одним из разработчиков инструмента NDepend.

С помощью функции Code Rule и Query over LINQ (CQLinq) можно запрашивать эволюцию / тенденцию изменения метрики кода для двух разных моментальных снимков во времени базы кода. Например, предлагается правило по умолчанию: не делайте сложные методы еще более сложными, как показано на снимке экрана ниже:

Избегайте делать сложные методы еще более сложными

Предложено несколько правил определения метрик:

Что касается визуализации метрики кода, NDepend позволяет визуализировать значения метрики кода через интерактивную древовидную карту:

Метрика кода визуализируется через Treemap

Есть свежий подход к этой теме. Например, https://github.com/databricks/koalas/pull/840#issuecomment-536949320.

См. https://softagram.com/docs/visualizing-code-changes/ для получения дополнительной информации или выполните поиск изображений в поисковой системе, используя два ключевых слова: softagram koalas

Отказ от ответственности: я работаю в Softagram.

Другие вопросы по тегам