CQL in NDepend und cppdepend zu sehen Änderungen in Metriken über Revisionen
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)
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