2011-09-12 14 views
10

Tengo una configuración donde Visual Studio 2010 ejecuta análisis de cobertura de prueba y su salida es absorbida por NDepend durante una compilación de integración.¿Es posible excluir espacios de nombres enteros del análisis NDepend?

Algunos ensamblados contienen código generado que necesita ser ignorado por NDepend.
¿Hay alguna manera de hacer esto? Preferiblemente un espacio de nombres completo.

Respuesta

4

Code Query and Rule over LINQ (CQLinq) de hecho proporciona una facilidad a ignore el código generado.

Existe el conveniente dominio predefinido llamado JustMyCode del tipo ICodeBaseView.

El dominio JustMyCode representa una instalación de CQLinq para eliminar los elementos de código generados a partir de los resultados de la consulta CQLinq. Por ejemplo, la siguiente consulta sólo coincidirá grandes métodos que no son generados por una herramienta (como un diseñador de interfaces):

from m in JustMyCode.Methods where m.NbLinesOfCode > 30 select m 

El conjunto de elementos de código generados se define por las consultas CQLinq prefijo con la palabra clave CQLinq notmycode . Por ejemplo, la siguiente consulta coincide con los métodos definidos en los archivos de origen cuyo nombre termina con ".designer.cs":

notmycode from m in Methods where 
    m.SourceFileDeclAvailable && 
    m.SourceDecls.First().SourceFile.FileName.ToLower().EndsWith(".designer.cs") 
select m 

El CQLinq consulta corredor ejecuta todas notmycode consultas antes de las consultas que dependen de JustMyCode, de ahí que el dominio JustMyCode se defina de una vez por todas. Obviamente, el compilador CQLinq emite un error si una consulta notmycode se basa en el dominio JustMyCode.

Hay 4 consultas predeterminadas notmycode, fácilmente adaptables para satisfacer sus necesidades. Observa que no hay defecto notmycode consultas para espacios de nombres pero usted puede crear su propio uno (s):

+0

Patrick, ¿podría explicar esto y describir cómo se modificaría todas las consultas CQL utilizadas para generar las métricas de un proyecto? Puedo ver las consultas codificadas incrustadas en el archivo de proyecto, pero durante toda mi vida, ¡no puedo encontrar dónde las modificaría en la interfaz de usuario! – rbellamy

+0

Simplemente inicie VisualNDepend.exe, haga un análisis de su proyecto NDepend o cargue el resultado de análisis más reciente de su proyecto NDepend, luego mire el panel "CQL Query Explorer", aquí es donde puede explorar consultas y reglas y editarlas. –

+0

Me refiero a la posibilidad de cambiar todas las consultas a la vez. Caso de uso: copie todas las consultas utilizando las "Consultas CQL predeterminadas para copiar al portapapeles" en las opciones "CQL Query Edit". Luego, usando la herramienta de expresiones regulares de elección, modifique todas las consultas para ignorar un espacio de nombre particular, o para honrar el atributo NDependencia [Generado], o cualquier otro cambio global que desee realizar a los criterios de las declaraciones CQL. Ahora, ¿cómo puedo reemplazar fácilmente las consultas predeterminadas para el proyecto NDepend con estas consultas actualizadas/modificadas? – rbellamy

1

Encontré esto en el "Resumen rápido de métodos para refacto r"

// Here are some ways to avoid taking account of generated methods. 
!(NameIs "InitializeComponent()" OR 
    // NDepend.CQL.GeneratedAttribute is defined in 
    // the redistributable assembly $NDependInstallDir$\Lib\NDepend.CQL.dll 
    // You can define your own attribute to mark "Generated". 
    HasAttribute "OPTIONAL:NDepend.CQL.GeneratedAttribute") 

Pero eso no aborda la necesidad de modificar cada consulta CQL para asegurar que todos ignoran el código generado.

Cuestiones relacionadas