CQL dans NDepend et cppdepend pour voir des changements dans les mesures à travers des révisions
Question
CQL, il est facile de trouver des méthodes où CodeWasChanged mais je dois aussi comparer la mesures - Je veux trouver le code modifié et voir si elle a amélioré ou pas
.J'évaluation NDepend et cppdepend pour une base de code mixte. Je suis très impressionné par les deux, surtout à quel point cppdepend semble faire face à notre héritage et c ++ moderne.
Si je peux travailler comment faire cela, je peux alors faire tout ce que je besoin dans les CQL, mais ont par ailleurs de faire quelque chose comme combiner des rapports à l'extérieur. Donc, je vous remercie des conseils sur l'automatisation et la comparaison génération de rapports de CQL comme solution de repli. Il est évident que je serais plus heureux à l'aide CQL à l'intérieur VisualCppDepend ou VisualNDepend afin que je puisse voir les résultats des requêtes dans la vue métrique. L'exploration en direct des résultats est le grosse affaire avec ces outils, par rapport aux autres.
Les commentaires sur CodeWasChanged et d'autres clauses comme IsInOlderBuild disent forces FQC à être exécuté contre la construction ancienne qui vous suggère ne pouvez pas avoir un travail de recherche sur les révisions.
Le genre de requête que je voudrais quelque chose comme, imaginer la syntaxe:
SELECT METHODS WHERE CodeWasChanged and MethodCe > 10
généralisé au travail dans les versions
SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and BaseMethodCe < 10
ou peut-être
SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and Older(MethodCe < 10)
La solution
Andy, avec CQLinq (Code de requête et la règle sur LINQ) voir dans le code des tendances mesures est possible et nous espérons facile à réaliser. Voir par exemple la règle de code par défaut :
// <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,
}
Nous vous conseille de parcourir les règles liées au code par défaut dans le groupe par défaut: Code de la qualité de régression