我使用StyleCop和FxCop工具來改進我的代碼,但是我來到了有兩條規則的地方,一條是StyleCop,一條是FxCop,互相排斥。如果我修復我的代碼以匹配StyleCop的規則,那麼FxCop驗證將失敗,反之亦然。StyleCop和FxCop規則互相排斥
第一條規則是StyleCop的SA1200,它表示所有使用指令必須放置在命名空間內。
所有使用指令都必須放在命名空間中。
所以我做了這樣的事情
namespace MyNamespace
{
using System;
...
}
這是確定的了StyleCop,沒有更多的警告。現在我運行FxCop驗證,它告訴我違反了CA1014:
標記'MyApp.dll'與CLSCompliant(true),因爲它暴露了外部可見類型。
要解決此我應該做這樣的事情:
[ClsCompliant(true)]
namespace MyNamespace
{
...
}
但現在因爲ClsCompliant
屬性不承認我不能建立我的項目(因爲它是從System
命名空間,我包括MyNamespace
內的) 。所以如果我在MyNamespace
聲明之外移動using System;
指令。這將使我的代碼編譯,但它會再次違反StyleCop的規則。
除了禁用StyleCop或FxCop中的規則之外,是否有任何方法可以解決此問題?如果這是不可能的,我應該禁用哪些規則?哪個不重要?
我認爲應該將程序集標記爲maciejkow指出的CLSCompliant,而不是標記符合的命名空間。 – 2010-03-14 15:37:18