CQL en NDepend y cppdepend para ver cambios en las cifras a través de las revisiones

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

  •  10-10-2019
  •  | 
  •  

Pregunta

CQL hace que sea fácil encontrar métodos en los CodeWasChanged pero también necesito para comparar la métricas - me quieren encontrar código modificado y ver si ha mejorado o no

.

NDepend y cppdepend de una base de código mixto. Estoy muy impresionado con ambos, sobre todo lo bien cppdepend parece hacer frente a nuestro legado y moderno C ++.

Si puedo encontrar la manera de hacer esta necesidad, entonces puedo hacer todo lo que dentro de CQL pero por lo demás tiene que hacer algo como combinar informes externamente. Así lo agradecería consejos sobre la automatización y la comparación de la generación de informes de CQL como punto de retorno. Obviamente sería más feliz usando CQL dentro VisualCppDepend o VisualNDepend para que pueda ver los resultados de las consultas en la vista métrico. La exploración en vivo de los resultados es la gran cosa con estas herramientas, en comparación con los demás.

Los comentarios sobre CodeWasChanged y otras cláusulas como IsInOlderBuild dicen fuerzas CQL a ser ejecutado en contra de la construcción más antigua lo que sugiere que no se puede tener una obra de consulta a través de revisiones.

El tipo de consulta que me gustaría es algo así como, la sintaxis imaginar:

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10

generalizada de trabajo a través de versiones

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

o tal vez

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and Older(MethodCe < 10)
¿Fue útil?

Solución

Andy, con CQLinq (código de consulta y gobernar sobre LINQ) ver tendencias en código métricas es posible y es de esperar fácil de lograr. Véase, por ejemplo, la regla de código predeterminado métodos de toma complejas aún más complejo ( fuente 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,
}

Nos recomendamos navegar por las reglas de código predeterminado relacionados en el grupo por defecto: Código de Calidad de regresión

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top