¿Existe una herramienta de autofijación StyleCop/FxCop?
(9)
Algunas de las herramientas que utilizo para solucionar los problemas de corrección de stylecop son,
- CodeMaid (Gratis una fuente abierta)
- GhostDoc (ya sugerido en respuestas anteriores en el mismo post. Necesitas comprar esto, viene con una edición de prueba limitada de 14 días)
- StyleCopFixer (ya sugerido en respuestas anteriores en la misma publicación. Gratis, viene como una extensión de VS2010)
Espero eso ayude :)
¿Existe una herramienta que pueda corregir automáticamente las reglas de StyleCop y FxCop, en lugar de arreglar manualmente miles de advertencias y errores?
Debe haber uno, es una oportunidad de negocio tan buena!
Ejecutar Stylecop por primera vez, generalmente la mayoría de los errores que se producen en mi experiencia son los relacionados con el formato de código.
Usé dos herramientas para reorganizar el código para que coincidiera con las reglas de Stylecop:
El primero se convirtió en mi preferencia; es una herramienta de línea de comandos, agregué esto a herramientas personalizadas en Visual Studio. El segundo es un complemento para Visual Studio, por lo que fue bastante conveniente trabajar con archivos individuales.
Como ya se mencionó, hay algunas herramientas que intentan corregir algunos errores de Stylecop, pero en mi opinión funcionaron bastante mal, por lo tanto, dejé de usarlos y no puedo recomendar ninguno.
No creo que haya herramientas para FxCop, y no estoy convencido de que debería haber ...
FxCop no viene con sus propias características de fijación todavía. El Proyecto Roslyn (destinado a ser lanzado en algún lugar después de VS11) proporcionará un nuevo motor para las reglas de análisis estático y se incluirá con la función de corrección.
Hay una serie de herramientas que proporcionan sus propias reglas de fijación. Algunos se han mencionado antes:
- JetBrains Resharper
- DevExpress CodeRush & Refactor Pro
- Telerik JustCode
- Asistencia visual x
- Typemock Testlint Pro (específicamente para pruebas unitarias)
Estos a veces marcan más u otras cosas que FxCop o StyleCop. Y aquí radica el peligro de las reglas en conflicto. Lo que ya está ocurriendo aquí y allá si eres una herramienta como FxCop.
Y hay algunos proyectos de código abierto que intentan proporcionar correcciones para las advertencias más comunes de FxCop y StyleCop. No los he probado con StyleCop, pero la mayoría de las herramientas de fijación automática de FxCop no funcionan bien, ya que hay pocas reglas de FxCop que son realmente fáciles de arreglar.
Ninguna de estas herramientas podrá ayudarlo a arreglar reglas personalizadas (o reglas que ha descargado de otras fuentes, como MSOCAF o proyectos de código abierto (por ejemplo, FxCopContrib ) u otros proyectos de Microsoft (como las reglas incluidas en el Código Abierto). Web Service Software Factory CTP ).
Y, especialmente con las reglas de FxCop, veo que mientras que la cosa que se marca, que parece muy simple de resolver, en realidad apunta a un problema mucho más grande.
- Tomemos, por ejemplo, la regla de rendimiento que le solicita que haga que todos sus métodos sean estáticos. En realidad, esto te indica que tienes clases con baja cohesión. Marcar todo lo estático puede hacer que su código sea un poco más rápido, pero no mejorará su diseño y, sin duda, hará que las pruebas y el mantenimiento de su código sean más difíciles a largo plazo.
- O la regla que menciona que debe proporcionar un IFormatProvider a cualquier método que tenga una sobrecarga que lo admita. Veo demasiados desarrolladores que simplemente pusieron CurrentCulture allí y terminaron con eso. Sigue recibiendo errores de importación / exportación cuando transfieren archivos entre dos sistemas configurados de manera diferente. Como globalización, localización e internacionalización son temas difíciles de abordar.
Esto se aplica mucho menos a StyleCop, ya que el estilo de codificación a menudo no está relacionado con la implementación o diseño subyacente real. Y parece que StylecopFixer es un gran complemento si no está utilizando la integración de Resharper que ahora viene con StyleCop de forma predeterminada.
Hay una (relativamente) nueva extensión de Visual Studio en el bloque (StyleCopAid) - inténtelo:
https://visualstudiogallery.msdn.microsoft.com/505d2931-143f-4055-b7dd-a5d7c95bb085
Entre otras cosas, corrige las reglas de orden, suprime algunos mensajes y tiene una opción para deshacer.
Actualización de julio de 2018 : "La herramienta es compatible con las versiones de Visual Studio 2010, 2012 y 2013".
Quizá StyleCop (para algunas violaciones) - hay toneladas de formateadores de código.
FxCop no (que yo sepa).
ReSharper puede ayudar con la limpieza y refactorización de su código, pero no solucionará de forma mágica todas las violaciones de FxCop (aunque señalará y ayudará a solucionar algunos problemas).
Los problemas de FxCop son similares a los patrones de diseño; en general, requieren reflexión para determinar la forma correcta de aplicar la solución. En algunos casos, la infracción puede no aplicarse y puede suprimirse. También puede ajustar las reglas de FxCop a sus necesidades particulares; Las reglas estándar estaban destinadas a marcos y bibliotecas distribuidas, y no son universales. Sin embargo, la mayoría de ellas son muy, muy buenas sugerencias.
StyleFix solucionará muchas de las violaciones encontradas por StyleCop.
GhostDoc hace que sea fácil agregar comentarios a tus métodos.
Lateley He estado usando Telerik JustCode . Realmente ayuda a PREVENIR los problemas de estilo.
StylecopFixer es la herramienta que corrige automáticamente las excepciones de StyleCop en Visual Studio IDE.
StyleCopAutoFix es una aplicación de consola que solucionará automáticamente las violaciones de StyleCop relacionadas con líneas vacías faltantes (o innecesarias). Es gratis un código abierto.
Si bien el alcance de las violaciones que corrige es bastante limitado, las resuelve de manera segura (es poco probable que rompa su código o cambie el comportamiento). Estas violaciones son también las más comunes.
Si usa Visual Studio, también recomiendo ejecutar este script: https://gist.github.com/JayBazuzi/9e0de544cdfe0c7a4358 . Automáticamente formatea automáticamente todos los códigos de todos los archivos en una solución.
En los proyectos que ejecuté esta aplicación (y el script VS anterior) corrige hasta el 60% de todas las violaciones.
Descargo de responsabilidad: Soy el autor de esto.
No, frustrantemente . Es por eso que Style Cop es contraproducente. El formato consistente se ve bien, pero tiene poco beneficio de productividad (lo que realmente hace que el código sea difícil de leer es la longitud y la dirección indirection ). El espaciado perfecto no vale la pena pasar horas ajustando las líneas a mano.
Si hubiera una herramienta automatizada para lograr un formateo consistente, podría conectarlo después del check-in. Pero Style Cop está hecho por sádicos que obligan al usuario a hacer el tedioso formato a mano. Probablemente su conversación fue así:
Bob: Usando la coincidencia de patrones, el software identifica el código feo
Charlie: —¡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. El mensaje los regaña ''espaciado no válido alrededor de la coma''.
Charlie: ¿Y luego explica cómo el usuario puede arreglarlo?
Bob: No, esa información está en un documento separado.
Charlie: ¿En Google?
Bob: No.
Odio el estilo Cop. Está por debajo de un producto mínimo viable.