Stylecop vs FXcop

Respuestas:

171

Stylecop es una herramienta de análisis de estilo que funciona a nivel de código fuente. Existe principalmente para proporcionar un estilo común único que los proyectos administrados pueden utilizar para mantener la coherencia dentro del mundo más amplio del software administrado. Toma decisiones con respecto al estilo principalmente para evitar guerras santas (después de todo, el estilo es casi siempre algo inherentemente subjetivo). No creo que haya conocido a alguien a quien le gusten todas las reglas de StyleCop, pero está bien . Significa que StyleCop es en general un buen compromiso entre el amplio conjunto de pautas de estilo que existen. (Si las reglas de stylecop fueran altamente personalizables, más allá de simplemente habilitarlas / deshabilitarlas, frustraría todo el propósito de la herramienta).

FxCop, por otro lado, es una herramienta de análisis estático que funciona a nivel del ensamblaje administrado. Se le pueden dar direcciones a través de atributos porque puede ver atributos en elementos de código, por ejemplo. Detecta problemas que se pueden ver en el nivel "binario" (por así decirlo) en contraposición al nivel sintáctico.

Para responder a su pregunta, StyleCop no reemplaza a FxCop y FxCop no reemplaza a stylecop. Son dos herramientas diferentes con dos propósitos diferentes que pueden proporcionar un beneficio real para su código.

(También conocido como, corro con ambos. :))


Un par de ejemplos de cosas que uno podría detectar frente a cosas que el otro podría detectar:

Las violaciones de StyleCop pueden incluir advertencias relacionadas con: espacios en blanco, formato, documentación de método público a través de comentarios xml, orden de definición de método dentro de una clase.

Las violaciones de FxCop pueden incluir advertencias relacionadas con: Globalización, acoplamiento estrecho, complejidad ciclomática, posibles desreferencias nulas.

Greg D
fuente
1
Sí, las respuestas anteriores que comparan los dos son incorrectas en todos los aspectos. StyleCop y FxCop realizan dos tareas muy diferentes, y vale la pena investigar el valor que cada uno proporciona en su código base y por qué debería ejecutarlos.
Jedidja
3
Acepte que no todas las reglas de StyleCop son buenas, pero como usted dice, las que no desea se pueden desactivar. Estamos usando StyleCop; después de desactivar las reglas simples y estúpidas, nos está proporcionando un buen valor, a bajo costo ... Recomendado. (tenga en cuenta que lo
odiamos
@ stiank81: Sí, creo que todo el mundo odia StyleCop al principio. Sin embargo, al poco tiempo, los beneficios realmente se establecen y demuestra ser una herramienta muy útil para mantener la coherencia en la fuente. :)
Greg D
1
gran respuesta a lo que estaba buscando :)
GibboK
16

stylecop funciona en su código fuente C #. fxcop mira su código compilado desde cualquier lenguaje .net.

Sin reembolsos Sin devoluciones
fuente
Entonces, si usa Stylecop, ¿FXCop puede agregar algún valor?
JL.
Realmente, es mejor que uses FxCop.
Andrew Rollings
Al menos por ahora, hasta que sea más configurable. :)
Andrew Rollings
1
Es poco probable que stylecop sea significativamente más configurable. Una característica mucho más importante de Stylecop es la corrección automática de las violaciones de estilo.
Greg D
utilizamos Resharper para hacer que el código se ajuste automáticamente a las reglas de stylecop. Eso solo hace que valga la pena el precio de compra. Y obtienes todos los demás beneficios además de ese.
No hay reembolsos No hay devoluciones
11

Una alternativa o un buen complemento a FxCop / StyleCop sería utilizar la herramienta comercial NDepend . Con esta herramienta se puede escribir una regla de código sobre consultas LINQ (es decir, CQLinq) . Descargo de responsabilidad: soy uno de los desarrolladores de la herramienta

Más de 200 reglas del código son propuestos por defecto, estos incluyen el diseño , la arquitectura , la calidad del código , la evolución de código , convenciones de nombres , código muerto , el uso de .NET Fx ...

CQLinq se dedica a escribir reglas de código que se pueden verificar en vivo en Visual Studio , o que se pueden verificar durante el proceso de compilación y reportar en un informe HTML / javascript .

La fuerza de CQLinq sobre FxCop o StyleCop es que es sencillo escribir una regla de código y obtener resultados de inmediato . Se proponen instalaciones para buscar elementos de código coincidentes. Concretamente esto se ve así:

Regla de código CQLinq

Patrick del equipo NDepend
fuente
6

FXCop realiza análisis de código estático de sus ensamblados de código administrado. Piense en ello como encontrar problemas que causarán problemas en tiempo de ejecución o que afectarán la forma en que el desarrollador cree que se ejecutará el código (código inalcanzable).

StyleCop analiza la estructura de su código desde el punto de vista del texto. Piense en esto como problemas que afectarán su experiencia de desarrollo y diseño (formato, convenciones de nomenclatura, documentación)

Ambas son herramientas MUY valiosas y debe usar ambas, pero se enfocan en diferentes problemas.

AllenSanborn
fuente