Microsoft Code Contracts y CI build server


Estamos migrando a.NET 4 y estamos muy interesados en implementar nuevas capacidades de Diseño por Contrato.

Como sabemos Code Contract el motor requiere la instalación de Code Contract addin texto alt
y VS Ultimate o Premium (para comprobación estática).

Aquí están mis preguntas:

  1. Puedo usar la reescritura de contratos de código ¿sin instalar VS en el servidor de compilación de CI (TeamCity)?
  2. ¿hay alguna tareas de msbuild para ejecutar el Contrato ¿comprobando?
  3. ¿Utiliza la validación del Contrato de código con compilaciones de CI?
Author: Sergey Mirvoda, 2010-08-25

1 answers

Puedo usar la reescritura de contratos de código sin instalar VS en la compilación CI servidor (TeamCity)?

Sí. Instale CodeContracts en el servidor de compilación. (Si se niega a instalar en una máquina sin Visual Studio, simplemente copie los archivos enumerados a continuación, y sus dependencias, en el servidor de compilación. Una vez instalado, encontrará las herramientas de CodeContract instaladas en %programfiles%\Microsoft\Contracts\Bin. En ese directorio, hay 4 ejecutables que te interesarán:

  1. Ccrewrite.exe - The binary rewriter (en inglés). Esto debe ser ejecutado después de la compilación. Convierte sus contratos en comprobaciones de tiempo de ejecución o lo que especifique que desea convertirlos.

  2. Ccrefgen.exe - Esto puede generar ensamblajes de referencia de contrato junto con sus ensamblajes. Esto es útil si está enviando archivos DLL para ser consumidos por otras partes.

  3. Cccheck.exe - El comprobador estático. En el servidor de compilación, ejecutaría esta herramienta sobre sus ensamblados contiene contratos, y escupirá advertencias y mensajes a medida que se encuentra con problemas potenciales.

  4. Ccdocgen.exe: genera documentación XML a partir de los contratos del código. Es posible que desee usar esto si está enviando archivos DLL con contratos para el consumo de otras partes, o si solo necesita documentos internos en su código.

¿Hay alguna tarea de msbuild para ejecutar la comprobación de contratos?

Sí. Hay 2 tareas de MSBuild envío con CodeContracts: en el mismo directorio de instalación de CodeContracts, echa un vistazo a la carpeta MSBuild\[framework version]. En ese directorio, hay 2 archivos que deberían ayudarte: Microsoft.Codecontractos.objetivos y Microsoft.CodeContractAnálisis.objetivo.

De acuerdo con la documentación de CodeContracts,

Una extensión de script msbuild Microsoft .Contrato. objetivos contiene el extra crear acciones para el contrato de tiempo de ejecución instrumentación y verificación estática Steps. Como resultado de este enfoque, es posible utilizar el mismo funcionalidad al construir desde el línea de comandos con el comando msbuild. Uso de msbuild en un proyecto o solución que utiliza contratos habilitados a través del VS la interfaz de usuario realizará lo mismo acciones como la compilación correspondiente bajo VS.

Como puede ver, es posible y compatible integrar las herramientas en compilaciones de CI a través de los objetivos de MSBuild.

¿Utiliza el Código de Contrato ¿validación con compilaciones de CI?

Asumiendo que te refieres a la comprobación estática con advertencias/mensajes, he hecho esto personalmente, pero no lo he hecho en un gran proyecto.

Espero que esto ayude!

Hat tip para el libro de Jon Skeet C# In Depth para la explicación de las herramientas de la línea de comandos.

 46
Author: Judah Himango,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-18 13:44:10