CQL in NDepend e cppdepend per vedere cambiamenti nel metriche attraverso revisioni

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

  •  10-10-2019
  •  | 
  •  

Domanda

CQL rende facile trovare metodi in cui CodeWasChanged ma ho anche bisogno di confrontare il metriche - Chi vorrei trovare codice modificato e vedere se è migliorata o no

.

NDepend e cppdepend per una base di codice misto. Sono molto impressionato con entrambi, soprattutto quanto bene cppdepend sembra di far fronte con la nostra eredità e moderna c ++.

Se riesco a capire come fare questo, allora posso fare tutto quello che ho bisogno all'interno CQL ma per il resto hanno a che fare qualcosa di simile a combinare report esternamente. Così mi farebbe piacere consigli su automatizzando e confrontando la generazione di report da CQL come ripiego. Ovviamente sarei più felice utilizzando CQL all'interno VisualCppDepend o VisualNDepend così posso vedere i risultati delle query nella vista metrico. L'esplorazione diretta dei risultati è il grosso problema con questi strumenti, rispetto ad altri.

I commenti su CodeWasChanged e altre clausole come IsInOlderBuild dicono forze CQL a essere eseguito contro la vecchia costruzione che suggerisce non si può avere un lavoro di query attraverso revisioni.

Il tipo di domanda che vorrei è qualcosa di simile, la sintassi immaginare:

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10

generalizzato al lavoro tra versioni

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

o forse

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and Older(MethodCe < 10)
È stato utile?

Soluzione

Andy, con CQLinq (codice di query e Regna su LINQ) vedere trend nel codice metriche è possibile e, auspicabilmente, facile da raggiungere. Si veda ad esempio la regola di codice predefinito Evitare di fare metodi complessi ancora più complesso ( fonte 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,
}

Ci piacerebbe consigliamo di sfogliare le regole del codice di default relative al gruppo di default: Quality Code Regressione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top