Uso gli strumenti StyleCop e FxCop per migliorare il mio codice, ma sono giunto a un punto in cui ci sono due regole, una in StyleCop e una in FxCop che si escludono a vicenda. Se correggo il mio codice in modo che corrisponda alla regola di StyleCop, la convalida di FxCop fallisce e viceversa.Le regole StyleCop e FxCop si escludono a vicenda
La prima regola è SA1200 di StyleCop che dice che tutte le direttive devono essere inserite all'interno dello spazio dei nomi.
Tutte le direttive di utilizzo devono essere inserite all'interno dello spazio dei nomi.
così ho fatto qualcosa di simile
namespace MyNamespace
{
using System;
...
}
Non era male per StyleCop, senza più avvisi. Ora eseguo la convalida FxCop e mi dice che CA1014 è stato violato:
Contrassegnare "MyApp.dll" con CLSCompliant (true) perché espone tipi visibili esternamente.
Per risolvere questo devo fare qualcosa di simile:
[ClsCompliant(true)]
namespace MyNamespace
{
...
}
ma ora non posso costruire il mio progetto, perché l'attributo ClsCompliant
non è riconosciuto (perché è da System
namespace che includo all'interno del MyNamespace
) . Quindi, se sposto la direttiva using System;
al di fuori della dichiarazione MyNamespace
. Questo renderà il mio codice compilato, ma ancora una volta infrangerà la regola da StyleCop.
C'è un modo per risolvere questo problema tranne che per disabilitare una delle regole in StyleCop o FxCop? E se questo non è possibile quale delle regole dovrei disabilitare? Quale è meno importante?
Penso che l'assembly dovrebbe essere contrassegnato CLSCompliant come indicato da maciejkow invece di contrassegnare lo spazio dei nomi conforme. –