2010-08-24 9 views
5

Actualmente estamos usando TFS 2008 para el control de código fuente y la integración continua.Cómo fallar la creación de TFS según la advertencia de FXCop

Utilizamos FXCop para verificar el rendimiento y las advertencias de seguridad. El arquitecto o desarrollador senior ejecuta FX Cop al final de un sprint o antes de una entrega.

Nos gustaría que esto se ejecute como parte de la IC y falle la construcción si hay una advertencia, ¿cuál es la mejor manera de hacerlo?

Respuesta

5

He estado trabajando en algo similar. Aunque esta pregunta es un poco vieja, espero que te ayude.

Comencé como la mayoría, realizando un evento de creación posterior que llama a FxCopCmd.

En mi caso, quería sólo un pequeño subconjunto del código, algunas de las reglas incorporadas, y también algunas reglas personalizadas (en un archivo .dll)

que utiliza un archivo de proyecto para este .fxcop - configurándolo todo tal como yo quería a través de la GUI y luego apuntando FxCopCmd al archivo del proyecto en el evento posterior a la construcción.

En su mayor parte, funcionó de maravilla, pero las infracciones de reglas surgieron solo como advertencias. La opción "Tratar advertencias como errores" no parece aplicarse a esto, así que tuve que encontrar una solución diferente.

Lo que finalmente funcionó mejor para mí se basó en una publicación de blog que encontré.

Modifiqué el archivo de proyecto para agregar dos eventos nuevos.

que tienen unos parámetros extra y cosas para FxCop, pero el quid de la cuestión es:

1: <PropertyGroup> 
    2: <FxCopResults>$(ProjectDir)obj\$(Configuration)\FxCopResults.xml</FxCopResults> 
    3: <PostBuildEvent>"%25ProgramFiles%25\Microsoft FxCop 10.0\FxCopCmd.exe" /file:"$(TargetPath)" /console /out:"$(ProjectDir)obj\$(ConfigurationName)\FxCopResults.xml"</PostBuildEvent> 
    4: </PropertyGroup> 
    5: <Target Name="BeforeBuild"> 
    6: <Delete Files="$(FxCopResults)" ContinueOnError="true" /> 
    7: </Target> 
    8: <Target Name="AfterBuild"> 
    9: <Error Text="One or more FxCop warnings occurred." Condition="Exists('$(FxCopResults)')" /> 
    10: </Target> 

El flujo general es la siguiente:

  1. (Proceso de Construcción se dispara)
  2. Antes de que se inicie una compilación, los resultados de FxCop anteriores (si existen) se eliminan.
  3. Pre-Construcción El evento se activa
  4. (BUILD COMIENZA)
  5. posterior a la generación de eventos se activa (que se ejecuta FxCopCmd)
  6. después de que finalice posterior a la generación, si hay resultados FxCop, un error es elevado.
  7. (proceso de construcción ES COMPLETA)

Ahora, si el análisis FxCop genera - por ejemplo - 4 violaciónes regla, su construcción generaría 4 advertencias y 1 error.

Espero que esto ayude.

6

Puede echar un vistazo a code analysis features within Visual Studio, que es compatible con el uso en un entorno de integración continua.

+0

¿No sería esto solo aplicable a las ediciones Premium o Ultimate de VS? –

+0

[... análisis de código ... de Visual Studio Premium o Visual Studio Ultimate] (http://msdn.microsoft.com/en-us/library/3z0aeatx%28v=vs.100%29.aspx) –

3

Suponiendo que está compilando a través de MSBuild y proyectos/soluciones regulares, puede configurar FXCop para que se ejecute como parte de cada compilación (tanto cliente como servidor). En el diálogo de propiedades de su proyecto, mire la pestaña "Análisis de código". Tenga en cuenta que esto se puede configurar por separado para las compilaciones de depuración y liberación, por lo que podría simplemente configurarlos para las compilaciones de Release si eso facilita la vida de sus desarrolladores.

Estas configuraciones de FXCop le permiten definir que las violaciones aparecen como errores en lugar de advertencias en la compilación. También es posible que desee habilitar la política TFS que requiere que el análisis de código se haya ejecutado con un conjunto definido de reglas antes de que el registro sea válido; eso le ahorrará algunas compilaciones rojas al forzar a los desarrolladores a corregir las infracciones antes de registrarse.

Recomiendo encender todas estas cosas, si está buscando este nivel de calidad (lo cual no es mala idea), es bueno hacer todo lo que pueda preregistrarse.

Cuestiones relacionadas