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

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

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

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

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

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

Я также хотел бы включить метрики SOLID дяди Боба и некоторые из показателей ОО Чидамбера и Кемерера. Сложнее всего найти инструменты для их создания для C ++. Единственный вариант, кажется, Krakatau Essential Metrics (у меня нет возражений против оплаты инструментов). Мое желание использовать метрики CK частично связано с книгами Object-Oriented Metrics: Measures of Complex Хендерсона-Селлерса и более ранней Object-Oriented Software Metrics .

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

Обратите внимание, что связанный вопрос касается измерения качества кода в большая кодовая база . Меня больше интересует измерение изменения . inode-> data = (данные структуры) DATA_INIT; где: struct CachedPath {Ино ино; }; typedef int8_t Depth; данные структуры {Размер смещения; Blkno ...

В GCC я могу сделать это:

(CachedPath){ino}
inode->data = (struct Data)DATA_INIT;

где:

struct CachedPath
{
    Ino ino;
};

typedef int8_t Depth;
struct Data
{
    Offset size;
    Blkno root;
    Depth depth;
};
#define DATA_INIT {0, -1, 0}

MSVC выдает следующую ошибку для такого типа приведений:

error C2143: syntax error : missing ';' before '{'

Как это сделать в MSVC? Также обратите внимание, что код был преобразован из C99, где я использовал для этого назначенные инициализаторы, а затем аналогичным образом преобразовал его. Приветствуется любая ясность в отношении того, как эти различные функции соотносятся между реализациями C ++ C99 и MSVC / GCC.

8
задан Matt Joiner 6 October 2010 в 07:10
поделиться