Pregunta Las reglas de StyleCop y FxCop se excluyen entre sí


Estoy usando las 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 mutuamente. Si arreglo mi código para que coincida con la regla de StyleCop, la validación de FxCop falla y viceversa.

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;

    ...
}

Estuvo bien para StyleCop, no más advertencias. Ahora ejecuto la validación de FxCop y me dice que se ha violado CA1014:

Marque 'MyApp.dll' con CLSCompliant (verdadero) porque expone los tipos visibles externamente.

Para resolver esto, debería 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 dentro de la MyNamespace) Así que si me muevo using System;  directiva fuera de MyNamespace declaración. Esto hará que mi código se compile, pero nuevamente romperá la regla de StyleCop.

¿Hay alguna forma de resolver este problema, excepto para desactivar 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?


5
2017-09-03 07:35


origen


Respuestas:


Use el nombre completo del atributo:

[System.CLSCompliant(true)]
namespace MyNamespace
{
    ...
}

Por cierto: si desea marcar todo su conjunto como CLSCompliant, ponga

[assembly: System.CLSCompliant(true)]

en el archivo Properties / AssemblyInfo.cs


15
2017-09-03 07:41



Mi sugerencia es desactivar "Todas las directivas de uso deben colocarse dentro del espacio de nombres". regla en StyleCop. Es poco práctico adherirse a él, especialmente porque la mayoría de los generadores de código (incluso los propios) no siguen esta práctica.


3
2017-09-12 05:01