¿StyleCop puede arreglar algo automáticamente?


He decidido comenzar a ejecutar StyleCop en un proyecto de tamaño mediano y estoy recibiendo más de 1000 advertencias.

¿Existe una forma rápida y sencilla de corregir la mayoría de estas advertencias? La mayoría de las advertencias podrían haber sido fácilmente automatizadas para resolver y me ahorrarían mucho tiempo.

Author: sth, 2009-05-07

8 answers

Esto no "corrige automáticamente nada", pero hay un complemento StyleCop para Resharper en Codeplex que resaltará automáticamente los errores de estilo en su código.

Actualizar: De acuerdo con el sitio web de StyleCop for ReSharper, ReSharper ahora proporciona un número creciente de Soluciones rápidas para errores de StyleCop. Seleccione una solución rápida de la lista y el problema se resolverá automáticamente.

 10
Author: Robert Cartaino,
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
2011-12-22 08:50:54

No, frustrantemente . Es por eso que Style Cop es contraproducente. El formato consistente se ve bien, pero hay poco beneficio de productividad (lo que realmente hace que el código sea difícil de leer es la longitud y indirección). El espaciado perfecto no vale la pena pasar horas ajustando las líneas a mano.

Por supuesto, si hubiera una herramienta automatizada para lograr un formato consistente, la conectaría después del check-in y dejaría que me ayudara. Pero Style Cop está hecho por sádicos. Presumiblemente su conversación fue así:

Bob: Usando la coincidencia de patrones, el software identifica el código feo
- ¡y lo arregla!
Bob: No, imprime un mensaje sobre cada transgresión
Charlie: - ¿y luego el usuario hace clic derecho para arreglarlos todos?
Bob: No, les regaña 'espacio inválido alrededor de la coma'
Charlie: - ¿y luego explica cómo arreglarlo?
Bob: No, eso está en un documento separado
- ¿en Google?
Bob: No.

Odio a Style Cop. Está por debajo de un producto viable mínimo.
 9
Author: Colonel Panic,
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
2013-11-11 22:23:10

StyleCopFixer corrige automáticamente las excepciones de StyleCop dentro del IDE de Visual Studio para C# Solo.

Los errores que se atienden actualmente son:

  1. SA1001
  2. SA1516
  3. SA1513
  4. SA1508
  5. SA1507
  6. SA1505
  7. SA1309
  8. SA1210
  9. SA1202
  10. SA1200
  11. SA1106
  12. SA1101
  13. SA1025
  14. SA1013
  15. SA1012
  16. SA1009
  17. SA1008
  18. SA1633
  19. SA1003
  20. SA1005
  21. SA1600 (solo para propiedades)
  22. SA1121
 4
Author: CSharp,
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
2013-02-01 12:21:36

Hay un proyecto en codeplex que hace algunas correcciones automáticas basadas en la advertencia de stylecop. Sin embargo, no está completo...

Véase: http://stylefix.codeplex.com /

 2
Author: Samuel,
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
2009-11-05 15:16:52

Code Maid hace algunas correcciones de Stylecop.

 1
Author: ,
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-12-23 02:44:12

Desafortunadamente, en este momento, no conozco ninguna herramienta automática para arreglar las cosas por completo.

Sin embargo, si configura las opciones de formato de Visual Studio (y las de Resharper, si las tiene) para que el formato del código coincida con las pautas de cop de estilo, las limpiezas se vuelven un poco más fáciles.

Una vez que haya hecho eso, puede ir a un archivo y hacer Editar->Avanzado->Formatear Documento (o el atajo de teclado, que varía con la configuración de su atajo - la mía es Ctrl+K, Ctrl+D). Esto arreglará bastantes de las advertencias cop de estilo, especialmente si tiene resharper + el complemento stylecop. No solucionará todos ellos, pero en muchos casos, ha tomado el número de advertencias en un archivo de cientos a decenas.

 0
Author: Reed Copsey,
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
2009-05-07 00:21:07

Si tiene Resharper, puede descargar un complemento de StyleCop para Resharper que cuenta con algunas correcciones automáticas. StyleCop para Resharper en codeplex.

 0
Author: marklam,
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
2009-05-08 08:13:24
  1. Apague las advertencias! No se recomienda, pero podría utilizar esto en el corto plazo hasta que obtenga una gran parte de los problemas resueltos.
  2. Escriba un programa para corregir algunas de las advertencias más simples, o use find/replace
  3. Use fragmentos de código para ayudar con cosas como la documentación del encabezado del archivo

Se mencionó en el blog de StyleCop con respecto a la implementación de la fijación automática de reglas

También echa un vistazo a la entrada en el blog con respecto a la integración en a un gran proyecto existente.

Nota: Parece que StyleCop solo devuelve alrededor de 1000 advertencias, por lo que seguirá obteniendo este número incluso después de arreglar un montón.

 -1
Author: benPearce,
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
2009-09-17 23:28:40