Estoy usando herramientas StyleCop y FxCop para mejorar mi código, pero llegué a un lugar donde hay dos reglas, una en StyleCop y otra en FxCop que se excluyen entre sí. Si arreglo mi código para que coincida con la regla de StyleCop, la validación de FxCop falla y viceversa.Las reglas de StyleCop y FxCop se excluyen entre sí
La primera regla es SA1200 de StyleCop que dice que todas las directivas que se usan deben colocarse dentro del espacio de nombres.
Todas las directivas que se usan deben colocarse dentro del espacio de nombres.
así que he hecho algo como esto
namespace MyNamespace
{
using System;
...
}
estaba bien para StyleCop, sin más advertencias. Ahora corro validación FxCop y me dice que es violada CA1014:
Marcos MyApp.dll 'con CLSCompliant (verdadero) ya que expone los tipos visibles externamente.
Para resolver esto lo debe hacer algo como esto:
[ClsCompliant(true)]
namespace MyNamespace
{
...
}
pero ahora no puedo construir mi proyecto porque ClsCompliant
atributo no es reconocido (porque es de System
espacio de nombres que incluyo en el interior de la MyNamespace
) . Entonces, si muevo la directiva using System;
fuera de la declaración MyNamespace
. Esto hará que mi código se compile, pero nuevamente romperá la regla de StyleCop.
¿Hay alguna manera de resolver este problema, excepto para deshabilitar una de las reglas en StyleCop o FxCop? Y si eso no es posible, ¿cuál de las reglas debería deshabilitar? ¿Cuál es menos importante?
Creo que el conjunto debe marcarse CLSComplementario como señaló maciejkow en lugar de marcar el espacio de nombres. –