CQL в NDEPEND и CPPDEPEND, чтобы увидеть изменения в показаниях в разных ревизиях

StackOverflow https://stackoverflow.com/questions/4455451

  •  10-10-2019
  •  | 
  •  

Вопрос

CQL позволяет легко найти методы, где Кодвасханг Но мне также нужно сравнить метрики - я хочу найти модифицированный код и посмотреть, улучшился ли он или нет.

Я оцениваю ndepend а также cppdepend Для смешанной кодовой базы. Я очень впечатлен тем, и тем, как хорошо CppDepend, кажется, справляется с нашим наследием и современным C ++.

Если я могу понять, как это сделать, то я могу сделать все, что мне нужно, в CQL, но в противном случае приходится делать что -то вроде объединения отчетов извне. Поэтому я бы признателен по советам по автоматизации и сравнению генерации отчетов от CQL как запасной. Очевидно, я был бы счастливее, используя CQL внутри VisualCppDependend или VisualNdePend, поэтому я вижу результаты запросов в метрическом представлении. Живое исследование результатов - это Большое дело с этими инструментами, по сравнению с другими.

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

Тот запрос, который я хотел бы, - это что -то вроде, воображая синтаксис:

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10

Обобщение для работы в версиях

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and BaseMethodCe < 10

или, может быть

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and Older(MethodCe < 10)
Это было полезно?

Решение

Энди, с CQlinq (кодовый запрос и правило над LINQ) См. Тенденции в показателях кода возможны и, надеюсь, легко достичь. Смотрите, например, правило кода по умолчанию Избегайте сложных методов еще более сложными (источник CC):

// <Name>Avoid making complex methods even more complex (Source CC)</Name>
// To visualize changes in code, right-click a matched method and select:
//  - Compare older and newer versions of source file
//  - Compare older and newer versions disassembled with Reflector

warnif count > 0 
from m in JustMyCode.Methods where
 !m.IsAbstract &&
  m.IsPresentInBothBuilds() &&
  m.CodeWasChanged()

let oldCC = m.OlderVersion().CyclomaticComplexity
where oldCC > 6 && m.CyclomaticComplexity > oldCC 

select new { m,
    oldCC ,
    newCC = m.CyclomaticComplexity ,
    oldLoc = m.OlderVersion().NbLinesOfCode,
    newLoc = m.NbLinesOfCode,
}

Мы бы сообщили об рассмотрении соответствующих правил кода по умолчанию в группе по умолчанию: Регрессия качества кода

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top