Как я могу визуализировать изменения в большом качестве базы кода?
Одна из вещей, о которых я часто думал, - как мы можем использовать какие-то метрики для измерения изменений, идем ли мы в обратном направлении или нет? Это в контексте большой, унаследованной базы кода, которую мы улучшаем. Большая часть кода - C++ с наследием C. Некоторые новые функции и графический интерфейс написаны на C#.
Для начала мы могли бы по крайней мере проверить, изменяется ли простой уровень сложности со временем в коде. Сложность заключается в том, чтобы иметь представление - мы можем создать трехмерную поверхность, где двумерная карта представляет код, и у нас есть тепловая карта цвета, представляющая сложность с выпуклой и трехмерной поверхностью, чтобы показать изменения.
После того, как вы сможете сгенерировать некоторые матрицы чисел, вы обнаружите множество математических систем, которые позаботятся о подобных вещах.
Со временем я хотел бы иметь более сложные числа, но те же методы визуализации, используемые для представления изменений.
Мне нравится идея Crap4j сосредоточиться на соотношении сложности и количества модульных тестов, охватывающих этот код.
Я также хотел бы включить метрики SOLID дяди Боба и некоторые метрики Chidamber и Kemerer OO. Трудно найти инструменты для их генерации на C++. Похоже, что единственным вариантом является Кракатау Essential Metrics (я не возражаю против оплаты инструментов). Мое желание использовать метрики CK частично исходит из книг " Объектно-ориентированные метрики: меры сложности " Хендерсона-Селлерса и более ранних объектно-ориентированных метрик программного обеспечения.
Если мы начнем использовать ряд этих метрик, мы можем получить около десяти чисел, которые меняются во времени. Я довольно плохо осведомлен о статистике, но, кажется, было бы интересно отследить кучу таких метрик, а затем обратить внимание на то, какие из них имеют тенденцию меняться.
Обратите внимание, что связанный с этим вопрос касается измерения качества кода в большой кодовой базе. Я больше заинтересован в измерении изменений.
2 ответа
Я хотел бы рассмотреть возможность использования диаграммы Kiviat для представления нескольких измерений метрик программного обеспечения, которые меняются с течением времени. Эти диаграммы представляют несколько точек данных в вогнутом корпусе вокруг центральной точки. Визуальный осмотр покажет, где конкретная метрика идет вверх или вниз, и можно вычислить общее отношение площади, смещенной к значению метрики, с использованием некоторого вычисления аэрологической области.
Вы также можете взглянуть на документацию NDepend о показателях кода. Отказ от ответственности: я являюсь одним из разработчиков инструмента NDepend.
С помощью функции Code Rule и Query over LINQ (CQLinq) можно запрашивать эволюцию / тенденцию изменения метрики кода для двух разных моментальных снимков во времени базы кода. Например, предлагается правило по умолчанию: не делайте сложные методы еще более сложными, как показано на снимке экрана ниже:
Предложено несколько правил определения метрик:
- Избегайте уменьшения покрытия кода с помощью [введите описание ссылки здесь] 5 тестов типов
- Типы, которые раньше были покрыты на 100%, но не более
- а также, поскольку вы упомянули Crap4J, метрика CRAP может быть написана с помощью CQLinq, и запрос можно легко настроить, чтобы увидеть тенденцию в метрике CRAP.
Что касается визуализации метрики кода, NDepend позволяет визуализировать значения метрики кода через интерактивную древовидную карту:
Есть свежий подход к этой теме. Например, https://github.com/databricks/koalas/pull/840#issuecomment-536949320.
См. https://softagram.com/docs/visualizing-code-changes/ для получения дополнительной информации или выполните поиск изображений в поисковой системе, используя два ключевых слова: softagram koalas
Отказ от ответственности: я работаю в Softagram.