Frage

CQL macht es einfach, Methoden zu finden, wo CodeWasChanged aber ich muss auch die vergleichen Metriken - ich mag modifizierten Code finden und sehen, ob es verbessert hat oder nicht

.

Ich Auswertung NDepend und cppdepend für einen gemischten Codebasis. Ich bin sehr mit beiden beeindruckt, vor allem, wie gut cppdepend scheint mit unserem Erbe und modernen c zu bewältigen ++.

Wenn ich herausfinden, wie diese tun, dann kann ich alles, was ich tun muss innerhalb CQL aber ansonsten haben, etwas zu tun, wie Berichte extern kombinieren. Also würde ich Tipps schätzen auf die Automatisierung und den Vergleich Berichterstellung von CQL als Ausweich. Offensichtlich wäre ich glücklicher mit CQL innerhalb VisualCppDepend oder VisualNDepend so dass ich die Ergebnisse von Abfragen im metrischen Ansicht sehen. Die Live-Erforschung der Ergebnisse ist die große Sache mit diesen Werkzeugen, im Vergleich zu anderen.

Die Kommentare zu CodeWasChanged und anderen Klauseln wie IsInOlderBuild sagen Kräfte CQL zu ausgeführt werden gegen die ältere Build , die Sie eine Abfrage Arbeit über Revisionen haben nicht vermuten lässt.

Die Art der Abfrage Ich mag würde, ist so etwas wie die Vorstellung Syntax:

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10

verallgemeinert Arbeit über Versionen

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

oder vielleicht

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and Older(MethodCe < 10)
War es hilfreich?

Lösung

Andy, with CQLinq (Code Query and Rule over LINQ) see trending in code metrics is possible and hopefully easy to achieve. See for example the default code rule Avoid making complex methods even more complex (Source 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,
}

We'd advise to browse related default code rules in the default group: Code Quality Regression

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top